最流行的Javascript的测试框架

举报
Jet Ding 发表于 2020/09/28 15:35:14 2020/09/28
【摘要】 大多数测试自动化框架都是基于一套通用的敏捷测试实践。一般来说,开发团队会收集映射到一个功能的用户故事。用户故事是一句描述性的话,它说明了该功能的角色/作用、动作和原因。如果你想输入用户凭证访问系统,每个故事必须有明确定义的验收标准,以确保实现的功能符合利益相关者/目标用户的期望。

 1         引言

大多数测试自动化框架都是基于一套通用的敏捷测试实践。一般来说,开发团队会收集映射到一个功能的用户故事。用户故事是一句描述性的话,它说明了该功能的角色/作用、动作和原因。如果你想输入用户凭证访问系统,每个故事必须有明确定义的验收标准,以确保实现的功能符合利益相关者/目标用户的期望。

今天有很多有竞争性的测试运行器在使用,但大多数前端开发者使用Mocha, Jest, Jasmine, Karma, Puppeteer。好消息是,它们很相似,你选择哪一个并不重要。

下面我们提供了一个Mocha测试样本。同样的事情也可以用其他的测试框架来写。

假设你正在测试一个计算器的web应用程序。首先创建一个describe块,它将包含一个或多个测试。

describe('calculator'function () {})

 

接下来,使用it函数添加一个测试。测试中包含了你要测试的内容的描述:

describe("calculator"function () {

  it("应正确显示初始数据", () => {});

});

 

 

现在,使用expect函数添加一个断言。这个断言检查计算器的显示屏是否显示了预期的信息。只有当计算器显示为零时,测试才会通过。

it("应正确显示初始数据", () => {

  expect(calculator.initialState.display).to.equal("0");

});

 

 

要运行你的测试代码,在输入类似这样的命令行npm test。当框架检测到你的源代码的变化时,会执行你的测试。每次框架运行测试时,都会指示测试是否通过或失败。

 2         MochaJS

2.1.1    官网

http://mochajs.org/

2.1.2    许可

MIT

2.1.3    特点

2011年以来,MochaJS一直是最流行的JavaScript测试框架之一。它在Node.js上运行,为前端和后端异步测试提供了兼容性。在良好的文档支持下,Mocha在过去的几年里已经被证明是一个成熟的框架。

托管在Github上,Mocha的灵活性得到了认可,因此,它已经被证明是JavaScript开发人员最信赖的测试程序库之一。

Mocha的主要优点:

 

1.       为前端和后端测试提供兼容性

2.       支持NodeJS调试器,使错误跟踪变得更容易。

3.       准确的报告

4.       提供对所有浏览器的支持,包括无头Chrome库。

5.       非常方便开发人员编写测试用例的框架。

3         JEST

3.1.1    官网

https://jestjs.io/

3.1.2    许可

MIT

3.1.3    特点

JEST可以说是Facebook使用和维护的最流行的JavaScript测试框架。JEST测试框架提供了 "零配置"的测试体验。

JEST是基于React的应用程序的首选框架。它提供了一个毋庸置疑的且非常方便的用户界面。这个框架捆绑了一些有用的功能,比如快照测试和内置的代码覆盖工具。

JEST的主要优点:

1.       兼容NodeJSReactAngularVueJS和其他基于Babel的项目。

2.       支持文件的标准语法。

3.       速度快,性能高。

4.       使用实时快照可以管理较大对象的测试。

4         Jasmine 

4.1.1    官网 

https://jasmine.github.io/

4.1.2    许可

MIT

4.1.3    特点

Jasmine2010年推出,是一个开源的JavaScript测试框架。它能够测试所有类型的JavaScript应用程序。这个框架支持行为驱动开发(BDD)。使用Jasmine,人们可以在网站上执行类似于用户行为的测试案例。JasmineJS SpecRspec的影响很大。

Jasmine对前端测试非常有帮助。它既包括可见性测试,也包括UI在各种不同分辨率设备上的响应性测试。人们还可以通过自定义延迟和等待时间来模拟实际的用户行为。

Jasmine的主要优点:

1.       提供小巧、简洁、直接的语法,便于测试。

2.       不需要任何文档对象模型(DOM)。

3.       提供对前端和后端测试的支持。

4.       易于编码,因为所使用的语法与自然语言非常相似。

5.       强大的文件和社区支持

5         Karma

5.1.1    官网

https://karma-runner.github.io/latest/index.html 

5.1.2    许可

MIT

5.1.3    特点

Karma是另一个流行的开源生产测试环境。它允许QA在不同的环境下对应用程序进行测试。Karma允许应用程序脚本在真实的浏览器和手机、平板电脑等设备上执行。Karma旨在为开发者提供一个测试环境,在这个环境中,他们不需要设置大量的配置。相反,他们只需运行测试并获得即时反馈。

使用Karma的主要好处:

1.       支持与JenkinsTravisSemaphore等顶级CI/CD工具的集成。

2.       可以在实际设备和浏览器上进行测试

3.       提供对PhantomJS等无头环境的支持。

4.       支持直接从终端或IDE进行远程测试

5.       是框架不可知的,这意味着可以用MochaJasmine等流行框架来描述测试。人们也可以为特定的框架写一个简单的适配器。

6         Puppeteer (Node Library)

6.1.1    官网

https://github.com/puppeteer/puppeteer

https://developers.google.com/web/tools/puppeteer/get-started

6.1.2    许可

Apache 2.0

6.1.3    特点

注意:Puppeteer 是一个程序库,而不是类似于上面其他的库的框架。之所以将其包含在内,是因为它在Chrome浏览器的JavaScript测试方面提供了许多优势。

Puppeteer是一个提供高级APINode程序库库。这个API用于通过DevTools协议控制ChromeChromiumPuppeteer的主要局限性之一是它只适用于ChromeChromiumPuppeteer可以用于特定浏览器的应用,如页面结构测试、抓取网站截图等。

还可以为单页应用(SPA)抓取和捕获预渲染的内容。

Puppeteer的其他优点包括:

 

1.       轻松实现UI测试、表单提交和键盘输入的自动化。

2.       轻松生成网页的屏幕截图和PDF文件。

3.       支持测试chrome扩展

4.       人们可以很容易地使用时间线跟踪来诊断网站的性能问题。虽然Puppeteer是最近才出现在测试领域的,但已经被大量的开发者所采用。Puppeteer的未来看起来很有希望。

 

7         参考

https://testguild.com/top-8-essential-javascript-automation-frameworks/

https://www.browserstack.com/guide/top-javascript-testing-frameworks

https://www.lambdatest.com/blog/top-javascript-automation-testing-framework/

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。