Back to skills

Testing Guide

Test-driven development (TDD), unit/integration/UAT testing strategies, test organization, coverage requirements, and GenAI validation patterns. Use when writing tests, validating code, or ensuring quality.

7 stars
0 votes
0 copies
0 views
Added 12/19/2025
developmentpythongobashtestingrefactoringcode-reviewgitci/cdsecurityperformance

Install via CLI

$openskills install akaszubski/autonomous-dev
Download Zip
Files
SKILL.md
---
name: testing-guide
version: 1.0.0
type: knowledge
description: Test-driven development (TDD), unit/integration/UAT testing strategies, test organization, coverage requirements, and GenAI validation patterns. Use when writing tests, validating code, or ensuring quality.
keywords: test, testing, tdd, unit test, integration test, coverage, pytest, validation, quality assurance, genai validation
auto_activate: true
allowed-tools: [Read, Grep, Glob, Bash]
---

# Testing Guide Skill

Comprehensive testing strategies including TDD, traditional pytest testing, GenAI validation, and system performance meta-analysis.

## When This Skill Activates

- Writing unit/integration/UAT tests
- Implementing TDD workflow
- Setting up test infrastructure
- Measuring test coverage
- Validating code quality
- Performance analysis and optimization
- Keywords: "test", "testing", "tdd", "coverage", "pytest", "validation"

---

## Core Concepts

### 1. Three-Layer Testing Strategy

Modern testing approach combining traditional pytest, GenAI validation, and system performance meta-analysis.

**Layer 1: Traditional Tests (pytest)**
- Unit tests for deterministic logic
- Integration tests for workflows
- Fast, automated, granular feedback

**Layer 2: GenAI Validation (Claude)**
- Validate architectural intent
- Assess code quality beyond syntax
- Comprehensive reasoning about design patterns

**Layer 3: System Performance Testing (Meta-analysis)**
- Agent performance metrics
- Model optimization opportunities
- ROI tracking
- System-wide performance analysis

**See**: `docs/three-layer-strategy.md` for complete framework and decision matrix

---

### 2. Testing Layers

Four-layer testing pyramid from fast unit tests to comprehensive GenAI validation.

**Layers**:
1. **Unit Tests** - Fast, isolated, deterministic (majority of tests)
2. **Integration Tests** - Medium speed, component interactions
3. **UAT Tests** - Slow, end-to-end scenarios (minimal)
4. **GenAI Validation** - Comprehensive, architectural reasoning

**Testing Pyramid**:
```
      /\        Layer 4: GenAI Validation (comprehensive)
     /  \
    /UAT \      Layer 3: UAT Tests (few, slow)
   /______\
  /Int Tests\   Layer 2: Integration Tests (some, medium)
 /__________\
/Unit Tests  \  Layer 1: Unit Tests (many, fast)
```

**See**: `docs/testing-layers.md` for detailed layer descriptions and examples

---

### 3. Testing Workflow & Hybrid Approach

Recommended workflow combining automated testing with manual verification.

**Development Phase**:
- Write failing test first (TDD)
- Implement minimal code to pass
- Refactor with confidence

**Pre-Commit (Automated)**:
- Run fast unit tests
- Check coverage thresholds
- Format code

**Pre-Release (Manual)**:
- GenAI validation for architecture
- Integration tests for workflows
- System performance analysis

**See**: `docs/workflow-hybrid-approach.md` for complete workflow and hybrid testing patterns

---

### 4. TDD Methodology

Test-Driven Development: Write tests before implementation.

**TDD Workflow**:
1. **Red** - Write failing test
2. **Green** - Write minimal code to pass
3. **Refactor** - Improve code while keeping tests green

**Benefits**:
- Guarantees test coverage
- Drives better design
- Provides living documentation
- Enables confident refactoring

**Coverage Standards**:
- Critical paths: 100%
- New features: 80%+
- Bug fixes: Add regression test

**See**: `docs/tdd-methodology.md` for detailed TDD workflow and test patterns

---

### 5. Progression Testing

Track performance improvements over time with baseline comparisons.

**Purpose**:
- Verify optimizations actually improve performance
- Prevent regression in key metrics
- Track system evolution

**How It Works**:
- Establish baseline metrics
- Run progression tests after optimizations
- Compare against baseline
- Update baseline when improvements validated

**See**: `docs/progression-testing.md` for baseline format and test templates

---

### 6. Regression Testing

Prevent fixed bugs from reappearing.

**When to Create**:
- Bug is fixed
- Bug had user impact
- Bug could easily recur

**Regression Test Template**:
```python
def test_regression_issue_123_handles_empty_input():
    """
    Regression test for Issue #123: Handle empty input gracefully.

    Previously crashed with KeyError on empty dict.
    """
    # Arrange
    empty_input = {}

    # Act
    result = process(empty_input)

    # Assert
    assert result == {"status": "empty"}
```

**See**: `docs/regression-testing.md` for complete patterns and organization

---

### 7. Test Tiers & Auto-Categorization (CRITICAL!)

Tests are **automatically marked** based on directory location. No manual `@pytest.mark` needed!

**Tier Structure**:
```
tests/
├── regression/
│   ├── smoke/           # Tier 0: Critical path (<5s) - CI GATE
│   ├── regression/      # Tier 1: Feature protection (<30s)
│   ├── extended/        # Tier 2: Deep validation (<5min)
│   └── progression/     # Tier 3: TDD red phase
├── unit/                # Unit tests (isolated functions)
├── integration/         # Integration tests (multi-component)
├── security/            # Security-focused tests
├── hooks/               # Hook-specific tests
└── archived/            # Obsolete tests (excluded)
```

**Where to Put New Tests**:
```
Is it protecting a released feature?
├─ Yes → Critical path (install, sync, load)?
│        ├─ Yes → tests/regression/smoke/
│        └─ No  → tests/regression/regression/
└─ No  → TDD red phase (not implemented)?
         ├─ Yes → tests/regression/progression/
         └─ No  → Single function/class?
                  ├─ Yes → tests/unit/{subcategory}/
                  └─ No  → tests/integration/
```

**Run by Tier**:
```bash
pytest -m smoke              # CI gate (must pass)
pytest -m regression         # Feature protection
pytest -m "smoke or regression"  # Both
pytest -m unit               # Unit tests only
```

**Validate Categorization**:
```bash
python scripts/validate_test_categorization.py --report
```

**See**: `docs/TESTING-TIERS.md` for complete tier definitions and examples

---

### 8. Test Organization & Best Practices

Directory structure, naming conventions, and testing best practices.

**Naming Conventions**:
- Test files: `test_*.py`
- Test functions: `test_*`
- Regression tests: `test_feature_v{VERSION}_{name}.py`
- Fixtures: descriptive names (no `test_` prefix)

**See**: `docs/test-organization-best-practices.md` for detailed conventions and best practices

---

### 9. Pytest Fixtures & Coverage

Common fixtures for setup/teardown and coverage measurement strategies.

**Common Fixtures**:
- `tmp_path` - Temporary directory
- `monkeypatch` - Mock environment variables
- `capsys` - Capture stdout/stderr
- Custom fixtures for project-specific setup

**Coverage Targets**:
- Unit tests: 90%+
- Integration tests: 70%+
- Overall project: 80%+

**Check Coverage**:
```bash
pytest --cov=src --cov-report=term-missing
```

**See**: `docs/pytest-fixtures-coverage.md` for fixture patterns and coverage strategies

---

### 10. CI/CD Integration

Automated testing in pre-push hooks and GitHub Actions.

**Pre-Push Hook**:
```bash
#!/bin/bash
pytest tests/ || exit 1
```

**GitHub Actions**:
```yaml
- name: Run tests
  run: pytest tests/ --cov=src --cov-report=xml
```

**See**: `docs/ci-cd-integration.md` for complete CI/CD integration patterns

---

## Quick Reference

| Pattern | Use Case | Details |
|---------|----------|---------|
| **Test Tiers** | Auto-categorization | `docs/TESTING-TIERS.md` |
| Three-Layer Strategy | Complete testing approach | `docs/three-layer-strategy.md` |
| Testing Layers | Pytest pyramid | `docs/testing-layers.md` |
| TDD Methodology | Test-first development | `docs/tdd-methodology.md` |
| Progression Testing | Performance tracking | `docs/progression-testing.md` |
| Regression Testing | Bug prevention | `docs/regression-testing.md` |
| Test Organization | Directory structure | `docs/test-organization-best-practices.md` |
| Pytest Fixtures | Setup/teardown patterns | `docs/pytest-fixtures-coverage.md` |
| CI/CD Integration | Automated testing | `docs/ci-cd-integration.md` |

### Test Tier Quick Reference

| Tier | Directory | Time Limit | Purpose |
|------|-----------|------------|---------|
| **0 (Smoke)** | `regression/smoke/` | <5s | CI gate, critical path |
| **1 (Regression)** | `regression/regression/` | <30s | Feature protection |
| **2 (Extended)** | `regression/extended/` | <5min | Deep validation |
| **3 (Progression)** | `regression/progression/` | - | TDD red phase |
| **Unit** | `unit/` | <1s | Isolated functions |
| **Integration** | `integration/` | <30s | Multi-component |

---

## Test Types Decision Matrix

| Test Type | Speed | When to Use | Coverage Target |
|-----------|-------|-------------|-----------------|
| **Unit** | Fast (ms) | Pure functions, deterministic logic | 90%+ |
| **Integration** | Medium (sec) | Component interactions, workflows | 70%+ |
| **UAT** | Slow (min) | End-to-end scenarios, critical paths | Key flows |
| **GenAI Validation** | Slow (min) | Architecture validation, design review | As needed |

---

## Progressive Disclosure

This skill uses progressive disclosure to prevent context bloat:

- **Index** (this file): High-level concepts and quick reference (<500 lines)
- **Detailed docs**: `docs/*.md` files with implementation details (loaded on-demand)

**Available Documentation**:
- `docs/three-layer-strategy.md` - Modern three-layer testing framework
- `docs/testing-layers.md` - Four-layer testing pyramid
- `docs/workflow-hybrid-approach.md` - Development and testing workflow
- `docs/tdd-methodology.md` - Test-driven development patterns
- `docs/progression-testing.md` - Performance baseline tracking
- `docs/regression-testing.md` - Bug prevention patterns
- `docs/test-organization-best-practices.md` - Directory structure and conventions
- `docs/pytest-fixtures-coverage.md` - Pytest patterns and coverage
- `docs/ci-cd-integration.md` - Automated testing integration

---

## Cross-References

**Related Skills**:
- **python-standards** - Python coding conventions
- **code-review** - Code quality standards
- **error-handling-patterns** - Error handling best practices
- **observability** - Logging and monitoring

**Related Tools**:
- pytest - Testing framework
- pytest-cov - Coverage measurement
- pytest-xdist - Parallel test execution
- hypothesis - Property-based testing

---

## Key Takeaways

1. **Put tests in the right directory** - Auto-markers handle the rest (no manual @pytest.mark)
2. **Smoke tests for critical paths** - `regression/smoke/` = CI gate
3. **Write tests first** (TDD) - Guarantees coverage and drives better design
4. **Use the testing pyramid** - Many unit tests, some integration, few UAT
5. **Aim for 80%+ coverage** - Focus on critical paths
6. **Fast tests matter** - Keep unit tests under 1 second
7. **Name tests clearly** - `test_<function>_<scenario>_<expected>`
8. **One assertion per test** - Clear failure messages
9. **Use fixtures** - DRY principle for setup/teardown
10. **Test behavior, not implementation** - Tests should survive refactoring
11. **Add regression tests** - Prevent fixed bugs from returning
12. **Automate testing** - Pre-push hooks and CI/CD
13. **Use GenAI validation** - Architectural reasoning beyond syntax
14. **Track performance** - Progression tests for optimization validation
15. **Validate categorization** - Run `python scripts/validate_test_categorization.py`

Comments (0)

No comments yet. Be the first to comment!