单元测试

单元测试有很多好处, 比如:

  • 提高信心,适应变化和迭代. 如果现有代码有较为完善的单元测试,在代码重构时,可以检验模块是否依然可以工作, 一旦变更导致错误,单元测试也可以帮助我们快速定位并修复错误
  • 单元测试是集成测试的基础
  • 测试即文档。如果文档不能解决你的问题,在你打算看源码之前,可以查看单元测试。通过这些测试用例,开发人员可以直观地理解程序单元的基础API
  • 提升代码质量。易于测试的代码,一般都是好代码

测什么?

业务代码或业务组件是比较难以实施单元测试的,一方面它们比较多变、另一方面很多团队很少有精力维护这部分单元测试。所以通常只要求对一些基础/底层的组件、框架或者服务进行测试, 视情况考虑是否要测试业务代码

测试的准则:

  • 推荐Petroware的Unit Testing Guidelines, 总结了27条单元测试准则,非常受用.

单元测试指标:

一般使用测试覆盖率来量化,尽管对于覆盖率能不能衡量单元测试的有效性存在较多争议。

大部分情况下还是推荐尽可能提高覆盖率, 比如要求语句覆盖率达到70%;核心模块的语句覆盖率和分支覆盖率都要达到100%. 视团队情况而定

扩展:

  • 测试覆盖(率)到底有什么用?

相关工具

  • Headless Browsers: 无头浏览器是网页自动化的重要运行环境。 常用于功能测试、单元测试、网络爬虫
    • puppeteer
    • Headless Chromium
  • 测试框架
    • Jest Facebook的单元测试框架. 零配置, 支持组件快照测试、模块Mock、Spy. 一般场景, 单元测试学它一个就行了
      • 组件测试
        • testing-library
        • Enzyme
    • Intern
  • 单元测试
    • AVA
    • Jasmine
    • Mocha
    • Tape
  • 断言库
    • Chai
    • expect.js
    • should.js
  • Mock/Stubs/Spies
    • sinon.js
  • 代码覆盖率
    • istanbul
  • 基准测试
    • benchmark.js
    • jsperf.com

你可能感兴趣的:(单元测试)