BDD测试和TDD测试
TDD
TDD是测试驱动开发(Test-Driven Development)的缩写,是敏捷开发中的一项测试技术,也是一种设计方法论。她的大概思路是:先针对每个功能点抽象出接口代码,然后编写单元测试代码,接下来再实现接口,最后运行单元测试代码,循环整个过程直到整个单元测试通过。
TDD步骤
测试驱动开发是一个过程,依赖于不断重复极短的开发周期。它基于极限编程(XP)的测试优先理念,倡导采用可高度信赖的简单设计。
流程并不复杂,由几个步骤反复进行:
- 编写一个测试
- 运行所有测试
- 编写实现代码
- 重构
- 运行所有测试
鉴于测试是在实现前编写的,因此它应该不能通过。如果通过了,就说明测试是错误的:要么它描述的功能早已存在,要么编写不正确。
TDD的好处
- 保证代码的质量
- 提高开发效率
- 能够更好的满足测试
- 减少自测的时间
- 能够成为更好的代码说明文档
总结
当然,并不是所有的项目都适合TDD这种模式。采用TDD测试应该具备一下几个条件:
- 项目需求清晰
- 开发人员对需求有足够的理解
- 业务模型不能过于复杂,模块之间的依赖性不能太强,过于复杂会导致拆分接口和编写测试代码工作量增大
BDD
BDD是TDD的一种衍生,她通过特定的框架,用自然语言或类自然语言,按照编写用户故事或用户用例的方式,以功能使用者的角度,描述并编写测试用例。她不是某种工具或技术,她是一种思想、一种协作方式。
BDD 工具
- Cucumber
BDD与TDD区别
- TDD更多的关注测试接口的实现正确性,BDD更多关注用户使用功能时的行为和结果是否符合预期
- TDD是使用编程语言来描述测试用例,而BDD是用自然语言来描述
- TDD的需求文档和测试用例是分别储存的,而BDD的需求文档就是测试用例
BDD的实现
- 确定沟通和协作方式,如:slack、Teams
- 确定工作流程,如:什么阶段开始写测试代码
- 选定BDD实现,如cucumber
- 设计用户场景
- 编写测试代码
- 持续执行和改进