Embrace TDD and save 30% development time
Goal: Change everyone’s perception of single testing as a waste of time
Solve pain points
1. 开发过程中重复准备数据
2. 避免开发者修改数据库数相互干扰
3. 避免修改代码逻辑引入bug
4. 节省后续维护的时间
Introduction to TDD
TDD:test-driven-development即测试驱动开发,
是指在实际开发逻辑代码前,先写好测试用例。
整个TDD开发流程:
开发(定义顶层抽象)-> 编写用例 -> 准备数据 ->跑用例->失败->开发->跑用例->成功->交付
非TDD开发
开发->手工测试->失败->开发->手工测试->成功->交付
Comparison between traditional development model and TDD
对比两种开发模式,
传统:
传统耗费时间 = 开发代码 + 测试次数 * 每次覆盖场景数 * 准备一个场景需要的时间
测试次数 = 开发过程中失败次数 + 测试打回 + 后续迭代次数
时间指数级增长:每次测试都需要准备全场景的数据,如果一次不成功需要准备多次
TDD:
TDD耗费时间 = 开发代码 + 准备数据覆盖场景数 * 准备一个场景需要的时间
时间线性增长(每次只需要准备本次新增的场景数据)。
测试次数 = n
每次覆盖场景数 = x
准备一个场景需要的时间 = m
理想状况下(每次修改测试都是一次过):
节省时间 = 传统耗费时间 - TDD耗费时间 = n*x*m - m*x = (n-1) * (m * x)
所以从上面可以看出,使用TDD开发相比传统的开发,在最开始开发的时候就已经节省了时间(每次验证,不需要重复准备数据),
后续每次修改逻辑,都省了时间。
Necessary conditions for implementing TDD
- cicd
- 预备数据的工具(data-uploader工具)