Files
gh-bandofai-puerto-plugins-…/commands/req-tests.md
2025-11-29 17:59:51 +08:00

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>:

  1. Validate requirement exists

    • Check if .requirements/<name>.md exists
    • If not found, list available requirements
  2. Read and analyze the requirement

    • Load .requirements/<name>.md
    • Extract:
      • Functional requirements
      • Edge cases and constraints
      • Acceptance criteria
      • User stories
  3. 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
  4. 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
    
  5. 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)
    
  6. 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
  7. 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();
      });
    });
    
  8. Update requirement metadata

    • Add note that test scenarios were generated
    • Update lastModified in _index.json
  9. 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