# Test Coverage Analyze test coverage, identify gaps, and generate missing tests to reach 80%+ coverage. ## Step 1: Detect Test Framework | Indicator | Coverage Command | |-----------|-----------------| | `jest.config.*` or `package.json` jest | `npx jest --coverage --coverageReporters=json-summary` | | `vitest.config.*` | `npx vitest run --coverage` | | `pytest.ini` / `pyproject.toml` pytest | `pytest --cov=src --cov-report=json` | | `Cargo.toml` | `cargo llvm-cov --json` | | `pom.xml` with JaCoCo | `mvn test jacoco:report` | | `go.mod` | `go test -coverprofile=coverage.out ./...` | ## Step 2: Analyze Coverage Report 1. Run the coverage command 2. Parse the output (JSON summary or terminal output) 3. List files **below 80% coverage**, sorted worst-first 4. For each under-covered file, identify: - Untested functions or methods - Missing branch coverage (if/else, switch, error paths) - Dead code that inflates the denominator ## Step 3: Generate Missing Tests For each under-covered file, generate tests following this priority: 1. **Happy path** — Core functionality with valid inputs 2. **Error handling** — Invalid inputs, missing data, network failures 3. **Edge cases** — Empty arrays, null/undefined, boundary values (0, -1, MAX_INT) 4. **Branch coverage** — Each if/else, switch case, ternary ### Test Generation Rules - Place tests adjacent to source: `foo.ts` → `foo.test.ts` (or project convention) - Use existing test patterns from the project (import style, assertion library, mocking approach) - Mock external dependencies (database, APIs, file system) - Each test should be independent — no shared mutable state between tests - Name tests descriptively: `test_create_user_with_duplicate_email_returns_409` ## Step 4: Verify 1. Run the full test suite — all tests must pass 2. Re-run coverage — verify improvement 3. If still below 80%, repeat Step 3 for remaining gaps ## Step 5: Report Show before/after comparison: ``` Coverage Report ────────────────────────────── File Before After src/services/auth.ts 45% 88% src/utils/validation.ts 32% 82% ────────────────────────────── Overall: 67% 84% ✅ ``` ## Focus Areas - Functions with complex branching (high cyclomatic complexity) - Error handlers and catch blocks - Utility functions used across the codebase - API endpoint handlers (request → response flow) - Edge cases: null, undefined, empty string, empty array, zero, negative numbers