testability-scoring

安装量: 52
排名: #14200

安装

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

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:

# 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/

The 10 Principles at a Glance:

| 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

Quick Reference Card

Running Assessments

| Shell Script | ./scripts/run-assessment.sh URL | One-time assessment

| ENV Override | TEST_URL='URL' npx playwright test... | CI/CD integration

| Config File | Update tests/testability-scoring/config.js | Repeated runs

Principle Details

High Weight (15% each)

| Observability | State visibility, logging, monitoring | Console output, network tracking, error visibility

| Controllability | Input control, state manipulation | API access, test data injection, determinism

Medium Weight (10% each)

| 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

Low Weight (5% each)

| 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)

Output Files

tests/reports/
├── testability-results-<timestamp>.json  # Raw data
├── testability-report-<timestamp>.html   # Visual report
└── latest.json                           # Symlink

Integration Examples

CI/CD Integration

# 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 Integration

// 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

Programmatic Usage

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 Integration

// 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 Integration (Optional)

Overview

Vibium browser automation can be used alongside Playwright for enhanced testability assessment. While Playwright remains the primary engine, Vibium offers complementary capabilities for certain metrics.

Installation:

claude mcp add vibium -- npx -y vibium

Vibium-Enhanced Metrics

| Observability | Auto-wait duration tracking | Measures DOM stability (30s timeout, 100ms polling)

| Controllability | Element interaction success rate | Validates automation readiness via MCP

| Stability | Screenshot consistency | Visual regression detection for layout stability

| Explainability | Element attribute extraction | ARIA labels, semantic HTML validation

When to Use Vibium

USE Vibium for:

  • Element stability metrics (auto-wait duration analysis)

  • Visual consistency checks (screenshot comparison)

  • MCP-native AI agent integration

  • Lightweight Docker images (400MB vs 1.2GB)

USE Playwright for:

  • Console error detection (Vibium V1 lacks console API)

  • Network performance metrics (BiDi network APIs coming in V2)

  • Comprehensive browser coverage (Firefox, Safari)

  • Production-proven stability (Vibium V1 released Dec 2024)

Hybrid Assessment Example

// 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 Tools for Testability

// 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;

Migration Strategy

Current (V2.2): Hybrid approach

  • Playwright: Primary engine for all 10 principles

  • Vibium: Optional enhancement for stability metrics

Future (V3.0): When Vibium V2 ships

  • Evaluate Vibium as primary engine if:

Console/Network APIs available

  • Production stability proven

  • Community adoption increases

Agent Coordination Hints

Memory Namespace

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 Coordination

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'
});

Common Issues & Solutions

| Tests timing out | Increase timeout: timeout 300 ./scripts/run-assessment.sh URL

| Partial results | Check console errors, increase network timeout

| Report not opening | Use AUTO_OPEN=false, open manually

| Config not updating | Use TEST_URL env var instead

| Vibium not available | Install via claude mcp add vibium -- npx -y vibium (optional)

| Hybrid mode errors | Vibium is optional; assessments work without it

Credits & References

Framework Origin

Implementation

Vibium Resources

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.

返回排行榜