《代码整洁之道 程序员的职业素养》第八章

08 Jun 2021

Reading time ~5 minutes

专业开发人员会测试自己的代码。

每个专业的开发团队都需要一套好的测试策略。

8.1 QA应该找不到任何错误

8.1.1 QA也是团队的一部分

QA和开发人员应该紧密协作,携手保障系统的质量。QA在团队中要扮演的便是需求规约定义者(specifier)和特性描述者(characterizer)。

8.1.2 需求规约定义者

业务人员编写针对正常路径的测试(happy-path test),而由QA编写针对极端情况(corner)、边界状态(boundary)和异常路径(unhappy-path)的测试。

8.1.3 特性描述者

QA的另一项任务是遵循探索式测试的原则,描述系统运行中的真实情况,将之反馈给开发人员和业务人员。

8.2 自动化测试金字塔

专业开发人员遵循测试驱动开发的要求来创建单元测试。专业开发团队使用验收测试定义系统需求,使用集成测试保证质量稳步提升。

8.2.1 单元测试

目的是在最底层次上来定义系统。

8.2.2 组件测试

针对系统的各个组件而编写的。

在组件测试中,需要使用合适的模拟(mocking)或测试辅助(test-doubling)技术,解开与系统的其他组件的耦合。

8.2.3 集成测试

集成测试是编排性测试。它们是装配测试,用以确认这些组件之间已经正确连接,彼此间通信畅通。

8.2.4 系统测试

针对整个集成完毕的系统来运行的自动化测试,确保正常的系统构造。在这个层次的测试集中,应该包含吞吐率测试和性能测试。

8.2.5 人工探索式测试

验证预期行为的时候,探索系统预期之外的行为。

8.3 结论

TDD很强大,验收测试是表达和强化需求的有效方式。

为了更好地做到“QA应该找不到任何错误”,开发团队要和QA紧密协作,创建由单元测试、组件测试、集成测试、系统测试和探索式测试构成的测试体系。



Reading NotesThe Clean Coder Share Tweet +1