拥抱TDD吧,节省30%开发时间

Posted 我爱看明朝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拥抱TDD吧,节省30%开发时间相关的知识,希望对你有一定的参考价值。

拥抱TDD吧,节省30%开发时间

目标: 改变大家对单测浪费时间的认知

解决痛点

1. 开发过程中重复准备数据
2. 避免开发者修改数据库数相互干扰
3. 避免修改代码逻辑引入bug
4. 节省后续维护的时间

TDD介绍

TDD:test-driven-development即测试驱动开发,
是指在实际开发逻辑代码前,先写好测试用例。

整个TDD开发流程:

	开发(定义顶层抽象)-> 编写用例 -> 准备数据 ->跑用例->失败->开发->跑用例->成功->交付

非TDD开发

	开发->手工测试->失败->开发->手工测试->成功->交付

传统开发模式与TDD的比较

对比两种开发模式,

传统:
	
	传统耗费时间 =  开发代码  +  测试次数 * 每次覆盖场景数 * 准备一个场景需要的时间 
	
	测试次数 = 开发过程中失败次数 + 测试打回 + 后续迭代次数
	
	时间指数级增长:每次测试都需要准备全场景的数据,如果一次不成功需要准备多次
	
	
TDD:
	
	TDD耗费时间 = 开发代码 +  准备数据覆盖场景数 * 准备一个场景需要的时间 
   
	时间线性增长(每次只需要准备本次新增的场景数据)。

测试次数 = n

每次覆盖场景数 = x

准备一个场景需要的时间 = m
	
理想状况下(每次修改测试都是一次过):

节省时间 = 传统耗费时间 - TDD耗费时间  = n*x*m - m*x =  (n-1) * (m * x)


所以从上面可以看出,使用TDD开发相比传统的开发,在最开始开发的时候就已经节省了时间(每次验证,不需要重复准备数据),
	后续每次修改逻辑,都省了时间。

实行TDD的必要条件

- cicd 
- 预备数据的工具(data-uploader工具)

以上是关于拥抱TDD吧,节省30%开发时间的主要内容,如果未能解决你的问题,请参考以下文章

SAE 助力「海底小纵队学英语」全面拥抱 Serverless,节省 25% 以上成本

如何在 Flutter 上实现 BLoC 模式的 TDD

浅谈测试驱动开发(TDD)

SAE 助力「海底小纵队学英语」全面拥抱 Serverless,节省 25% 以上成本

测试驱动开发(TDD)实践与技巧

传统银行如何拥抱云原生?