mcpField
Q
qe-testability-scoring

qe-testability-scoring

github.com/proffesor-for-testing测试与质量51983 次安装今天更新
代码仓库

关于 qe-testability-scoring

qe-testability-scoring 是用于评估网站可测试性的技能,面向质量工程师和测试团队。它依据 10 项原则评分,生成带雷达图的 HTML 报告,并按影响和投入排列改进建议。

主要功能

  1. 01按 10 项原则自动评估
  2. 02生成 JSON 结果和 HTML 雷达图报告
  3. 03按影响与投入排序改进建议
  4. 04支持脚本、环境变量和程序化调用
  5. 05可选结合 Vibium 补充稳定性指标

适用场景

  1. 01评估网站的可测试性
  2. 02在 CI/CD 中运行质量评估
  3. 03跟踪不同时间的评估结果
  4. 04结合 QX 分析制定改进方向

MCP 相关

这是一个评估技能,不是 MCP 服务。README 提及可选的 Vibium MCP 集成,用于测量元素交互和稳定性等指标。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-testability-scoring

安装后在 Claude Code 中输入/qe-testability-scoring确认已加载。

详细介绍

可测试性评分

<default_to_action> 评估可测试性时:

  1. 针对目标 URL 运行评估
  2. 自动分析全部 10 项原则
  3. 生成带雷达图的 HTML 报告
  4. 根据影响 / 工作量确定改进优先级
  5. 与 QX Partner 集成,获得全面视图

快速评估:

# Run assessment on any URL
TEST_URL='https://example.com/' npx playwright test tests/testability-scoring/testability-scoring.spec.js --project=chromium --workers=1

# Or use shell script wrapper
.claude/skills/testability-scoring/scripts/run-assessment.sh https://example.com/

10 项原则一览:

原则权重关键问题
可观测性15%我们能看到正在发生什么吗?
可控性15%我们能控制应用程序吗?
算法简洁性10%行为是否可预测?
算法透明性10%我们能理解它的功能吗?
算法稳定性10%行为是否保持一致?
可解释性10%界面是否易于理解?
无缺陷性10%它的错误有多少?
简洁性10%组件大小是否合适?
可分解性5%我们能单独测试各个部分吗?
相似性5%技术栈是否熟悉?

等级标准:

  • A(90-100):可测试性出色
  • B(80-89):可测试性良好
  • C(70-79):可测试性合格
  • D(60-69):低于平均水平
  • F(0-59):可测试性较差 </default_to_action>

快速参考卡

运行评估
方法命令适用场景
Shell 脚本./scripts/run-assessment.sh URL一次性评估
ENV 覆盖TEST_URL='URL' npx playwright test...CI/CD 集成
配置文件更新 tests/testability-scoring/config.js重复运行
原则详情
高权重(各占 15%)
原则衡量内容指标
可观测性状态可见性、日志记录、监控控制台输出、网络跟踪、错误可见性
可控性输入控制、状态操纵API 访问、测试数据注入、确定性
中等权重(各占 10%)
原则衡量内容指标
简洁性可预测的行为清晰的输入 / 输出关系、低复杂度
透明性理解系统的功能流程可见、代码易读
稳定性行为一致性抗变更能力、可维护性
可解释性界面易懂程度优质文档、语义结构、帮助文本
无缺陷性无错误运行控制台错误、警告、运行时问题
简洁性组件大小元素数量、脚本膨胀、页面复杂度
低权重(各占 5%)
原则衡量内容指标
可分解性隔离测试组件分离、模块化设计
相似性技术熟悉度标准框架、已知模式

评估工作流

1. Navigate to URL → 2. Collect Metrics → 3. Score Principles
                                              ↓
4. Generate JSON ← 5. Calculate Grades ← 6. Apply Weights
         ↓
7. Generate HTML Report with Radar Chart
         ↓
8. Open in Browser (auto-opens)
输出文件
tests/reports/
├── testability-results-<timestamp>.json  # Raw data
├── testability-report-<timestamp>.html   # Visual report
└── latest.json                           # Symlink

集成示例

CI/CD 集成
# GitHub Actions
- name: Testability Assessment
  run: |
    timeout 180 .claude/skills/testability-scoring/scripts/run-assessment.sh ${{ env.APP_URL }}

- name: Upload Reports
  uses: actions/upload-artifact@v3
  with:
    name: testability-reports
    path: tests/reports/testability-*.html
QX Partner 集成
// Combine testability with QX analysis
const qxAnalysis = await Task("QX Analysis", {
  target: 'https://example.com',
  integrateTestability: true
}, "qx-partner");

// Returns combined insights:
// - QX Score: 78/100
// - Testability Integration: Observability 72/100
// - Combined Insight: Low observability may mask UX issues
编程方式使用
import { runTestabilityAssessment } from './testability';

const results = await runTestabilityAssessment('https://example.com');
console.log(`Overall: ${results.overallScore}/100 (${results.grade})`);
console.log('Recommendations:', results.recommendations);

Agent 集成

// Run testability assessment
const assessment = await Task("Testability Assessment", {
  url: 'https://example.com',
  generateReport: true,
  openBrowser: true
}, "qe-quality-analyzer");

// Use with QX Partner for holistic analysis
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 稳定性(30s 超时,100ms 轮询)
可控性元素交互成功率通过 MCP 验证自动化就绪情况
稳定性截图一致性检测视觉回归,判断布局稳定性
可解释性元素属性提取ARIA 标签、语义化 HTML 验证
何时使用 Vibium

✅ 使用 Vibium 的场景:

  • 元素稳定性指标(自动等待时长分析)
  • 视觉一致性检查(截图对比)
  • 原生 MCP 的 AI Agent 集成
  • 轻量级 Docker 镜像(400MB,而非 1.2GB)

❌ 使用 Playwright 的场景:

  • 控制台错误检测(Vibium V1 缺少控制台 API)
  • 网络性能指标(BiDi 网络 API 将在 V2 中推出)
  • 全面的浏览器覆盖(Firefox、Safari)
  • 经生产验证的稳定性(Vibium V1 于 2024 年 12 月发布)
混合评估示例
// Testability assessment using both engines
const assessment = {
  // Playwright: Comprehensive metrics
  playwright: await runPlaywrightAssessment(url),

  // Vibium: Stability metrics
  vibium: {
    elementStability: await measureAutoWaitDuration(url),
    visualConsistency: await compareScreenshots(url),
    accessibilityAttributes: await extractARIALabels(url)
  }
};

// Enhanced Observability Score
const observability =
  (assessment.playwright.consoleErrors * 0.6) +
  (assessment.vibium.elementStability * 0.4);
用于可测试性的 Vibium MCP 工具
// 1. Element Stability Measurement
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;
// Lower duration = better stability

// 2. Visual Consistency Check
const screenshot1 = await browser_screenshot();
await browser_navigate({ url }); // Reload
const screenshot2 = await browser_screenshot();
const visualDiff = compareImages(screenshot1.png, screenshot2.png);
// Lower diff = better stability

// 3. Accessibility Attribute Extraction
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
    • 经验证具备生产环境稳定性
    • 社区采用率提高

Agent 协作提示

内存命名空间
aqe/testability/
├── assessments/*       - Assessment results by URL
├── historical/*        - Historical scores for trend analysis
├── recommendations/*   - Improvement recommendations
├── integration/*       - QX integration data
└── vibium/*           - Vibium-specific metrics (optional)
Fleet 协作
const testabilityFleet = await FleetManager.coordinate({
  strategy: 'testability-assessment',
  agents: [
    'qe-quality-analyzer',  // Primary assessment
    'qx-partner',           // UX integration
    'qe-visual-tester'      // Visual validation
  ],
  topology: 'sequential'
});

常见问题与解决方案

问题解决方案
测试超时增加超时时间:timeout 300 ./scripts/run-assessment.sh URL
结果不完整检查控制台错误,增加网络超时时间
报告无法打开使用 AUTO_OPEN=false,然后手动打开
配置未更新改用 TEST_URL 环境变量
Vibium 不可用通过 claude mcp add vibium -- npx -y vibium 安装(可选)
混合模式出错Vibium 是可选的;不使用它也能进行评估

相关技能


致谢与参考资料

框架起源
实现
Vibium 资源

请记住

可测试性是一项投资,而非事后补救。

良好的可测试性:

  • 缩短调试时间
  • 加快反馈循环
  • 让缺陷更容易被发现
  • 支持持续测试

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

评论

支持 Markdown