# 7个测试驱动开发的最佳实践

测试驱动开发（TDD）是一个简约的软件开发过程。由一个自动执行的测试用例驱动，用例定义了系统所需的功能。测试的第一个执行结果状态是失败。然后，开发人员实现一个能通过测试用例的**最小代码**。一旦有新代码需要被测试，上面这个实现就要被重构以适应新代码，然后重新测试。重复这个循环以确保加入的代码都是可通过测试用例的，也意味着系统需要的功能被正确实现了。

![](https://2056388194-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfwIC9s9ctw6bxuGRce%2F-Lg0Lv1famgOyEcyhXGQ%2F-Lg0MF3reKdMDELdnUrx%2Fimage.png?alt=media\&token=fdf64eac-3e7d-4ea2-b66e-a831f90e2f47)

作为敏捷开发的衍生物，TDD通过不断地自我迭代，实现了构建软件的敏捷方法，并且帮助程序员实现清晰，简单的设计和代码。

下面是TDD项目的一些最佳实践：

**1.避免功能复杂**

保持功能实现的简单性。仔细考虑，以确保测试用例涵盖了系统所需的功能的各种可能。由于测试用例是驱动力，因此应对其进行正确性和完整性检查。

**2.专注于需要实现的目标**

确保你了解代码需要被调用的位置，并相应地对测试套件进行框架化。确保测试用例符合标准命名约定，并明确描述了开发所需要实现的目标。这是至关重要的，因为功能不断添加迭代。后续其他买的开发人员（其实包括自己）应该可以通过看测试代码，轻松推断出预期的功能。

&#x33;**.保持测试代码的简洁**

确保你测试代码只需要有足够满足实现测试用例的代码即可。这是TDD的基本原则。最大限度地减少测试代码本身缺陷的可能性，简化了检查和测试过程。保持代码简洁的同时要确保代码是可以理解的，并允许将来继续增加。

![](https://2056388194-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfwIC9s9ctw6bxuGRce%2F-Lg0Lv1famgOyEcyhXGQ%2F-Lg0MdYiC_bQTUgz2bgL%2Fimage.png?alt=media\&token=6622866c-0364-4b00-95cb-2e52ff4ffb23)

**4.反复测试**

在编码之前和编码后都要进行测试。然后在代码重构后再次测试。这是为了确保在任何步骤中没有代码被破坏。在重构期间，确保新的代码可维护并遵守标准。经验告诉我们，每当有代码更改或代码移动或代码合并的时候就需要再测试一次。

5.**维护代码神圣**

使用版本控制工具查看并检入代码，特别是当多个开发人员正在编写代码时。使用Jenkins等持续集成工具可以避免代码合并问题。

**6.应用知识**

在TDD中，编码需要有限但有效。它只需要实现对应的测试用例，而不会破坏任何其他的东西。维护足够的系统文档，包括测试用例的存储库，以及具有良好应用知识的团队成员。他们可以确保项目顺利而成功的进行。

**7.知道什么时候使用TDD**

最后但并非最不重要的是，像任何其他开发概念一样，TDD在**某些情况下**效果是最好的。**TDD的执行时间不能太长**。**任何冗长或复杂的测试**都会破坏TDD的目的。

通过TDD，**开发更加受到控制，结果大大减少了缺陷**。**重复测试确保系统中的每个组件在每一步都正常工作。**

参考资料：

[测试驱动开发(TDD)的实践](https://www.jianshu.com/p/a9ababd2bea5)

[7个测试驱动开发的最佳实践](http://mini.eastday.com/bdmip/171214081439410.html)

[5个测试驱动开发（TDD）的最佳实践](https://www.kingwins.com.cn/content-11951.html)

[深度解读 - TDD（测试驱动开发）](https://www.jianshu.com/p/62f16cd4fef3)

[一个实例搞懂TDD（测试驱动开发）](https://blog.51cto.com/2681882/2120480)
