> For the complete documentation index, see [llms.txt](https://tdd.shujuwajue.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tdd.shujuwajue.com/shi-jian/bai-hua-jie-yu.md).

# 白话结语

TDD主要包括两方面：测试先行和代码重构。测试主要针对单元（最小可测试软件元素）实施测试。

**TDD属于需求分析和详细设计的范畴**

测试驱动开发属于需求分析和详细设计范畴，当代码完成后，这些测试程序也成为单元测试的一部分。测试驱动开发颠覆了以往的需求分析-设计-编码-单元测试。而是从单元测试入手，用测试代码描述需求，编码的目的就是为了通过已经设计好的单元测试代码。用测试来驱动开发，开发的目的就是为了通过测试。

**TDD能够带来的好处**

* 较少开发周期中的bug反馈
  * 测试先行，思路先行
* 提高代码质量
* * 添加或修改代码更容易
* 保证设计质量
  * 不断重构以改善设计
* 集中精力每次开发一个功能
  * 确保每个方法都是可用且已被测试过
  * 确保及时发现出现问题的模块
* 改善和验证设计
  * 以客户端的视角编写测试
  * 以客户端提供了示例代码
  * 更注重代码的设计
  * 为了使测试容易，需要实现松散耦合
  * 更少的Debug时间

**TDD的大缺点：需要编写更多的测试代码**

**怎么做？简图**

![](https://2056388194-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfwIC9s9ctw6bxuGRce%2F-Lg3Jg5XfBMYuFA8zWAb%2F-Lg3JGqNuEeUQ2ADNT69%2Fimage.png?alt=media\&token=b82f0aa0-e9c7-4420-900b-ce1615f822ae)

　**TDD口号：red-green-ractor模式**

![](https://2056388194-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfwIC9s9ctw6bxuGRce%2F-Lg5VcJIJCaJhsXvkOkp%2F-Lg5VjNB4S0rc1C23Cb4%2Fimage.png?alt=media\&token=775a9afa-afab-4221-baaa-03c46dab1fa3)

1. 不可运行：写测试用例，运行，无具体的实现，测试程序无法通过，所以报错 =》 **红色模式**
2. 可运行：实现具体业务代码，尽快让这个程序工作，为此可能在code过程中使用一些不合理的方法。测试通过 =》 **绿色模式**
3. 重构：重构代码，消除在让测试程序工作的过程中，产生的重复设计，优化设计机构，并之前的测试通过 =》 **重构模式**
