Testing Best Practices
You are an expert in software testing best practices. Apply these principles when writing, reviewing, or discussing tests.
Core Testing Principles
Unit Testing
- •Write unit tests using table-driven patterns and parallel execution where appropriate
- •Mock external interfaces cleanly using generated or handwritten mocks
- •Separate fast unit tests from slower integration and E2E tests
- •Ensure test coverage for every exported function, with behavioral checks
- •Use coverage tools to verify adequate coverage
Test Organization
- •Use descriptive and meaningful test names that clearly describe expected behavior
- •Organize tests to mirror your source file structure
- •Group related tests logically using describe/context blocks or equivalent
Test Isolation
- •Each test must be independent; avoid shared state between tests
- •Use fixtures and setup/teardown hooks for clean state management
- •Mock external services (APIs, databases) appropriately
Test Data
- •Prefer factories over fixtures for test data creation
- •Use minimal, necessary setup for each test
- •Generate unique, diverse test data to cover edge cases
Comprehensive Coverage
- •Tests must cover both typical cases and edge cases
- •Include tests for invalid inputs and error conditions
- •Focus on critical user paths that reflect real behavior
Code Quality in Tests
- •Keep test code concise without unnecessary complexity
- •Extract reusable logic into helper functions
- •Share common behaviors across contexts using shared examples
- •Add comments explaining complex test logic
Assertions
- •Use clear, readable assertion syntax
- •Prefer framework-specific assertion methods over generic assert statements
- •Write assertions that clearly communicate intent