什么造就了成功的测试套件
如果测量测试套件的质量?
唯一可行的办法就是对测试套件里每一个测试进行单独的评估。
你不需要一次性把它们都评估完。
你可以逐步的进行评估
成功的测试套件拥有以下属性:
集成到开发周期中
只针对代码库中最重要的部分
它以最低的成本提供最大的价值
集成到开发周期中
拥有自动化测试的唯一重点就是你要经常使用它们。
所有的测试都应该集成到开发周期中。
最理想的情况是,每当有代码变化,都应该执行这些测试,哪怕是最微小的代码变化。
只针对代码库中最重要的部分
将单元测试的重点放在系统中最关键的部分,针对其余部分仅进行简单或间接的测试即可,这一点很重要。
在大多数应用程序中,最重要的部分是包含业务逻辑部分的领域模型(Domain Model)。
测试业务逻辑会为您的时间投资提供最佳回报。
所谓的其余部分可以分为以下三类:
基础设施代码
外部服务和依赖,例如数据库和第三方系统
粘合一切的代码
为此,您应该将域模型与代码库的非必要部分隔离开来。您必须将域模型与所有其他应用程序关注点分开,以便您可以将单元测试工作的重点放在该域模型上。
以最低的成本提供最大的价值
将测试合并到构建系统中是不够的,保持域模型的高测试覆盖率也是不够的。同样重要的是,只在测试套件中保留价值超过其维护成本的测试。最后一个属性可以分为两点:
识别一个有价值的测试(扩展一下,包括如何识别低价值的测试)
编写一个有价值的测试。