第15章 可测试性的设计
高质量的程序必须写自动化测试,需要尽最大的努力来确保软件是工作的。黄金法则是为了可交付性,功能必须包含单元测试。
没有自动化测试的情况下,功能就不能被确保是工作的并且不应该被使用。正如Kent Beck在极限编程中所提到的:“任何没有经过自动测试的功能就等于不存在的功能”。
关于程序功能的自动化测试,有两个基本点。
- 自动化:这意味着没有人工的评审工作。测试包含了一个脚本,用于对比实际结果和期望的结果。
- 功能:它们会被隔离进行测试,来确保可以独立工作。这是单元测试,意味着每个单元中包含了足够的信息来实现指定功能。理想情况下,它是很小的单元,例如一个类。然而,也可以是更大的单元,例如模块或者包。
在Python中内置了两个测试框架,简化了自动化测试的编码。接下来会介绍如何使用doctest和unittest来做自动化测试。为了使测试更实用,会介绍几点在单元测试时需要考虑到的地方。
有关更详细的内容,可以阅读Ottinger和Langr的FIRST(Fast Isolated Repeatable Self-validating Timely)特性:速度快、隔离、可重复、自我验证和及时。大多数情况下,可重复和自我验证需要一个自动化测试框架。及时意味着测试的编写要早于被测试的代码。参见http://pragprog.com/magazines/2012-01/unit-tests-are-first。
