测试驱动开发的基本过程如下:
1) 明确当前要完成的功能。可以记录成一个 TODO 列表。
2) 快速完成针对此功能的测试用例编写。
3) 测试代码编译不通过。
4) 编写对应的功能代码。
5) 测试通过。
6) 对代码进行重构,并保证测试通过。
7) 循环完成所有功能的开发。
为了保证整个测试过程比较快捷、方便,通常可以使用测试框架组织所有的测试用例。一个免费的、优秀的测试框架是 Xunit 系列,几乎所有的语言都有对应的测试框架。
测试用例的编写就用上了传统的测试技术。
• 操作过程尽量模拟正常使用的过程。
• 全面的测试用例应该尽量做到分支覆盖,核心代码尽量做到路径覆盖。
• 测试数据尽量包括:真实数据、边界数据。
• 测试语句和测试数据应该尽量简单,容易理解。
• 为了避免对其他代码过多的依赖,可以实现简单的桩函数或桩类(Mock Object)。
• 如果内部状态非常复杂或者应该判断流程而不是状态,可以通过记录日志字符串的方式进行验证。