Grafana Labs 发布了一种实用的方法来监控 Cypress 测试套件,将测试结果转换为 Prometheus 指标并将其发送到 Grafana Cloud。这种方法允许团队在多次运行中跟踪测试失败、运行时和不稳定的测试,而不是仅仅依赖于各个执行的终端输出或 CI 日志。
这种方法使用 Cypress 循环钩子捕获测试结果,使用 Prometheus Pushgateway 临时存储短期测试站点的指标,使用 Grafana Alloy 提取这些指标并将其推送到 Grafana Cloud。然后可以将获得的数据可视化并用于警报,从而提供测试行为的长期视图。
Cypress 已经通过其插件生命周期公开了有用的信息。 before:run 挂钩可以建立一个用于运行整套测试的通用标识符,而 after:spec 返回每个规范的结果,包括通过和失败计数、测试状态和持续时间。 Grafana 实例将此数据转换为一小组 Prometheus 指标,涵盖各个测试、规范和完整执行。
这使得团队能够回答单次 CI 执行难以回答的问题。仪表板可以显示特定规范是否正在变慢,测试是否间歇性失败,或者套件的整体性能是否正在恶化。 GitHub Actions 的执行 ID 也可以附加到指标,从而允许指标更改追溯到生成它的 CI 的执行。
Pushgateway 很重要,因为 Cypress 的执行是短暂的。正常的 Prometheus scrap 在退出之前永远无法到达测试进程,因此结果会传递给中间人,然后由 Alloy 进行抓取。 Grafana 建议将此遥测视为测试的副作用,而不是测试结果的一部分:发布指标失败不应导致成功的测试运行失败。
该方法反映了工程团队处理质量数据的方式发生了更广泛的转变。测试结果通常存储在 CI 系统或测试管理平台中,主要用于报告,而生产遥测则被视为操作数据。将测试性能指标导出到相同的观察环境可以验证软件质量以及应用程序和基础设施行为。
这对于识别趋势而不是个别失败特别有用。有时失败的测试可能看起来是 CI 中的一个孤立问题。然而,持续的指标可能表明故障率正在增加,执行时间逐渐变差,或者故障与特定规范或部署周期有关。
该方法还特意基于现有的开源组件,而不是 Cypress 的专有监控机制:Cypress → Prometheus 指标 → Pushgateway → Grafana Alloy → Grafana Cloud。 Grafana 更广泛的观察平台支持与 Prometheus 兼容的指标,以及基于 OpenTelemetry 的报告、导航和其他遥测数据。
它不会取代专门的测试管理或 CI 报告工具。 Cypress Cloud、Allure、Xray 等平台和 GitHub Actions 等 CI 系统提供丰富的特定于测试的视图、历史性能数据或与更广泛的开发工作流程的集成。 Grafana 的方法有所不同:它将测试结果视为操作时间序列数据,并将其与遥测工程师已经用来了解系统行为的数据一起使用。
这种区别可以帮助团队超越简单的通过/失败报告。工程团队可以开始跟踪测试执行持续时间、失败率、测试频率和套件级性能等指标,作为更广泛的工程运行状况指标的一部分,而不仅仅是询问上次构建是否通过。
更大的含义是自动化测试捕获尽可能多有用的遥测数据。随着测试集变得越来越大、越来越分散,随着时间的推移存储和同步这些数据可以帮助团队识别测试退化和可靠性以及工程系统的可观察特征,而不是在 CI 工作完成时消失的指标。