前端单元测试、集成测试、UI测试
一、 单元测试
(1)断言assert
业界流行的断言库: Chai Assertion Library
既有行为驱动开发(Behavior-Driven Development)(简写BDD), 又有驱动测试开发(TDD)
(2)mocha单元测试框架
mocha是一款功能丰富的javascript单元测试框架,它既可以运行在nodejs环境中,也可以运行在浏览器环境中。
javascript是一门单线程语言,最显著的特点就是有很多异步执行。同步代码的测试比较简单,直接判断函数的返回值是否符合预期就行了,而异步的函数,就需要测试框架支持回调、promise或其他的方式来判断测试结果的正确性了。mocha可以良好的支持javascript异步的单元测试。
mocha会串行地执行我们编写的测试用例,可以在将未捕获异常指向对应用例的同时,保证输出灵活准确的测试结果报告。
(3)Istanbul(单元测试覆盖率)
计算测试覆盖率,它使用模块加载器挂钩计算语句、行、函数和分支覆盖,以便在运行测试时透明地添加覆盖。支持所有JS覆盖用例,包括单元测试、服务器端功能测试和浏览器测试。
二、持续集成(build passing)
(1)Travis CI
使用教程: https://www.cnblogs.com/morang/p/7228488.html
提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。
持续集成指的是只要代码有变更,就自动运行构建和测试,反馈运行结果。确保符合预期以后,再将新代码"集成"到主干。
持续集成的好处在于,每次代码的小幅变更,就能看到运行结果,从而不断累积小的变更,而不是在开发周期结束时,一下子合并一大块代码。
(2)集成测试覆盖率工具 codecov
Codecov是一个开源的测试结果展示平台,将测试结果可视化。Github上许多开源项目都使用了Codecov来展示单测结果。
Codecov跟Travis CI一样都支持Github账号登录,同样会同步Github中的项目。在nodejs环境下使用Codecov需要安装对于的npm包,运行下面这个命令进行安装:
三、 UI测试
(1)Jest
类似的库很多, 但是这个视最好用的
零配置测试平台
Jest 被 Facebook 用来测试包括 React 应用在内的所有 JavaScript 代码。Jest 的一个理念是提供一套完整集成的 “零配置” 测试体验。我们发现,当向开发人员提供了现成可用的工具后,他们会愿意写更多的测试,这也使得他们的代码库更加稳定和健康。
(2)Enzyme
是一个用于React的JavaScript测试实用程序,它使断言、操作和遍历React组件的输出更加容易。
通过模仿jQuery的DOM操作和遍历API,Enzyme的API意味着直观和灵活。
(3)selenium-webdriver
Selenium是一个浏览器自动化库。 Selenium最常用于测试Web应用程序,可用于任何需要自动与浏览器交互的任务。
Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的竞争对手)。也就是说 Selenium 2 是 Selenium 和 WebDriver 两个项目的合并,即 Selenium 2 兼容 Selenium,它既支持 Selenium API 也支持 WebDriver API。 WebDriver是一个用来进行复杂重复的web自动化测试的工具。意在提供一种比Selenium1.0更简单易学,有利于维护的API。它没有和任何测试框架进行绑定,所以他可以很好的在单元测试和main方法中调用。一旦创建好一个Selenium工程,你马上会发现WebDriver和其他类库一样:它是完全独立的,你可以直接使用而不需要考虑其他配置,这个Selenium RC是截然相反的。
四、Benchmark.js分析代码性能