名称: 可测试性评分 描述: “基于AI的可测试性评估,使用10个固有可测试性原则,集成Playwright和可选的Vibium。评估Web应用程序的观察性、可控性、算法简单性、透明性、稳定性、可解释性、无bug性、小巧性、可分解性和相似性。适用于评估软件可测试性、评估测试准备度、识别可测试性改进或生成可测试性报告。” 类别: 测试方法论 优先级: 高 令牌估计: 1100 代理: [qe-quality-analyzer, qx-partner, qe-visual-tester] 实现状态: 优化 优化版本: 2.2 最后优化: 2025-12-12 依赖: [] 快速参考卡: true 标签: [可测试性, 评分, playwright, vibium, 评估, 10-原则, 固有-可测试性, james-bach, michael-bolton] 贡献者: “@fndlalit” vibium集成: 可选
可测试性评分
<默认行动> 当评估可测试性时:
- 运行评估针对目标URL
- 自动分析所有10个原则
- 生成带雷达图的HTML报告
- 按影响/努力优先改进
- 与QX Partner集成以获得整体视图
快速评估:
# 在任何URL上运行评估
TEST_URL='https://example.com/' npx playwright test tests/testability-scoring/testability-scoring.spec.js --project=chromium --workers=1
# 或使用shell脚本包装器
.claude/skills/testability-scoring/scripts/run-assessment.sh https://example.com/
10个原则一览:
| 原则 | 权重 | 关键问题 |
|---|---|---|
| 观察性 | 15% | 我们能看见发生了什么吗? |
| 可控性 | 15% | 我们能控制应用程序吗? |
| 算法简单性 | 10% | 行为可预测吗? |
| 算法透明性 | 10% | 我们能理解它在做什么吗? |
| 算法稳定性 | 10% | 行为保持一致吗? |
| 可解释性 | 10% | 界面可理解吗? |
| 无bug性 | 10% | 它有多无错误? |
| 小巧性 | 10% | 组件大小合适吗? |
| 可分解性 | 5% | 我们能隔离测试部分吗? |
| 相似性 | 5% | 技术栈熟悉吗? |
评分等级:
- A (90-100): 优秀可测试性
- B (80-89): 良好可测试性
- C (70-79): 足够可测试性
- D (60-69): 低于平均
- F (0-59): 差可测试性 </默认行动>
快速参考卡
运行评估
| 方法 | 命令 | 何时使用 |
|---|---|---|
| Shell脚本 | ./scripts/run-assessment.sh URL |
一次性评估 |
| ENV覆盖 | TEST_URL='URL' npx playwright test... |
CI/CD集成 |
| 配置文件 | 更新 tests/testability-scoring/config.js |
重复运行 |
原则详情
高权重 (各15%)
| 原则 | 测量 | 指标 |
|---|---|---|
| 观察性 | 状态可见性、日志记录、监控 | 控制台输出、网络跟踪、错误可见性 |
| 可控性 | 输入控制、状态操纵 | API访问、测试数据注入、确定性 |
中权重 (各10%)
| 原则 | 测量 | 指标 |
|---|---|---|
| 简单性 | 可预测行为 | 清晰的I/O关系、低复杂性 |
| 透明性 | 理解系统做什么 | 可见过程、可读代码 |
| 稳定性 | 一致行为 | 变化弹性、可维护性 |
| 可解释性 | 界面理解 | 良好文档、语义结构、帮助文本 |
| 无bug性 | 无错误操作 | 控制台错误、警告、运行时问题 |
| 小巧性 | 组件大小 | 元素数量、脚本臃肿、页面复杂性 |
低权重 (各5%)
| 原则 | 测量 | 指标 |
|---|---|---|
| 可分解性 | 隔离测试 | 组件分离、模块化设计 |
| 相似性 | 技术熟悉度 | 标准框架、已知模式 |
评估工作流
1. 导航到URL → 2. 收集指标 → 3. 评分原则
↓
4. 生成JSON ← 5. 计算等级 ← 6. 应用权重
↓
7. 生成带雷达图的HTML报告
↓
8. 在浏览器中打开(自动打开)
输出文件
tests/reports/
├── testability-results-<timestamp>.json # 原始数据
├── testability-report-<timestamp>.html # 可视化报告
└── latest.json # 符号链接
集成示例
CI/CD集成
# GitHub Actions
- name: 可测试性评估
run: |
timeout 180 .claude/skills/testability-scoring/scripts/run-assessment.sh ${{ env.APP_URL }}
- name: 上传报告
uses: actions/upload-artifact@v3
with:
name: testability-reports
path: tests/reports/testability-*.html
QX Partner集成
// 将可测试性与QX分析结合
const qxAnalysis = await Task("QX Analysis", {
target: 'https://example.com',
integrateTestability: true
}, "qx-partner");
// 返回组合洞察:
// - QX分数: 78/100
// - 可测试性集成: 观察性 72/100
// - 组合洞察: 低观察性可能掩盖UX问题
程序化使用
import { runTestabilityAssessment } from './testability';
const results = await runTestabilityAssessment('https://example.com');
console.log(`总体: ${results.overallScore}/100 (${results.grade})`);
console.log('推荐:', results.recommendations);
代理集成
// 运行可测试性评估
const assessment = await Task("Testability Assessment", {
url: 'https://example.com',
generateReport: true,
openBrowser: true
}, "qe-quality-analyzer");
// 与QX Partner结合进行整体分析
const qxReport = await Task("Full QX Analysis", {
target: 'https://example.com',
integrateTestability: true,
detectOracleProblems: true
}, "qx-partner");
Vibium集成(可选)
概述
Vibium浏览器自动化可以与Playwright一起使用以增强可测试性评估。虽然Playwright是主要引擎,但Vibium为某些指标提供补充能力。
安装:
claude mcp add vibium -- npx -y vibium
Vibium增强指标
| 原则 | Vibium增强 | 好处 |
|---|---|---|
| 观察性 | 自动等待持续时间跟踪 | 测量DOM稳定性(30秒超时,100毫秒轮询) |
| 可控性 | 元素交互成功率 | 通过MCP验证自动化准备度 |
| 稳定性 | 截图一致性 | 视觉回归检测以评估布局稳定性 |
| 可解释性 | 元素属性提取 | ARIA标签、语义HTML验证 |
何时使用Vibium
✅ 使用Vibium用于:
- 元素稳定性指标(自动等待持续时间分析)
- 视觉一致性检查(截图比较)
- MCP原生AI代理集成
- 轻量级Docker镜像(400MB vs 1.2GB)
❌ 使用Playwright用于:
- 控制台错误检测(Vibium V1缺乏控制台API)
- 网络性能指标(BiDi网络API即将在V2中提供)
- 全面浏览器覆盖(Firefox、Safari)
- 生产验证的稳定性(Vibium V1发布于2024年12月)
混合评估示例
// 使用两个引擎进行可测试性评估
const assessment = {
// Playwright: 全面指标
playwright: await runPlaywrightAssessment(url),
// Vibium: 稳定性指标
vibium: {
elementStability: await measureAutoWaitDuration(url),
visualConsistency: await compareScreenshots(url),
accessibilityAttributes: await extractARIALabels(url)
}
};
// 增强观察性分数
const observability =
(assessment.playwright.consoleErrors * 0.6) +
(assessment.vibium.elementStability * 0.4);
Vibium MCP工具用于可测试性
// 1. 元素稳定性测量
const browser = await browser_launch();
await browser_navigate({ url });
const startTime = Date.now();
const element = await browser_find({ selector: ".critical-element" });
const autoWaitDuration = Date.now() - startTime;
// 持续时间越低 = 稳定性越好
// 2. 视觉一致性检查
const screenshot1 = await browser_screenshot();
await browser_navigate({ url }); // 重新加载
const screenshot2 = await browser_screenshot();
const visualDiff = compareImages(screenshot1.png, screenshot2.png);
// 差异越低 = 稳定性越好
// 3. 可访问性属性提取
const elements = await browser_find({ selector: "button, a, input" });
const ariaLabels = elements.map(el => el.attributes["aria-label"]);
const semanticScore = (ariaLabels.filter(Boolean).length / elements.length) * 100;
迁移策略
当前 (V2.2): 混合方法
- Playwright: 所有10个原则的主要引擎
- Vibium: 稳定性指标的可选增强
未来 (V3.0): 当Vibium V2发布时
- 评估Vibium作为主要引擎如果:
- 控制台/网络API可用
- 生产稳定性得到证明
- 社区采用增加
代理协调提示
内存命名空间
aqe/testability/
├── assessments/* - 按URL的评估结果
├── historical/* - 趋势分析的历史分数
├── recommendations/* - 改进推荐
├── integration/* - QX集成数据
└── vibium/* - Vibium特定指标(可选)
舰队协调
const testabilityFleet = await FleetManager.coordinate({
strategy: 'testability-assessment',
agents: [
'qe-quality-analyzer', // 主要评估
'qx-partner', // UX集成
'qe-visual-tester' // 视觉验证
],
topology: 'sequential'
});
常见问题与解决方案
| 问题 | 解决方案 |
|---|---|
| 测试超时 | 增加超时: timeout 300 ./scripts/run-assessment.sh URL |
| 部分结果 | 检查控制台错误,增加网络超时 |
| 报告未打开 | 使用 AUTO_OPEN=false,手动打开 |
| 配置未更新 | 使用 TEST_URL 环境变量代替 |
| Vibium不可用 | 通过 claude mcp add vibium -- npx -y vibium 安装(可选) |
| 混合模式错误 | Vibium是可选的;评估无需它也能工作 |
相关技能
- accessibility-testing - WCAG合规性(与可解释性重叠)
- visual-testing-advanced - UI一致性
- performance-testing - 加载时间指标
致谢与参考
框架起源
- 软件可测试性启发式 由 James Bach 和 Michael Bolton 提出
- 可访问于: https://www.satisfice.com/download/heuristics-of-software-testability
实现
- 基于 https://github.com/fndlalit/testability-scorer (贡献者 @fndlalit)
- Playwright v1.49.0+ 与AI能力(主要引擎)
- Vibium v1.0+ 与MCP集成(可选增强)
- Chart.js 用于雷达可视化
Vibium资源
- GitHub: https://github.com/VibiumDev/vibium
- MCP集成:
claude mcp add vibium -- npx -y vibium - 由 Jason Huggins 创建(Selenium/Appium的创造者)
记住
可测试性是一项投资,不是事后考虑。
良好可测试性:
- 减少调试时间
- 支持更快的反馈循环
- 使缺陷更容易找到
- 支持持续测试
低分数 = 高风险。按权重 × 影响优先改进。