
testing
by shinpr
Systematic workflows for AI-assisted development - Task-oriented framework with quality gates
SKILL.md
name: testing description: "Applies TDD process, test quality criteria, and mock guidelines. Use when: writing unit tests, using mocks, or reviewing test quality."
Testing Rules
Language-Specific References
For language-specific rules, also read:
- TypeScript/Vitest: references/typescript.md
TDD Process [MANDATORY for all code changes]
Execute this process for every code change:
RED Phase
- Write test that defines expected behavior
- Run test
- Confirm test FAILS (if it passes, the test is wrong)
GREEN Phase
- Write MINIMAL code to make test pass
- Run test
- Confirm test PASSES
REFACTOR Phase
- Improve code quality
- Run test
- Confirm test STILL PASSES
VERIFY Phase [MANDATORY - 0 ERRORS REQUIRED]
- Execute ALL quality check commands for your language/project
- Fix any errors until ALL commands pass with 0 errors
- Confirm no regressions
- ENFORCEMENT: Cannot proceed with ANY errors or warnings
Exceptions (no TDD required):
- Pure configuration files
- Documentation only
- Emergency fixes (but add tests immediately after)
- Exploratory spikes (discard or rewrite with tests before merging)
- Build/deployment scripts (unless they contain business logic)
Basic Testing Policy
Quality Requirements
- Coverage: Unit test coverage must be 80% or higher
- Independence: Each test can run independently
- Reproducibility: Tests are environment-independent
Coverage Requirements
Mandatory: Unit test coverage must be 80% or higher Metrics: Statements, Branches, Functions, Lines
Test Types and Scope
-
Unit Tests
- Verify behavior of individual units (functions, modules, or components)
- Mock all external dependencies
- Fast execution (milliseconds)
-
Integration Tests
- Verify coordination between multiple components
- Use actual dependencies when appropriate
- Test real system interactions
-
E2E Tests (End-to-End Tests)
- Verify complete user workflows across entire system
- Test real-world scenarios with all components integrated
- Validate system behavior from user perspective
- Ensure business requirements are met end-to-end
-
Cross-functional Verification in E2E Tests [MANDATORY for feature modifications]
Purpose: Prevent regression and ensure existing features remain stable when introducing new features or modifications.
When Required:
- Adding new features that interact with existing components
- Modifying core business logic or workflows
- Changing shared resources or data structures
- Updating APIs or integration points
Integration Point Analysis:
-
High Impact: Changes to core process flows, breaking changes, or workflow modifications
- Mandatory comprehensive E2E test coverage
- Full regression test suite required
- Performance benchmarking before/after
-
Medium Impact: Data usage modifications, shared state changes, or new dependencies
- Integration tests minimum requirement
- Targeted E2E tests for affected workflows
- Edge case coverage mandatory
-
Low Impact: Read-only operations, logging additions, or monitoring hooks
- Unit test coverage sufficient
- Smoke tests for integration points
Success Criteria:
- Zero breaking changes in existing workflows
- Performance degradation within project-defined acceptable limits
- No new errors in previously stable features
- All integration points maintain expected contracts
- Backward compatibility preserved where required
Test Design Principles
Test Case Structure
- Tests consist of three stages: Setup, Execute, Verify (also known as Arrange-Act-Assert or Given-When-Then)
- Clear naming that shows purpose of each test
- One test case verifies only one behavior
- Test names should describe expected behavior, not implementation
Test Data Management
- Manage test data in dedicated directories
- Define test-specific configuration values
- Always mock sensitive information (passwords, tokens, API keys)
- Keep test data minimal, using only data directly related to test case verification
Test Independence
- Each test should be able to run in isolation
- Tests should not depend on execution order
- Clean up test state after each test
- Avoid shared mutable state between tests
Mock and Stub Usage Policy
✅ Recommended: Mock external dependencies in unit tests
- Merit: Ensures test independence and reproducibility
- Practice: Mock databases, APIs, file systems, and other external dependencies
- Use framework-appropriate mocking tools
❌ Avoid: Actual external connections in unit tests
- Reason: Slows test speed and causes environment-dependent problems
- Exception: Integration tests that specifically test external integration
Mock Decision Criteria
| Mock Characteristics | Response Policy |
|---|---|
| Simple and stable | Consolidate in common helpers |
| Complex or frequently changing | Individual implementation |
| Duplicated in 3+ places | Consider consolidation |
| Test-specific logic | Individual implementation |
Test Granularity Principles
Core Principle: Observable Behavior Only
MUST Test:
- Public APIs and contracts
- Return values and outputs
- Exceptions and error conditions
- External calls and side effects
- Persisted state changes
MUST NOT Test:
- Internal implementation details not exposed publicly
- Internal state that's not observable from outside
- Algorithm implementation details
- Framework/library internals
Test Failure Response Decision Criteria
Fix tests when:
- Expected values are wrong
- Tests reference non-existent features
- Tests depend on implementation details
- Tests were written only for coverage
Fix implementation when:
- Tests represent valid specifications
- Business logic requirements have changed
- Important edge cases are failing
When in doubt: Confirm with stakeholders or domain experts
Test Implementation Best Practices
Naming Conventions
- Test files: Follow your language/framework conventions
- Test suites: Names describing target features or situations
- Test cases: Names describing expected behavior (not implementation)
Test Code Quality Rules
✅ Recommended: Keep all tests always active
- Merit: Guarantees test suite completeness
- Practice: Fix problematic tests and activate them
❌ Avoid: Skipping or commenting out tests
- Reason: Creates test gaps and incomplete quality checks
- Solution: Either fix the test or completely delete if truly unnecessary
Test Quality Criteria [MANDATORY]
- Boundary coverage: Include empty/zero/max/error cases with happy paths
- Literal expectations: Use literal values in assertions, not computed expressions
- Expected value ≠ mock return value (implementation processes data)
- Result verification: Assert return values and state, not call order
- Meaningful assertions: Every test must have at least one assertion
- Mock external I/O only: Mock DB/API/filesystem, use real internal utilities
Test Helper Guidelines
Basic Principles Test helpers should reduce duplication and improve maintainability.
Usage Examples
- Builder patterns for test data creation
- Custom assertions for domain-specific validation
- Shared setup/teardown utilities
- Common mock configurations
Quality Check Commands [MANDATORY for VERIFY phase]
Execute quality checks appropriate for your language and project setup:
Required Quality Checks
Your project MUST have mechanisms to verify:
-
All Tests Pass
- Unit tests execute successfully
- Integration tests (if applicable) pass
- No test failures or errors
-
Code Builds Successfully
- Compilation succeeds (for compiled languages)
- No build errors or warnings
-
Code Style Compliance
- Linting rules are satisfied
- Formatting standards are met
- Style guide adherence verified
-
Type Safety (for typed languages)
- Type checking passes
- No type errors or warnings
ENFORCEMENT
- Cannot proceed with task completion if ANY quality check fails
- Must fix all errors and warnings before marking task complete
- If your project lacks certain quality tools, establish them or document the gap
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon
