原文链接地址
这些知识之前就了解了一点,还没来得急总结,现在总结一下。
1. 首先了解一下这三个开发模式都是什么意思:
- TDD:测试驱动开发(Test-Driven Development)
测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD的基本思路就是通过测试来推动整个开发的进行,但测试驱动开发并不只是单纯的测试工作,而是把需求分析,设计,质量控制量化的过程。TDD首先考虑使用需求(对象、功能、过程、接口等),主要是编写测试用例框架对功能的过程和接口进行设计,而测试框架可以持续进行验证。
- BDD:行为驱动开发(Behavior Driven Development)
行为驱动开发是一种敏捷软件开发的技术,它鼓励软件项目中的开发者、QA和非技术人员或商业参与者之间的协作。主要是从用户的需求出发,强调系统行为。BDD最初是由Dan North在2003年命名,它包括验收测试和客户测试驱动等的极限编程的实践,作为对测试驱动开发的回应。
- ATDD:验收测试驱动开发(Acceptance Test Driven Development)
TDD 只是开发人员的职责,通过单元测试用例来驱动功能代码的实现。在准备实施一个功能或特性之前,首先团队需要定义出期望的质量标准和验收细则,以明确而且达成共识的验收测试计划(包含一系列测试场景)来驱动开发人员的TDD实践和测试人员的测试脚本开发。面向开发人员,强调如何实现系统以及如何检验。
2. 软件开发过程中最常见的两个问题
需求和开发脱节:
- 用户想要的功能没有开发
- 开发的功能并非用户想要
- 用户和开发人员所说语言不同
开发和测试脱节:
- 开发和测试被认为割裂
- 从开发到测试周期过长
- 测试自动化程度低
3. 如何解决上面说的两个问题
使用BDD和ATDD可以解决需求和开发脱节的问题,首先他们都是从用户的需求出发,保证程序实现效果与用户需求一致。
这个过程可以使用基于BDD的自动化测试工具Cucumber。
![](http://img2.tuicool.com/vQviae.png!web)
解决开发和测试脱节主要从以下几个方面入手:
- 开发的全过程都要贯穿测试:单元测试,集成测试和系统测试
- 测试需要自动化
- 所有测试通过,开发才算完成
- 持续集成,保证每一次集成系统都能运行
4. 如何进行CI(Continuous Integration)也就是持续集成
● 持续提交代码 (Check-in)
○ 一天之中多次提交
● 持续构建代码 (Build)
○ 保证在任何时刻代码是可以继续开发的
● 持续部署代码 (Deploy)
○ 保证始终有一个可以部署的版本
● 持续测试代码 (Test)
○ 每次提交均执行单元测试
○ 每天一次或数次集成测试
○ 每天一次或数次系统测试
○ 一天之中多次提交
● 持续构建代码 (Build)
○ 保证在任何时刻代码是可以继续开发的
● 持续部署代码 (Deploy)
○ 保证始终有一个可以部署的版本
● 持续测试代码 (Test)
○ 每次提交均执行单元测试
○ 每天一次或数次集成测试
○ 每天一次或数次系统测试
持续集成工具:Jenkins
5. 一张图比较TDD与ATDD