可测试性评估Skill testability-scoring

本技能是一个基于AI的软件可测试性评估工具,采用10个固有可测试性原则,集成Playwright和可选Vibium,自动分析Web应用程序的测试准备度,生成可视化报告并提供改进建议。关键词:可测试性、AI评估、Playwright、Vibium、测试自动化、软件质量。

测试 0 次安装 0 次浏览 更新于 3/9/2026

名称: 可测试性评分 描述: “基于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集成: 可选

可测试性评分

<默认行动> 当评估可测试性时:

  1. 运行评估针对目标URL
  2. 自动分析所有10个原则
  3. 生成带雷达图的HTML报告
  4. 按影响/努力优先改进
  5. 与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是可选的;评估无需它也能工作

相关技能


致谢与参考

框架起源

实现

Vibium资源


记住

可测试性是一项投资,不是事后考虑。

良好可测试性:

  • 减少调试时间
  • 支持更快的反馈循环
  • 使缺陷更容易找到
  • 支持持续测试

低分数 = 高风险。按权重 × 影响优先改进。