通过A/B测试来发布功能已然成为一种趋势,可以仅对某些类型的用户启用新功能,随后可以收集各种指标来观察系统表现有什么变化。
6.1 功能性测试
通常正确的测试需要花费40%的开发时间,自动化是一种解决效率问题的好方法。而单元测试、集成测试以及端到端的测试都是一种自动化的形式。
过去,Ruby on Rails在一定程度上创建了一个通往新范式的大趋势,该新的范式就是测试驱动开发(TDD)。如今,大部分新的开发平台都是以TDD的思想来构建的。
在开发之前做好测试计划将有助于创建出高内聚的模块,并定义出清晰且易于测试的接口。
自动化测试的金字塔:
单元测试是一种只覆盖应用各个独立部分而不考虑与其他模块集成的测试。称为白盒测试,它的目标就是尽可能多地覆盖并验证程序的代码分支。使用mock和stub模拟来自第三方系统的响应,从而控制执行流程命中我们期望的分支。
集成测试是设计用来验证应用环境中各模块之间集成的。它们并不是用来验证代码分支的,它们验证的是业务单元,在该测试中,我们将数据存入数据库,或者调用第三方的Web服务,又或者是调用架构中的其他微服务。
端到端(E2E)测试:测试设计好的用例。
采用Node.js测试微服务:Mocha和Chai
6.2 对微服务进行文档化
Swagger是一个遵守开放API标准的API管理工具,所以它也可以算是API创建者们共通的语言。
采用Swagger对API进行文档化:不仅是一个文档化的模块,其管理API的方式也独具特色,可以让你对自己的工作拥有一个整体的视图。
根据Swagger定义来生成项目: