测试之谈TDD、BDD和ATDD
前言:做测试也快两年了,虽然期间也接触到敏捷开发,但是只是对项目组中的流程有个了解。偶然的看到TDD和BDD,是敏捷开发技术中比较高频的两个概念,但实际自己并不能说出其中的区别和联系,刚好借此机会学习了解,通过CSDN记录学习的疑问
正文:
一、概念:
TDD:Test-Driven Development(TDD)即测试驱动开发,它是一种测试先于编写代码的思想用于指导软件开发。测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。
BDD:Behavior Driven Development,行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作
ATDD:验收测试驱动开发(Acceptance Test Driven Development)TDD 只是开发人员的职责,通过单元测试用例来驱动功能代码的实现。在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开发。面向开发人员,强调如何实现系统以及如何检验。
二、TDD和BDD联系与区别
总而言之,TDD和BDD解决的是不同层级的问题,BDD更多的是对TDD的补充,而不是像有些说法BDD是对TDD很好的回应。同时相较于现在比较完善的项目这两者都集合在开发过程中使用;可能一些小型的公司or项目,相对于没有更多的关注TDD层面,甚至可以说并未涉及到敏捷开发层面。
三、应用及问题
流程:先写BDD的场景 -> 再写单元测试 -> 写代码让单元测试通过 ->让BDD的scenario通过
可能会出现的问题:当开发时间很紧的时候,开发很容易会先写代码,再补TDD测试,再补BDD测试
2. 自动化框架稳定性问题:
- 测试有可能会随机挂
- 测试跑的时间过长
- 维护成本问题
- 测试覆盖率的要求
- 有一些场景不是很适合BDD(比如单纯UI测试,经常变化的scenario)