SuperAPI AI 工具集

test-observability

测试与质量

查看项目

更新于 10-15 11:23

技能介绍

用途

Test Observability 用于把 Playwright 测试连接到可观测性栈(Grafana、Prometheus、Loki、Tempo),解决分布式系统中测试失败难以定位的问题。它提供四类能力:链路关联(从浏览器点击到后端再到数据库的完整 trace)、测试指标(通过率、耗时、不稳定性的仪表盘)、日志聚合(测试日志与应用日志并列查看)、失败分析(快速定位跨分布式系统的根因)。

架构

Playwright 测试将数据发送到 OTEL Collector,Collector 再分发到 Tempo(链路)、Loki(日志)和 Prometheus(指标),最终由 Grafana 展示测试仪表盘。

主要能力

OTEL Reporter 快速接入

安装依赖:

npm install playwright-opentelemetry-reporter @opentelemetry/sdk-node @opentelemetry/exporter-trace-otlp-http

在 playwright.config.ts 中配置 reporter:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: [
    ['html'],
    ['playwright-opentelemetry-reporter', {
      serviceName: 'playwright-tests',
      endpoint: process.env.OTEL_ENDPOINT || 'http://localhost:4318/v1/traces',
    }],
  ],
});

运行测试:

OTEL_ENDPOINT=http://localhost:4318/v1/traces npx playwright test

在 Grafana 中打开 Explore → Tempo,搜索 service.name = "playwright-tests",即可看到带耗时、状态和步骤的测试 span。

Tracetest 集成(进阶)

Tracetest 支持基于链路追踪的测试,可对分布式链路中的任意 span 进行断言。

安装:

npm install @tracetest/playwright

配置 reporter 后,可在测试中捕获 trace 并对后端 span 断言,例如校验 API 响应状态码、数据库查询耗时、支付服务状态等。

Grafana 仪表盘

可导入 dashboards/test-results-dashboard.json,选择 Prometheus 和 Tempo 数据源。关键面板包括:通过率、测试耗时 p95、失败测试、不稳定测试(重试次数 > 1)、最慢测试 topk(10)。

自定义指标

可通过 @opentelemetry/api 的 metrics 创建直方图和计数器,在测试中记录自定义指标,例如 test.duration 和 test.count。

Railway 集成

可连接已有的 Railway 可观测性栈,通过环境变量 OTEL_EXPORTER_OTLP_ENDPOINT 和 OTEL_SERVICE_NAME 配置,并可用 curl 验证 Collector 是否接收数据。

日志关联

可将测试日志通过 Winston + OTEL 发送到 Loki,与 trace 并列查看。在 Grafana 中查询 {service="playwright-tests"} 并按 error 过滤。

告警

提供 Prometheus 告警规则示例,例如测试失败率超过 10%、测试耗时 p95 超过 30 秒;也可在 Grafana 面板中创建告警并通知 Slack、邮件或 PagerDuty。

使用方式

典型调试流程:测试在 CI 中失败后,在 Grafana → Explore → Tempo 中按 service.name 和测试名查询 trace,分析从浏览器点击到后端各服务的调用链,定位根因。

适用场景

适用于端到端测试跨浏览器、API、数据库和多个服务的场景,尤其是需要快速定位分布式系统测试失败根因、度量测试健康度、关联测试日志与链路时。

限制

资料未提供具体的收费、价格、平台支持范围或性能上限等信息。