4.0 KiB
4.0 KiB
Generate test plan from requirements
Create comprehensive test scenarios based on a requirement document.
Instructions
When the user runs /req-tests <name>:
-
Validate requirement exists
- Check if
.requirements/<name>.mdexists - If not found, list available requirements
- Check if
-
Read and analyze the requirement
- Load
.requirements/<name>.md - Extract:
- Functional requirements
- Edge cases and constraints
- Acceptance criteria
- User stories
- Load
-
Generate comprehensive test scenarios
Create tests covering:
a. Unit Tests
- Test each functional requirement individually
- Test edge cases mentioned in requirements
- Test error conditions
- Test validation logic
b. Integration Tests
- Test interactions between components
- Test external integrations (APIs, databases, etc.)
- Test data flow through the system
c. End-to-End Tests
- Test complete user flows from user stories
- Test acceptance criteria scenarios
- Test real-world usage patterns
d. Edge Case Tests
- Test all edge cases mentioned in requirements
- Test boundary conditions
- Test error handling
- Test performance under constraints
-
Structure test scenarios
Format:
## Test Scenarios ### Unit Tests #### Test: [Function/Component Name] - **Given:** [Initial state/conditions] - **When:** [Action taken] - **Then:** [Expected outcome] - **Test Type:** Unit - **Priority:** High/Medium/Low ### Integration Tests #### Test: [Integration Point] - **Given:** [Setup] - **When:** [Integration action] - **Then:** [Expected result] - **Test Type:** Integration - **Priority:** High/Medium/Low ### End-to-End Tests #### Test: [User Flow] - **Scenario:** [User story or flow] - **Steps:** 1. [Step 1] 2. [Step 2] 3. [Step 3] - **Expected:** [Final outcome] - **Test Type:** E2E - **Priority:** High/Medium/Low ### Edge Case Tests #### Test: [Edge Case Description] - **Given:** [Edge case setup] - **When:** [Edge case trigger] - **Then:** [Expected handling] - **Test Type:** Edge Case - **Priority:** High/Medium/Low -
Ask for preference on storage
Where should I save these test scenarios? 1. Append to requirements file (.requirements/<name>.md) 2. Create separate test file (.requirements/<name>-tests.md) 3. Show only (don't save) -
Save test scenarios Based on user choice:
- If appending: Add "## Test Scenarios" section to requirement file
- If separate: Create new test file
- If show only: Display but don't persist
-
Generate test code templates (optional) Ask: "Would you like me to generate test code templates?"
If yes, create example test code in the project's test framework:
// Example for Jest describe('User Authentication', () => { test('should allow login with valid credentials', () => { // Given: Valid user credentials const credentials = { email: 'user@example.com', password: 'password123' }; // When: User attempts to login const result = login(credentials); // Then: Login succeeds expect(result.success).toBe(true); expect(result.token).toBeDefined(); }); }); -
Update requirement metadata
- Add note that test scenarios were generated
- Update
lastModifiedin_index.json
-
Provide summary
Generated test scenarios: - 5 Unit Tests - 3 Integration Tests - 2 End-to-End Tests - 4 Edge Case Tests Total: 14 test scenarios covering all requirements
Best Practices
- Cover all functional requirements with tests
- Don't forget negative test cases (what should fail)
- Prioritize tests based on critical functionality
- Make tests specific and actionable
- Include setup/teardown considerations
- Consider performance testing for performance requirements
- Include security testing for security requirements
- Map tests back to acceptance criteria