随机通过的测试

俗话说,一颗老鼠屎坏了一锅汤。在持续集成中那些随机通过的测试,便是那可恶的老鼠屎。把它们称作随机通过的测试,是乐观的说法,其实它们是一些随机失败的测试。之所以说它们坏了一锅汤,是由于它们飘忽不定的特性,使得程序员对持续集成的结果难以做出准确的判断。

为什么这么说呢?假如,你提交了一段代码,结果测试报错了。如果说你的测试是说一不二的测试,那么你提交的代码肯定是破坏了程序的某些功能。唯一的做法,就是亡羊补牢,提交一个纠正的代码,再运行一次持续集成把所有的测试通过了。可如果这些测试不三不四,它们报错了,有时候,什么都不改,重新运行一遍,就又通过了。可有的时候,是真的错了,必需进行改正。这样一来,这持续集成就成了一个鸡肋,食之无味,弃之可惜。

我是一个比较激进的人,遇到这样的情况,对这些老鼠屎绝不姑息,斩钢截铁的把它们从持续集成的任务中剔除出去。只把那些讲信用的测试留下来,这样一来,虽然测试少了,但至少它们可靠。

可那些随即通过的测试,也不能丢掷一旁,不闻不理,要抓紧时间,把它们纠正过来,把它们从新争取成可以依赖的战斗伙伴。

末了,看看Martin用什么手段来解决这些不确定的测试的。