testability-scoring
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTestability Scoring
可测试性评分
<default_to_action>
When assessing testability:
- RUN assessment against target URL
- ANALYZE all 10 principles automatically
- GENERATE HTML report with radar chart
- PRIORITIZE improvements by impact/effort
- INTEGRATE with QX Partner for holistic view
Quick Assessment:
bash
undefined<default_to_action>
评估可测试性时:
- 针对目标URL运行评估
- 自动分析全部10项原则
- 生成带雷达图的HTML报告
- 按影响/工作量优先级排序改进点
- 与QX Partner集成以获得全面视图
快速评估:
bash
undefinedRun assessment on any URL
对任意URL运行评估
TEST_URL='https://example.com/' npx playwright test tests/testability-scoring/testability-scoring.spec.js --project=chromium --workers=1
TEST_URL='https://example.com/' npx playwright test tests/testability-scoring/testability-scoring.spec.js --project=chromium --workers=1
Or use shell script wrapper
或使用Shell脚本封装
.claude/skills/testability-scoring/scripts/run-assessment.sh https://example.com/
**The 10 Principles at a Glance:**
| Principle | Weight | Key Question |
|-----------|--------|--------------|
| **Observability** | 15% | Can we see what's happening? |
| **Controllability** | 15% | Can we control the application? |
| **Algorithmic Simplicity** | 10% | Are behaviors predictable? |
| **Algorithmic Transparency** | 10% | Can we understand what it does? |
| **Algorithmic Stability** | 10% | Does behavior remain consistent? |
| **Explainability** | 10% | Is the interface understandable? |
| **Unbugginess** | 10% | How error-free is it? |
| **Smallness** | 10% | Are components appropriately sized? |
| **Decomposability** | 5% | Can we test parts in isolation? |
| **Similarity** | 5% | Is the tech stack familiar? |
**Grade Scale:**
- **A (90-100)**: Excellent testability
- **B (80-89)**: Good testability
- **C (70-79)**: Adequate testability
- **D (60-69)**: Below average
- **F (0-59)**: Poor testability
</default_to_action>.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>Quick Reference Card
快速参考卡片
Running Assessments
运行评估
| Method | Command | When to Use |
|---|---|---|
| Shell Script | | One-time assessment |
| ENV Override | | CI/CD integration |
| Config File | Update | Repeated runs |
| 方式 | 命令 | 使用场景 |
|---|---|---|
| Shell脚本 | | 一次性评估 |
| 环境变量覆盖 | | CI/CD集成 |
| 配置文件 | 更新 | 重复运行 |
Principle Details
原则详情
High Weight (15% each)
高权重(各15%)
| Principle | Measures | Indicators |
|---|---|---|
| Observability | State visibility, logging, monitoring | Console output, network tracking, error visibility |
| Controllability | Input control, state manipulation | API access, test data injection, determinism |
| 原则 | 衡量维度 | 指标 |
|---|---|---|
| 可观测性 | 状态可见性、日志、监控 | 控制台输出、网络追踪、错误可见性 |
| 可控制性 | 输入控制、状态操作 | API访问、测试数据注入、确定性 |
Medium Weight (10% each)
中权重(各10%)
| Principle | Measures | Indicators |
|---|---|---|
| Simplicity | Predictable behavior | Clear I/O relationships, low complexity |
| Transparency | Understanding what system does | Visible processes, readable code |
| Stability | Consistent behavior | Change resilience, maintainability |
| Explainability | Interface understanding | Good docs, semantic structure, help text |
| Unbugginess | Error-free operation | Console errors, warnings, runtime issues |
| Smallness | Component size | Element count, script bloat, page complexity |
| 原则 | 衡量维度 | 指标 |
|---|---|---|
| 简洁性 | 行为可预测性 | 清晰的I/O关系、低复杂度 |
| 透明性 | 系统功能可理解度 | 可见流程、可读代码 |
| 稳定性 | 行为一致性 | 变更适应性、可维护性 |
| 可解释性 | 界面可理解度 | 完善文档、语义化结构、帮助文本 |
| 低缺陷性 | 无错误运行能力 | 控制台错误、警告、运行时问题 |
| 轻量化 | 组件规模 | 元素数量、脚本冗余、页面复杂度 |
Low Weight (5% each)
低权重(各5%)
| Principle | Measures | Indicators |
|---|---|---|
| Decomposability | Isolation testing | Component separation, modular design |
| Similarity | Technology familiarity | Standard frameworks, known patterns |
| 原则 | 衡量维度 | 指标 |
|---|---|---|
| 可分解性 | 孤立测试能力 | 组件分离、模块化设计 |
| 相似性 | 技术熟悉度 | 标准框架、已知模式 |
Assessment Workflow
评估流程
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)1. 导航至URL → 2. 收集指标 → 3. 为各项原则评分
↓
4. 生成JSON ← 5. 计算等级 ← 6. 应用权重
↓
7. 生成带雷达图的HTML报告
↓
8. 在浏览器中打开(自动打开)Output Files
输出文件
tests/reports/
├── testability-results-<timestamp>.json # Raw data
├── testability-report-<timestamp>.html # Visual report
└── latest.json # Symlinktests/reports/
├── testability-results-<timestamp>.json # 原始数据
├── testability-report-<timestamp>.html # 可视化报告
└── latest.json # 符号链接Integration Examples
集成示例
CI/CD Integration
CI/CD集成
yaml
undefinedyaml
undefinedGitHub Actions
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
undefined-
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
undefinedQX Partner Integration
QX Partner集成
typescript
// 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 issuestypescript
// 将可测试性与QX分析结合
const qxAnalysis = await Task("QX Analysis", {
target: 'https://example.com',
integrateTestability: true
}, "qx-partner");
// 返回综合洞察:
// - QX Score: 78/100
// - Testability Integration: Observability 72/100
// - Combined Insight: Low observability may mask UX issuesProgrammatic Usage
程序化调用
typescript
import { runTestabilityAssessment } from './testability';
const results = await runTestabilityAssessment('https://example.com');
console.log(`Overall: ${results.overallScore}/100 (${results.grade})`);
console.log('Recommendations:', results.recommendations);typescript
import { runTestabilityAssessment } from './testability';
const results = await runTestabilityAssessment('https://example.com');
console.log(`总体评分: ${results.overallScore}/100 (${results.grade})`);
console.log('建议:', results.recommendations);Agent Integration
Agent集成
typescript
// 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");typescript
// 运行可测试性评估
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");Agent Coordination Hints
Agent协调提示
Memory Namespace
内存命名空间
aqe/testability/
├── assessments/* - Assessment results by URL
├── historical/* - Historical scores for trend analysis
├── recommendations/* - Improvement recommendations
└── integration/* - QX integration dataaqe/testability/
├── assessments/* - 按URL分类的评估结果
├── historical/* - 用于趋势分析的历史评分
├── recommendations/* - 改进建议
└── integration/* - QX集成数据Fleet Coordination
集群协调
typescript
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'
});typescript
const testabilityFleet = await FleetManager.coordinate({
strategy: 'testability-assessment',
agents: [
'qe-quality-analyzer', // 主评估
'qx-partner', // UX集成
'qe-visual-tester' // 视觉验证
],
topology: 'sequential'
});Common Issues & Solutions
常见问题与解决方案
| Issue | Solution |
|---|---|
| Tests timing out | Increase timeout: |
| Partial results | Check console errors, increase network timeout |
| Report not opening | Use |
| Config not updating | Use |
| 问题 | 解决方案 |
|---|---|
| 测试超时 | 增加超时时间: |
| 结果不完整 | 检查控制台错误,增加网络超时时间 |
| 报告未打开 | 使用 |
| 配置未更新 | 改用 |
Related Skills
相关技能
- accessibility-testing - WCAG compliance (overlaps with Explainability)
- visual-testing-advanced - UI consistency
- performance-testing - Load time metrics
- accessibility-testing - WCAG合规性(与可解释性有重叠)
- visual-testing-advanced - UI一致性
- performance-testing - 加载时间指标
Credits & References
致谢与参考
Framework Origin
框架起源
- Heuristics for Software Testability by James Bach and Michael Bolton
- Available at: https://www.satisfice.com/download/heuristics-of-software-testability
- 软件可测试性启发式原则 作者:James Bach 和 Michael Bolton
- 地址:https://www.satisfice.com/download/heuristics-of-software-testability
Implementation
实现基础
- Based on https://github.com/fndlalit/testability-scorer (contributed by @fndlalit)
- Playwright v1.49.0+ with AI capabilities
- Chart.js for radar visualizations
- 基于 https://github.com/fndlalit/testability-scorer(由 @fndlalit 贡献)
- 带AI功能的Playwright v1.49.0+
- 用于雷达图可视化的Chart.js
Remember
注意事项
Testability is an investment, not an afterthought.
Good testability:
- Reduces debugging time
- Enables faster feedback loops
- Makes defects easier to find
- Supports continuous testing
Low scores = High risk. Prioritize improvements by weight × impact.
可测试性是一种投资,而非事后补救措施。
良好的可测试性:
- 减少调试时间
- 实现更快的反馈循环
- 使缺陷更容易被发现
- 支持持续测试
低评分=高风险。按权重×影响优先级排序改进点。