--- name: test-coverage description: Analyze and improve test coverage. Use when reviewing coverage gaps, writing missing tests, setting up coverage tooling, or improving branch/line/statement coverage for any language or framework. allowed-tools: Read, Grep, Glob, Bash, Write, Edit --- # Test Coverage Analyze and report test coverage: **$ARGUMENTS** ## Instructions Follow this systematic approach to analyze and improve test coverage: 1. **Coverage Tool Setup** - Identify and configure appropriate coverage tools: - JavaScript/Node.js: Jest, NYC, Istanbul - Python: Coverage.py, pytest-cov - Java: JaCoCo, Cobertura - C#: dotCover, OpenCover - Ruby: SimpleCov - Configure coverage reporting formats (HTML, XML, JSON) - Set up coverage thresholds and quality gates 2. **Baseline Coverage Analysis** - Run existing tests with coverage reporting - Generate comprehensive coverage reports - Document current coverage percentages: - Line coverage - Branch coverage - Function coverage - Statement coverage - Identify uncovered code areas 3. **Coverage Report Analysis** - Review detailed coverage reports by file and directory - Identify critical uncovered code paths - Analyze branch coverage for conditional logic - Find untested functions and methods - Examine coverage trends over time 4. **Critical Path Identification** - Identify business-critical code that lacks coverage - Prioritize high-risk, low-coverage areas - Focus on public APIs and interfaces - Target error handling and edge cases - Examine security-sensitive code paths 5. **Test Gap Analysis** - Categorize uncovered code: - Business logic requiring immediate testing - Error handling and exception paths - Configuration and setup code - Utility functions and helpers - Dead or obsolete code to remove 6. **Strategic Test Writing** - Write unit tests for uncovered business logic - Add integration tests for uncovered workflows - Create tests for error conditions and edge cases - Test configuration and environment-specific code - Add regression tests for bug-prone areas 7. **Branch Coverage Improvement** - Identify uncovered conditional branches - Test both true and false conditions - Cover all switch/case statements - Test exception handling paths - Verify loop conditions and iterations 8. **Edge Case Testing** - Test boundary conditions and limits - Test null, empty, and invalid inputs - Test timeout and network failure scenarios - Test resource exhaustion conditions - Test concurrent access and race conditions 9. **Mock and Stub Strategy** - Mock external dependencies for better isolation - Stub complex operations to focus on logic - Use dependency injection for testability - Create test doubles for external services - Implement proper cleanup for test resources 10. **Coverage Quality Assessment** - Ensure tests actually verify behavior, not just execution - Check for meaningful assertions in tests - Avoid testing implementation details - Focus on testing contracts and interfaces - Review test quality alongside coverage metrics 11. **Framework-Specific Coverage Enhancement** **For Web Applications:** - Test API endpoints and HTTP status codes - Test form validation and user input handling - Test authentication and authorization flows - Test error pages and user feedback **For Mobile Applications:** - Test device-specific functionality - Test different screen sizes and orientations - Test offline and network connectivity scenarios - Test platform-specific features **For Backend Services:** - Test database operations and transactions - Test message queue processing - Test caching and performance optimizations - Test service integrations and API calls 12. **Continuous Coverage Monitoring** - Set up automated coverage reporting in CI/CD - Configure coverage thresholds to prevent regression - Generate coverage badges and reports - Monitor coverage trends and improvements - Alert on significant coverage decreases 13. **Coverage Exclusion Management** - Properly exclude auto-generated code - Exclude third-party libraries and dependencies - Document reasons for coverage exclusions - Regularly review and update exclusion rules - Avoid excluding code that should be tested 14. **Mutation Testing (Advanced)** - Implement mutation testing to validate test quality - Identify tests that don't catch actual bugs - Improve test assertions and edge case coverage - Use mutation testing tools specific to your language - Balance mutation testing cost with quality benefits 15. **Legacy Code Coverage Strategy** - Prioritize high-risk legacy code for testing - Use characterization tests for complex legacy systems - Refactor for testability where possible - Add tests before making changes to legacy code - Document known limitations and technical debt **Sample Coverage Commands:** ```bash # JavaScript with Jest npm test -- --coverage --coverage-reporters=html,text,lcov # Python with pytest pytest --cov=src --cov-report=html --cov-report=term # Java with Maven mvn clean test jacoco:report # .NET Core dotnet test --collect:"XPlat Code Coverage" ``` Remember that 100% coverage is not always the goal — focus on meaningful coverage that actually improves code quality and catches bugs.