目前自己代码关于测试一块涉及的比较少,以后还是要有意识的多尝试。
测试类型
JavaScript代码测试有很多分类,比如单元测试(unit test)、集成测试(integration test)、功能测试(functional test)、端到端测试(end to end test)、回归测试(regression test)、浏览器测试(browser test)
总的来看,可以分为下面三种测试类型:
- 单元测试:通常指独立测试单个函数,通过模拟输入和预测输出的方式测试独立的函数或者类。
- 集成测试:测试应用中不同模块如何集成,如何一起工作。测试多个模块间的联动是否和期望相同。
- 功能测试:也被称作端到端测试,或者浏览器测试,对于网页应用,功能测试意味着使用工具模拟浏览器,然后通过点击页面来测试应用。关注点不在内部实现方式,而是测试产品在真实使用场景(比如在浏览器)中是否可以达到预想的结果。
测试JavaScript代码时,应该着重于单元测试,它非常容易编写和维护,除了可以减少BUG还有很多益处。而集成测试与功能测试应该作为补充。
测试工具分类
常见测试工具分类有
- 单元测试工具:jasmine、mocha,Jest
- 断言库:assert、should、chai、jasmine
- 单元测试代码覆盖率:istanbul
- 测试管理工具:karma
- 端到端测试:protractor、Selenium
- HTTP 接口测试:superTest
比如单元测试,我们可以选型为:Mocha + Should + SuperTest
- Mocha:测试框架
- Should:断言库,也可以使用Node.js自带的断言库Assert,但是Should提供的函数更加丰富
- SuperTest:测试HTTP接口,可以使用Node.js自带的HTTP模块测试,但是SuperTest更加方便