解读 Flaky Test
Flaky Tests是一种不可靠的测试现象:即在同样的软件代码和配置环境下,得不到确定(有时成功、有时失败)的测试结果。
从逻辑上讲,当一遍又一遍地进行相同的测试时,代码将产生相同的结果——应用程序要么每次都能正常工作,从而通过测试,要么每次都不能正常工作,从而导致测试失败。测试结果应该是一致的(Consistent),即一段代码要么符合预期的运行结果,通过测试;要么与预期结果不符,测试失败。
然而,实际中执行测试时会出现完全相同的代码和配置,但是出现不一致的测试结果,那么这种现象被称为 Flaky Test。
Flaky ['fleɪki] 的英文意思是:易碎成小薄片的;易剥落的;行为古怪的;好忘事的
Flaky Test 是表达一种不可靠的测试现象。
在 Regression Test 时,尤其是采用自动化的方式执行测试时,测试者编写了自动化测试Scripts执行测试,一些 Test Scripts 有时候执行成功,有时候执行失败了,这时就产生了 Flaky Test的现象。
Regression Test 是敏捷开发过程中非常重要的一种测试,当发生了功能变更,或者开发团队修复了缺陷之后,为了确保产品功能正常,通常需要执行Regression Test,能够采用自动化方式执行时,最后执行自动化回归测试。
在回归测试中,如果所有测试都通过了,开发人员和测试人员通常不会进一步检查测试运行。如果测试中有失败的测试用例或者自动化测试Scripts时,开发者和测试者就需要引起关注,查明失败的原因。
查找出现 Flaky 的原因
在查找失败测试的原因时,开发人员需要收集数据,试图发现看似随机的结果之间的差异,以便找出失败测试的原因。
代码应该被重新检查,测试本身也应该被重新检查,如果没有发现问题,那么就需要检查外部因素,看看它们是否是问题的核心。
开发人员可能会查看通过的测试是否在一天中的某个时间运行,而失败的测试是否在一天中的不同时间运行,某些程序是否在测试通过时没有运行的失败测试的同时在开发人员的计算机上运行,或者失败的测试是在测试的同一点运行还是在测试的不同时间运行。
有时,Fl