无论如何组织测试,无论有多少测试,如果你不能信任、维护以及阅读它们,这些测试就几乎没有价值。要成为优秀的测试,它们应该同时具有如下三个属性。
- 可靠性****。开发人员希望运行的測试可靠,能够对测试结果有信心。可靠的测试没有缺陷而且测试正确的事情
- 可维护。性无法维护的測试是梦,它们会拖延项目计划,或者当项目日程紧张时被搁置一旁。如果修改测试花费时间过多,或者经常需要为很小的产品代码频繁变更修改测试,开发人员会直接停止测试的维护和修复工作
- 可读性。人们不仅要能够阅读测试,还要在测试出问题时找出症结所在。失去可读性另外两个支柱很快也会倒塌。如果无法理解测试,测试的维护工作就会变得困难,也无法得到人们的信任。
1. 可靠性
1.1 及时维护测试代码
测试代码与产品代码一样需要不断进行维护,一旦测试写好了并且通过了,通常是不应该修改或删除这些测试的。这些测试是你的保护网告诉你修改的代码是否破坏了已有的功能。虽说如此,有时可能还是需要修改或者删除已有的测试。要理解什么情况下修改或删除测试会带来问题,什么情况下这么做是合理的。
删除一个测试的主要的理由是这个测试失败了。如果一个测试突然开始失败,可能有如下原因
- 产品缺陷 被测试的产品代码有缺陷。
- 测试缺陷 测试中有缺陷。
- 语义或者AP变更 被测试代码的语义发生变化,但是功能不变
- 冲突或者无效的测试 和测试相关的产品需求发生变化,产品代码随之变更
如果测试或代码没有任何问题,修改或删除测试的原因有:
- 重命名或者重构测试
不可读的测试带来的麻烦比