agentleFS
komlukkomluk/scaffolding/skills/testing-strategy/SKILL.md

testing-strategy

Skill16 starsChanged 5 days agoMITView on GitHub

Test pyramid, coverage targets, and unit/integration/E2E patterns. TRIGGER when: planning tests, writing test code, or reviewing coverage. SKIP: quality-gate scoring of plans (use quality-validation); root-causing a failing test (use systematic-debugging); proving a fix works (use verification-before-completion).

54 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use api-contract-design, deploy-checklist and 7 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • MohOneXSkill

    api-contract-design

    Designs and reviews API contracts (REST, RPC, GraphQL, library interfaces) for evolvability, backward compatibility, and failure semantics. Use when defining new endpoints/interfaces, versioning an API, reviewing a schema, or deciding how breaking changes propagate to clients.

    Also in 3 projects that use this

  • AnthropicSkill

    deploy-checklist

    Pre-deployment verification checklist. Use when about to ship a release, deploying a change with database migrations or feature flags, verifying CI status and approvals before going to production, or documenting rollback triggers ahead of time.

    Also in 4 projects that use this

  • AnthropicSkill

    tech-debt

    Identify, categorize, and prioritize technical debt. Trigger with "tech debt", "technical debt audit", "what should we refactor", "code health", or when the user asks about code quality, refactoring priorities, or maintenance backlog.

    Also in 4 projects that use this

  • Microsoft AzureSkill

    release-readiness

    Complete ODIN release documentation and validation checks before declaring user-visible work complete, preparing a release, or opening the Release-to-main pull request.

    Also in 3 projects that use this

  • MicrosoftSkill

    deep-review

    Multi-agent deep code review for regorus. Three diverse parallel discovery agents with context asymmetry, risk-triggered micro-passes, adversarial gap-finder, and verification with disproval mandates. Use for high-stakes changes.

    Also in 3 projects that use this

  • +4 more from anthropics

The file

Show its rules and text

We split this skill into the rules it gives an agent

18 rules. 0 are common, 17 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 44 edited versions we read keep these.

  • 17

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Never skip the red run - a test that never failed proves nothing.

    line 31
  2. Distinctive:

    Test one thing per test

    line 92
  3. Distinctive:

    Use test containers or in-memory DB

    line 132
  4. Distinctive:

    Test full request/response cycle

    line 136
  5. Distinctive:

    Test user perspective, not implementation

    line 156
  6. Distinctive:

    Use stable selectors (data-testid)

    line 157
  7. Distinctive:

    Use page object pattern

    line 160
  8. Distinctive:

    Use realistic but fake data

    line 181
  9. Distinctive:

    Never use production data

    line 182
  10. Distinctive:

    Use faker libraries for variety

    line 184
  11. Very specific:

    Test files: {module}_test.py or {module}.test.ts

    line 228
  12. Distinctive:

    Unit tests: - Run on every commit

    line 237
  13. Distinctive:

    Integration tests: - Run on PR/merge

    line 238
  14. Distinctive:

    E2E tests: - Run on deploy to staging

    line 239
  15. Distinctive:

    Write tests before fixing bugs

    line 272
  16. Distinctive:

    Test behavior, not implementation

    line 273
  17. Distinctive:

    Keep tests simple and readable

    line 274
  18. Distinctive:

    Test private methods directly

    line 280

“Common” is measured: kept by at least 6 in 10 of the 44 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Testing Strategy Skill

Purpose

Comprehensive testing guidelines including test pyramid, coverage targets, and test patterns.

Auto-Invoke Triggers

  • Planning test strategy
  • Writing unit/integration tests
  • Reviewing test coverage
  • Setting up test infrastructure

TDD Enforcement (Red -> Green -> Refactor)

For new behavior and bug fixes, the failing test comes first. No production code without a test that demanded it.

StepDoGate
1. RedWrite one small test for the next behavior; run itIt fails for the expected reason (not a typo/import error)
2. GreenWrite the least code that passesAll tests pass; no extra behavior
3. RefactorClean names, duplication, structureTests stay green; no new behavior

Rules:

  • Never skip the red run - a test that never failed proves nothing.
  • One behavior per cycle; commit-sized steps, not feature-sized.
  • Bug fix = reproduce with a failing test first, then fix (see systematic-debugging for root-causing).
  • Code written before its test: delete it and restart from red, or add the test and confirm it fails when the code is reverted.
  • Legitimate exceptions (UI layout, throwaway spikes, generated code): say so explicitly rather than silently skipping.

Evidence of compliance in a report: the failing test output, then the passing output. Proving the final result is verification-before-completion's job.


Test Pyramid

        /\
       /  \      E2E Tests (10%)
      /----\     - Critical user flows
     /      \    - Slow, expensive
    /--------\   Integration Tests (20%)
   /          \  - API tests, DB tests
  /------------\ - Medium speed
 /              \ Unit Tests (70%)
/----------------\ - Fast, isolated
                   - Business logic

Distribution Guidelines

TypePercentageFocus
Unit70%Business logic, utilities
Integration20%API, database, services
E2E10%Critical user journeys

Coverage Targets

MetricMinimumTarget
Line coverage70%80%
Branch coverage60%70%
Critical paths90%100%

What to Cover

  • All public methods
  • Business logic
  • Edge cases
  • Error handling
  • Integration points

What NOT to Cover

  • Generated code
  • Simple getters/setters
  • Framework code
  • Third-party libraries

Unit Testing

Principles

  • Test one thing per test
  • Tests should be fast (< 100ms)
  • Tests should be isolated
  • Tests should be deterministic
  • No external dependencies

AAA Pattern

Arrange - Set up test data and mocks
Act     - Execute the method under test
Assert  - Verify the expected outcome

Naming Convention

{Method}_{Scenario}_{ExpectedResult}

CreateUser_ValidData_ReturnsUserId
CreateUser_DuplicateEmail_ThrowsConflict
CalculateTotal_EmptyCart_ReturnsZero

Test Categories

CategoryPurposeExample
Happy pathNormal operationValid user creation
Edge caseBoundary conditionsEmpty input, max length
Error caseFailure scenariosInvalid data, not found

Integration Testing

Scope

  • API endpoints
  • Database operations
  • External service calls
  • Message queues

Best Practices

  • Use test containers or in-memory DB
  • Seed known test data
  • Clean up after each test
  • Mock external services
  • Test full request/response cycle

API Test Checklist

  • Correct status code
  • Response body structure
  • Headers (content-type, auth)
  • Validation errors
  • Authorization rules

E2E Testing

When to Use

  • Critical user journeys
  • Payment flows
  • Authentication flows
  • Multi-step workflows

Best Practices

  • Test user perspective, not implementation
  • Use stable selectors (data-testid)
  • Handle async operations properly
  • Keep tests independent
  • Use page object pattern

Critical Paths to Test

  • User registration/login
  • Main feature workflow
  • Payment/checkout
  • Error recovery flows

Test Data Management

Strategies

StrategyUse Case
FixturesStatic test data
FactoriesDynamic test data
BuildersComplex objects
SeedersDatabase state

Rules

  • Use realistic but fake data
  • Never use production data
  • Reset state between tests
  • Use faker libraries for variety

Mocking Guidelines

When to Mock

  • External services (APIs, databases)
  • Time-dependent operations
  • Random values
  • Expensive operations

When NOT to Mock

  • Simple value objects
  • The code under test
  • Everything (over-mocking)

Mock Types

TypePurpose
StubReturn canned responses
MockVerify interactions
SpyRecord calls, pass through
FakeSimplified implementation

Test Organization

File Structure

tests/
├── unit/
│   ├── services/
│   └── utils/
├── integration/
│   ├── api/
│   └── db/
├── e2e/
├── fixtures/
└── conftest.py / setup.ts

Naming

  • Test files: {module}_test.py or {module}.test.ts
  • Match source structure
  • Group related tests in describe/class

CI/CD Integration

Pipeline Stages

  1. Unit tests - Run on every commit
  2. Integration tests - Run on PR/merge
  3. E2E tests - Run on deploy to staging

Quality Gates

GateRequirement
Unit tests100% pass
Coverage> 70%
Integration100% pass
E2E (critical)100% pass

Performance Testing

Types

TypePurpose
LoadExpected traffic
StressBreaking point
SoakMemory leaks
SpikeSudden traffic

Metrics to Measure

  • Response time (p50, p95, p99)
  • Throughput (requests/second)
  • Error rate
  • Resource usage

Best Practices

DO

  • Write tests before fixing bugs
  • Test behavior, not implementation
  • Keep tests simple and readable
  • Run tests frequently
  • Maintain test code quality
  • Use meaningful assertions

DON'T

  • Test private methods directly
  • Write flaky tests
  • Skip tests temporarily (delete instead)
  • Test external systems
  • Ignore slow tests
  • Copy-paste test code

Test Quality Checklist

  • Tests are fast (< 10s for unit suite)
  • Tests are isolated (no order dependency)
  • Tests are deterministic (no flakiness)
  • Tests are readable (clear intent)
  • Tests cover edge cases
  • Tests verify error handling
  • Mocks are minimal and purposeful
  • CI runs tests automatically

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.