跳至内容

不稳定的测试

不稳定的测试是指没有一致通过或失败的测试。

测试代码量越大,不稳定性的可能性就越大。 极端的不稳定性会导致测试失败习惯化,在极端情况下会导致测试放弃。

高级测试比低级测试更容易出现不稳定性,尽管这往往只是因为高级测试测试的代码更多。

任何测试中的不稳定性都是不希望出现的属性。

使用 HitchStory 检测不稳定性

某些类型的不稳定性(例如竞争条件)可以通过多次运行测试来检测。 在 不稳定故事检测操作方法 中记录了一种实用的执行此操作的方法。

原因

有很多常见的不稳定测试原因

  • 与接口交互时的计时问题(例如 selenium 上的网页)** 一个常见的但非常 hacky 的解决方法是使用休眠。 “正确”的解决方法是使用带超时的预期条件等待。

  • 依赖项以意外方式运行:** 测试环境中的升级包。 ** 从下载的数据库中获取的新数据。

  • 非确定性代码。 ** 没有 ORDER BY 的 SELECT 语句通常会使返回项目的顺序混乱,从而导致测试失败

  • 测试代码中的错误和不确定性。

不稳定的测试几乎总是可以通过更多的方式解决

  • 增加隔离 - 例如容器化和一致地升级容器。
  • 使代码以更确定性的方式运行 - 例如始终对所有数据库 select 代码进行 LIMIT。
  • 容纳不确定性 - 使用户故事接受所有潜在的输出范围。

有用的不稳定性

不稳定的测试通常只是令人烦恼。

但是,有时不稳定性实际上很有用,因为它可以突出显示以前未发现的错误 - 例如竞争条件。