Test-Driven Development 测试驱动开发
如果我们遵守了以下的规则进行开发,那么这就是测试驱动开发:
- 在编写任何产品代码之前先写一个会运行失败的单元测试。
- 编写一个单元测试,使其刚好能够运行失败或者编译失败。
- 编写的产品代码应该刚好能够使失败的单元测试运行通过。
Test Isolation 测试促使模块之间隔离
测试先行将使软件被更好的解耦,通过接口和Mock对象来解除模块与外界之间的依赖。
Serendipitous Decoupling 意外获得的解耦合
单元测试将促使我们将模块隔离,迫使我们从整个程序的结构角度来进行解耦。测试先行可以改善我们的设计。
Acceptance Tests 验收测试
尽管单元测试可以验证系统中的各个小部分可以如预期的运行,但是它无法验证整个系统的行为和预期相符。单元测试就好像是白盒测试,来验证系统的每个个体。验收测试则是黑盒测试来验证客户的需求是否被满足。
验收测试是一个功能的最终文档。一旦业务人员编写了验收测试来验证该功能是正确的,那么开发人员将可以通过这些验收测试更真实地理解这些功能。正如同单元测试是系统内部模块的可编译和可执行的文档,验收测试是整个系统功能的可编译和可执行的文档。简而言之,验收测试是真正的需求文档。
此外,编写验收测试将对整个系统架构有着深远的影响。为了使整个系统可测试,它必须在更高的层次上解耦。
Serendipitous Architecture 意外获得的架构

1891

被折叠的 条评论
为什么被折叠?



