发现并解决脆弱的Cypress测试的十种方法

1 天前   出处: medium.com  作/译者:Matthew Thomas/空山新雨

引言

本指南将帮助您检测脆弱(不稳定)的Cypress测试,并提供十种策略来驾驭它们。
通过了解如何使用Cypress CTRF报告来快速发现脆弱测试,生成详细报告,提醒您的团队,甚至分析发展趋势。

脆弱的Cypress测试

正所周知,脆弱的测试对开发团队来说是非常令人沮丧的,它不仅造成延误还会破坏团队对测试流程的信心。
测试故障的间歇性使其难以被识别、导致耗时的原因调查、并会影响CI/CD 流水线的可靠性。
通过从一开始就识别和管理脆弱测试,可以增强测试套件的可靠性,提高CI/CD流水线的效率,并防止对假的失败进行长时间的调查。

虽然有许多方法,同时也有各种已知的解决方案来管理脆弱测试,但下面介绍的是CTRF(Common Test Report Format 是一种通用的JSON测试报告格式)报告这个方法。

CTRF JSON报告

Cypress CTRF Reporter包含了一个带有脆弱和重试属性的测试对象:

[{
"name": "用户应该能够成功登录",
"status": "passed",
"duration": 1200,
"retries": 2,
"flaky": true,
},
]

这就意味着使用CTRF识别脆弱测试会很容易。现在来看看你可能会如何处理它们的方法。。

在Github Actions里查看脆弱测试

使用GitHub Test Reporter工具,您可以使用单个命令生成Github Actions摘要:

npx github-actions-ctrf flaky path/to/ctrf-report.json

该摘要提供了测试运行中每个脆弱测试的详细信息。
现在,每次有脆弱测试出现时,您都会在GitHub中收到一份详细的报告,类似于下面的截图:

在GitHub Actions中查看Cypress测试的脆弱率

脆弱率可以用来跟踪测试随着时间的推移呈现出脆弱行为的频率。
该指标是识别不稳定测试的关键,而这些不稳定的测试可能就需要多加关注,才能最终提高测试整体的可靠性。
使用GitHub Test Reporter工具,您可以轻松计算出所有脆弱测试的脆弱率,并得出测试整体的脆弱率。
这个比率在每次测试运行后都会更新,这让您能够随时清楚地了解测试的稳定性情况。

npx github-actions-ctrf flaky-rate path/to/ctrf-report.json

给GitHub PullRequest(PR)添加带有脆弱测试详细信息的注释

您可以通过自动将脆弱测试详细信息直接添加到GitHub PR注释中来增强您的PR请求审查。
这样,在代码审查期间,团队就可以轻松发现和解决脆弱测试,而无需切换到其他地方进行调查。
要做到这一点,只需将—pull-request参数添加到您的GitHub Test Reporter命令中。
这样就会把脆弱测试报告包含为PR注释的一部分,让每个人都了解到潜在的测试不稳定情况。例如:

npx github-actions-ctrf flaky path/to/ctrf-report.json —pull-request

npx github-actions-ctrf flaky-rate path/to/ctrf-report.json —pull-request

在Cypress测试脆弱的时候,向Slack发送警报。

一旦检测到脆弱的Cypress测试后,就立即向您的Slack频道发送警报来提醒您的团队。
警报里包含有哪些测试是脆弱测试的信息,因此您可以立即修复它们。
这可以通过CI/CD流水线中的单独命令来实现。
使用Slack Test Reporter工具,您就可以在发生脆弱测试的时候发送slack警报:

npx slack-ctrf flaky path/to/ctrf-report.json

所以现在,每次发生脆弱测试时,都会收到下面这样的通知:

在Cypress测试脆弱的时候,向Microsoft Teams发送警报。

您猜对了,Teams也是如此!
使用Microsoft Teams Reporter工具,您可以在发生脆弱测试的时候发送Teams警报:

npx teams-ctrf flaky path/to/ctrf-report.json

在Cypress测试脆弱的时候,向MatterMost发送警报。

使用MatterMost Test Reporter工具,您可以在发生脆弱测试的时候发送 MatterMost警报:

npx mattermost-ctrf flaky path/to/ctrf-report.json

在脆弱测试出现的时候记录日志

您可以使用ctrf-cli软件包来记录脆弱测试:

npx ctrf flaky path/to/ctrf-report.json

该命令会输出脆弱测试的名称和每个测试的重试次数,如下:

正在处理报告:reports/sample-report.json
在reports/sample-report.json中发现1个脆弱测试:

  • 测试名称:测试1,重试次数:2

对脆弱测试进行分析处理

CTRF JSON测试对象包含脆弱和重试属性,这意味着很容易检测脆弱测试:

[{
"name": "User should be able to login",
"status": "passed",
"duration": 1200,
"retries": 2,
"flaky": true,
},
]

这也意味着如果您将CTRF报告发布到数据库中,您就可以对脆弱测试进行分析处理,比如确定其发生的频率和识别哪些测试是脆弱的。

使用JSON报告和Shell脚本自动检测脆弱测试。

这是一个有趣的方法,您可以简单地将CTRF报告存储在共享目录中,并在shell脚本中使用jq命令迭代处理它们:

#!/bin/bash
# Directory containing JSON reports
REPORT_DIR="ctrf"
# Iterate over each JSON report
for REPORT in "$REPORT_DIR"/*.json; do
  # Parse the report with jq to find flaky tests
  jq '.tests[] | select(.flaky == true) | {name: .name, retries: .retries}' "$REPORT"
done

结语

检测和处理脆弱测试的方法有很多,当需要战胜脆弱测试的时候,我希望使用Cypress CTRF reporter的方法能为您提供更多的选择!


声明:本文为本站编辑转载,文章版权归原作者所有。文章内容为作者个人观点,本站只提供转载参考(依行业惯例严格标明出处和作译者),目的在于传递更多专业信息,普惠测试相关从业者,开源分享,推动行业交流和进步。 如涉及作品内容、版权和其它问题,请原作者及时与本站联系(QQ:1017718740),我们将第一时间进行处理。本站拥有对此声明的最终解释权!欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,与我们的编辑和其他窝友交流。
/19 人阅读/0 条评论 发表评论

登录 后发表评论
最新文章