home / skills / proffesor-for-testing / agentic-qe / regression-testing

regression-testing skill

/v3/assets/skills/regression-testing

This skill streamlines regression testing by analyzing changes, selecting risk-based tests, and optimizing execution for rapid, reliable feedback.

npx playbooks add skill proffesor-for-testing/agentic-qe --skill regression-testing

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
6.2 KB
---
name: regression-testing
description: "Strategic regression testing with test selection, impact analysis, and continuous regression management. Use when verifying fixes don't break existing functionality, planning regression suites, or optimizing test execution for faster feedback."
category: specialized-testing
priority: high
tokenEstimate: 1000
agents: [qe-regression-risk-analyzer, qe-test-executor, qe-coverage-analyzer]
implementation_status: optimized
optimization_version: 1.0
last_optimized: 2025-12-02
dependencies: []
quick_reference_card: true
tags: [regression, test-selection, impact-analysis, ci-cd, change-based, risk-based]
---

# Regression Testing

<default_to_action>
When verifying changes don't break existing functionality:
1. ANALYZE what changed (git diff, impact analysis)
2. SELECT tests based on change + risk (not everything)
3. RUN in priority order (smoke → selective → full)
4. OPTIMIZE execution (parallel, sharding)
5. MONITOR suite health (flakiness, execution time)

**Quick Regression Strategy:**
- Per-commit: Smoke + changed code tests (5-10 min)
- Nightly: Extended regression (30-60 min)
- Pre-release: Full regression (2-4 hours)

**Critical Success Factors:**
- Smart selection catches 90% of regressions in 10% of time
- Flaky tests waste more time than they save
- Every production bug becomes a regression test
</default_to_action>

## Quick Reference Card

### When to Use
- After any code change
- Before release
- After dependency updates
- After environment changes

### Regression Types
| Type | When | Scope |
|------|------|-------|
| **Corrective** | No code change | Full suite |
| **Progressive** | New features | Existing + new |
| **Selective** | Specific changes | Changed + dependent |
| **Complete** | Major refactor | Everything |

### Test Selection Strategies
| Strategy | How | Reduction |
|----------|-----|-----------|
| **Change-based** | Git diff analysis | 70-90% |
| **Risk-based** | Priority by impact | 50-70% |
| **Historical** | Frequently failing | 40-60% |
| **Time-budget** | Fixed time window | Variable |

---

## Change-Based Test Selection

```typescript
// Analyze changed files and select impacted tests
function selectTests(changedFiles: string[]): string[] {
  const testsToRun = new Set<string>();

  for (const file of changedFiles) {
    // Direct tests
    testsToRun.add(`${file.replace('.ts', '.test.ts')}`);

    // Dependent tests (via coverage mapping)
    const dependentTests = testCoverage[file] || [];
    dependentTests.forEach(t => testsToRun.add(t));
  }

  return Array.from(testsToRun);
}

// Example: payment.ts changed
// Runs: payment.test.ts, checkout.integration.test.ts, e2e/purchase.test.ts
```

---

## Regression Suite Pyramid

```
         /\
        /  \  Full Regression (weekly)
       /    \  - All tests (2-4 hours)
      /------\
     /        \  Extended Regression (nightly)
    /          \  - Unit + integration + critical E2E (30-60 min)
   /------------\
  /              \  Quick Regression (per commit)
 /________________\  - Changed code + smoke tests (5-10 min)
```

---

## CI/CD Integration

```yaml
# .github/workflows/regression.yml
jobs:
  quick-regression:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    steps:
      - name: Analyze changes
        id: changes
        uses: dorny/paths-filter@v2
        with:
          filters: |
            payment:
              - 'src/payment/**'
            auth:
              - 'src/auth/**'

      - name: Run affected tests
        run: npm run test:affected

      - name: Smoke tests (always)
        run: npm run test:smoke

  nightly-regression:
    if: github.event_name == 'schedule'
    timeout-minutes: 120
    steps:
      - run: npm test -- --coverage
```

---

## Optimization Techniques

```javascript
// 1. Parallel execution
module.exports = {
  maxWorkers: '50%', // Use half CPU cores
  testTimeout: 30000
};

// 2. Sharding across CI workers
// npm test -- --shard=1/4

// 3. Incremental testing (only changed since last run)
// Track last run state, skip passing unchanged tests

// 4. Fast-fail on smoke
// Run critical tests first, abort if they fail
```

---

## Agent-Driven Regression

```typescript
// Smart test selection
await Task("Regression Analysis", {
  pr: 1234,
  strategy: 'change-based-with-risk',
  timeBudget: '15min'
}, "qe-regression-risk-analyzer");

// Returns:
// {
//   mustRun: ['payment.test.ts', 'checkout.integration.test.ts'],
//   shouldRun: ['order.test.ts'],
//   canSkip: ['profile.test.ts', 'search.test.ts'],
//   estimatedTime: '12 min',
//   riskCoverage: 0.94
// }

// Generate regression test from production bug
await Task("Bug Regression Test", {
  bug: { id: 'BUG-567', description: 'Checkout fails > 100 items' },
  preventRecurrence: true
}, "qe-test-generator");
```

---

## Agent Coordination Hints

### Memory Namespace
```
aqe/regression-testing/
├── test-selection/*     - Impact analysis results
├── suite-health/*       - Flakiness, timing trends
├── coverage-maps/*      - Test-to-code mapping
└── bug-regressions/*    - Tests from production bugs
```

### Fleet Coordination
```typescript
const regressionFleet = await FleetManager.coordinate({
  strategy: 'comprehensive-regression',
  agents: [
    'qe-regression-risk-analyzer',  // Analyze changes, select tests
    'qe-test-executor',             // Execute selected tests
    'qe-coverage-analyzer',         // Analyze coverage gaps
    'qe-quality-gate'               // Go/no-go decision
  ],
  topology: 'sequential'
});
```

---

## Related Skills
- [risk-based-testing](../risk-based-testing/) - Risk-based prioritization
- [test-automation-strategy](../test-automation-strategy/) - Automation pyramid
- [continuous-testing-shift-left](../continuous-testing-shift-left/) - CI/CD integration

---

## Remember

**Regression testing is insurance against change.** Every code change is a risk. Smart regression testing mitigates that risk by testing what matters based on what changed.

**Good regression testing is strategic, not exhaustive.** You cannot test everything, every time. Select based on changes, risk, and time budget.

**With Agents:** `qe-regression-risk-analyzer` provides intelligent test selection achieving 90% defect detection in 10% of execution time. Agents generate regression tests from production bugs automatically.

Overview

This skill provides strategic regression testing with automated test selection, impact analysis, and continuous regression management. It helps teams verify that fixes do not break existing functionality while optimizing test execution for faster feedback. The skill is agent-driven and designed to integrate into CI/CD pipelines and agent fleets for scalable regression workflows.

How this skill works

The skill analyzes code changes (git diff, coverage maps, dependency graphs) to select an optimal subset of tests and ranks them by risk and priority. It orchestrates staged runs (quick per-commit smoke, nightly extended, pre-release full), applies execution optimizations (parallelism, sharding, fast-fail), and monitors suite health (flakiness, execution time trends). Agents can also generate regression tests from production bugs and store selection results in a shared namespace for fleet coordination.

When to use it

  • After any code change or pull request to validate no regressions were introduced
  • Before releases or deployment candidates to run full or extended suites
  • When optimizing CI time and feedback loops with selective test execution
  • After dependency or environment updates that may affect behavior
  • To convert production bugs into reproducible regression tests

Best practices

  • Prefer change-based + risk-prioritized selection to catch most regressions quickly
  • Always include a small, fast smoke suite per commit to detect blocking failures early
  • Monitor and remove flaky tests; flakiness wastes more time than it saves
  • Use parallelism and sharding to reduce wall-clock time while respecting resource limits
  • Treat every confirmed production bug as a required regression test

Example use cases

  • Per-commit pipeline: run smoke tests and tests impacted by the commit (5–10 min)
  • Nightly pipeline: run extended regression covering units, integrations, and critical E2E (30–60 min)
  • Pre-release pipeline: run full regression suite for major releases (2–4 hours)
  • CI optimization: shrink test sets using git-diff + coverage mapping to speed feedback
  • Bug-driven regression: auto-generate a regression test from a production incident

FAQ

How much time can test selection save?

Smart selection commonly finds ~90% of regressions while running only ~10–30% of the suite, depending on coverage mapping and risk rules.

What if critical tests are flaky?

Prioritize stabilizing or quarantining flaky critical tests, add retries only as a temporary measure, and track flakiness trends in suite health metrics.