乐趣区

关于cypress:Cypress-里的-Flaky-test-管理

鼠标 hover 下来,看到提示信息:This test both passed and failed when retried within a run

何谓 Flaky test?Cypress 官网有如下定义:

当一个测试能够在多次重试尝试中通过和失败而没有任何代码更改时,它被认为是不稳固的。

例如,执行了一个测试并失败,而后再次执行该测试,代码没有任何更改,但这次它通过了。

当之前测试过的代码测试失败时,这是一个强烈的信号,表明代码呈现了新的谬误。之前,测试通过,代码正确;当初测试失败并且代码无奈失常工作。一个好的测试套件的指标是使这个信号尽可能清晰和定向。

然而,flaky 测试则不同。flaky 测试是应用雷同的代码显示通过和失败后果的测试。鉴于此,测试失败可能意味着也可能不意味着存在新问题。并尝试通过应用雷同版本的代码从新运行测试来重现失败,可能会也可能不会导致测试通过。咱们开始认为这些测试不牢靠,最终它们失去了价值。如果根本原因是生产代码中的不确定性,则疏忽测试意味着疏忽生产谬误。

一个统计数据供大家参考:

Google 在其继续集成系统上运行了大概 420 万个测试。其中,大概 63,000 个在一周内呈现了不稳固的运行。尽管这占 Google 测试的不到 2%,但它依然对 Google 工程师造成很大的连累。

以上数据来自这篇博客。

测试重试是使 Cypress Dashboard 可能检测不稳固测试的根本机制。因而,须要启用测试重试能力利用 cypress 表板提供的任何不稳固的测试治理性能。

带有不稳固测试的测试运行将在仪表板“最新运行”页面中标有不稳固测试的数量。Flaky 测试运行也能够通过此页面中的“Flaky”过滤器过滤进和过滤出。

如下图所示:

https://github.com/SAP/sparta…

点 view details,再抉择某个具体的 cypress job 查看明细:

由测试重试触发的屡次测试运行尝试中的任何失败都将导致给定的测试用例被标记为不稳固。

第一次尝试失败,第二次尝试胜利:

对于 Spartacus 里 flaky test 的探讨。

Protractor 是除了 Cypress 之外另一个 Angular 端到端测试框架:

对于 Spartacus UI 来说,页面的简直每个局部都是动态创建的(咱们须要先进行后端调用)。

Protractor 底层是否调用 Selenium?

一篇如何用 Selenium 编写更稳固的测试的文章,值得一读。

更多 Jerry 的原创文章,尽在:” 汪子熙 ”:

退出移动版