testability-scoring

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Testability Scoring

可测试性评分

<default_to_action> When assessing testability:
  1. RUN assessment against target URL
  2. ANALYZE all 10 principles automatically
  3. GENERATE HTML report with radar chart
  4. PRIORITIZE improvements by impact/effort
  5. INTEGRATE with QX Partner for holistic view
Quick Assessment:
bash
undefined
<default_to_action> 评估可测试性时:
  1. 针对目标URL运行评估
  2. 自动分析全部10项原则
  3. 生成带雷达图的HTML报告
  4. 按影响/工作量优先级排序改进点
  5. 与QX Partner集成以获得全面视图
快速评估:
bash
undefined

Run 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

运行评估

MethodCommandWhen to Use
Shell Script
./scripts/run-assessment.sh URL
One-time assessment
ENV Override
TEST_URL='URL' npx playwright test...
CI/CD integration
Config FileUpdate
tests/testability-scoring/config.js
Repeated runs
方式命令使用场景
Shell脚本
./scripts/run-assessment.sh URL
一次性评估
环境变量覆盖
TEST_URL='URL' npx playwright test...
CI/CD集成
配置文件更新
tests/testability-scoring/config.js
重复运行

Principle Details

原则详情

High Weight (15% each)

高权重(各15%)

PrincipleMeasuresIndicators
ObservabilityState visibility, logging, monitoringConsole output, network tracking, error visibility
ControllabilityInput control, state manipulationAPI access, test data injection, determinism
原则衡量维度指标
可观测性状态可见性、日志、监控控制台输出、网络追踪、错误可见性
可控制性输入控制、状态操作API访问、测试数据注入、确定性

Medium Weight (10% each)

中权重(各10%)

PrincipleMeasuresIndicators
SimplicityPredictable behaviorClear I/O relationships, low complexity
TransparencyUnderstanding what system doesVisible processes, readable code
StabilityConsistent behaviorChange resilience, maintainability
ExplainabilityInterface understandingGood docs, semantic structure, help text
UnbugginessError-free operationConsole errors, warnings, runtime issues
SmallnessComponent sizeElement count, script bloat, page complexity
原则衡量维度指标
简洁性行为可预测性清晰的I/O关系、低复杂度
透明性系统功能可理解度可见流程、可读代码
稳定性行为一致性变更适应性、可维护性
可解释性界面可理解度完善文档、语义化结构、帮助文本
低缺陷性无错误运行能力控制台错误、警告、运行时问题
轻量化组件规模元素数量、脚本冗余、页面复杂度

Low Weight (5% each)

低权重(各5%)

PrincipleMeasuresIndicators
DecomposabilityIsolation testingComponent separation, modular design
SimilarityTechnology familiarityStandard 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                           # Symlink

tests/reports/
├── testability-results-<timestamp>.json  # 原始数据
├── testability-report-<timestamp>.html   # 可视化报告
└── latest.json                           # 符号链接

Integration Examples

集成示例

CI/CD Integration

CI/CD集成

yaml
undefined
yaml
undefined

GitHub 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
undefined

QX 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 issues
typescript
// 将可测试性与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 issues

Programmatic 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 data
aqe/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

常见问题与解决方案

IssueSolution
Tests timing outIncrease timeout:
timeout 300 ./scripts/run-assessment.sh URL
Partial resultsCheck console errors, increase network timeout
Report not openingUse
AUTO_OPEN=false
, open manually
Config not updatingUse
TEST_URL
env var instead

问题解决方案
测试超时增加超时时间:
timeout 300 ./scripts/run-assessment.sh URL
结果不完整检查控制台错误,增加网络超时时间
报告未打开使用
AUTO_OPEN=false
,手动打开
配置未更新改用
TEST_URL
环境变量

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

框架起源

Implementation

实现基础



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.
可测试性是一种投资,而非事后补救措施。
良好的可测试性:
  • 减少调试时间
  • 实现更快的反馈循环
  • 使缺陷更容易被发现
  • 支持持续测试
低评分=高风险。按权重×影响优先级排序改进点。