arabelatso/req-to-test
Generates comprehensive test scenarios from requirements including BDD/Gherkin scenarios, unit tests, integration tests, and end-to-end test cases. Use when converting requirements, user stories, or specifications into testable scenarios with full coverage including happy paths, error cases, edge cases, and boundary conditions. Outputs structured test suites ready for implementation.
npx skills add https://github.com/ArabelaTso/Skills-4-SE --skill req-to-test
You are an expert test engineer who transforms requirements into comprehensive, executable test scenarios.
This skill enables you to:
Follow this process when generating test scenarios from requirements:
Read each requirement and identify:
For each requirement, decide which test types are needed:
BDD/Gherkin Scenarios - Use for:
Unit Tests - Use for:
Integration Tests - Use for:
E2E Tests - Use for:
For each test type, use the patterns in references/test_patterns.md:
Structure scenarios as:
Feature: User Registration
As a new user
I want to create an account
So that I can access the platform
Scenario: Successful registration with valid credentials
Given I am on the registration page
And I am not logged in
When I enter email "[email protected]"
And I enter password "SecurePass123"
And I click "Register"
Then I see "Registration successful"
And I am redirected to the dashboard
And a confirmation email is sent to "[email protected]"
Scenario: Registration fails with invalid email
Given I am on the registration page
When I enter email "invalid-email"
And I enter password "SecurePass123"
And I click "Register"
Then I see error "Please enter a valid email address"
And I remain on the registration page
And no account is created
Generate test cases with clear structure:
Test Suite: User Registration Validation
Test: test_validate_email_accepts_valid_format
Setup: None required
Input: email = "[email protected]"
Execute: result = validate_email(email)
Assert: result == True
Test: test_validate_email_rejects_invalid_format
Setup: None required
Input: email = "invalid-email"
Execute: result = validate_email(email)
Assert: result == False
Test: test_validate_email_rejects_empty_string
Setup: None required
Input: email = ""
Execute: result = validate_email(email)
Assert: result == False
Test: test_create_user_with_valid_data
Setup:
- Initialize database connection
- Clear users table
Input:
- email = "[email protected]"
- password = "SecurePass123"
Execute: user = create_user(email, password)
Assert:
- user.email == "[email protected]"
- user.password is hashed
- user.created_at is set
- user.id is generated
Cleanup: Delete test user
Design integration tests:
Test: User Registration API Integration
Setup:
- Start test server
- Initialize test database
- Configure email service mock
Steps:
1. POST /api/register with valid credentials
2. Verify API returns 201 Created
3. Verify response contains user ID and token
4. Query database for new user record
5. Verify email service was called with correct parameters
Assertions:
- API response status: 201
- Response body contains: {id: <uuid>, token: <jwt>}
- Database contains user with email "[email protected]"
- User password is hashed (not plain text)
- Email service called with subject "Welcome"
- Confirmation link in email contains valid token
Cleanup:
- Delete test user from database
- Stop test server
Create complete user journeys:
Test: Complete User Registration and Login Journey
Scenario: New user registers and logs in successfully
Given browser opens application homepage
And no user exists with email "[email protected]"
When user clicks "Sign Up" button
Then registration page is displayed
When user enters email "[email protected]"
And user enters password "SecurePass123"
And user enters password confirmation "SecurePass123"
And user clicks "Create Account"
Then success message "Account created successfully" appears
And user is redirected to dashboard at "/dashboard"
And welcome message displays "Welcome, [email protected]"
When user logs out
Then user is redirected to homepage
When user clicks "Sign In"
And user enters email "[email protected]"
And user enters password "SecurePass123"
And user clicks "Log In"
Then user is redirected to dashboard
And session is active
Verification:
- User account persists in database
- User can access protected resources
- Session cookie is set correctly
Use the references/coverage_checklist.md to verify coverage:
Happy Path Coverage:
Error Path Coverage:
Edge Case Coverage:
Example - Comprehensive coverage for "Age" field (must be 18-65):
Happy Path:
- age = 25 (valid middle value)
- age = 18 (minimum boundary)
- age = 65 (maximum boundary)
Error Cases:
- age = 17 (below minimum)
- age = 66 (above maximum)
- age = -5 (negative)
- age = 0 (zero)
- age = "twenty" (invalid type)
- age = null (missing)
- age = "" (empty string)
- age = 999999 (extremely large)
Edge Cases:
- age = 17.9 (decimal below minimum)
- age = 18.0 (decimal at minimum)
- age = 65.1 (decimal above maximum)
Classify each test by priority:
Critical (P0):
High (P1):
Medium (P2):
Low (P3):
Organize test scenarios clearly:
# Test Suite: [Feature Name]
## Overview
- Source Requirements: REQ-001, REQ-002
- Total Scenarios: 15
- Coverage: Happy path, Error cases, Edge cases
## BDD Scenarios
### Critical Priority
Feature: User Authentication
Scenario: Successful login with valid credentials [P0]
Scenario: Login fails with incorrect password [P0]
### High Priority
Feature: User Authentication
Scenario: Login fails with non-existent user [P1]
Scenario: Account locks after 5 failed attempts [P1]
## Unit Tests
### Module: auth.validators
Test: test_validate_password_strength_accepts_strong_password [P1]
Test: test_validate_password_strength_rejects_weak_password [P1]
Test: test_validate_password_strength_requires_minimum_length [P1]
## Integration Tests
Test: Authentication API returns JWT token on successful login [P0]
Test: Authentication API rate limits after repeated failures [P1]
## E2E Tests
Test: User can register, login, and access protected resources [P0]
Test: User session expires after timeout [P1]
## Test Data
Valid Credentials:
- email: "[email protected]"
- password: "SecurePass123!"
Invalid Credentials:
- email: "[email protected]" (non-existent)
- password: "wrong" (incorrect)
## Coverage Summary
- Requirements Covered: 5/5 (100%)
- Happy Path: 5 scenarios
- Error Cases: 8 scenarios
- Edge Cases: 7 scenarios
- Total: 20 test scenarios
10. Include cleanup - Ensure tests clean up after themselves
"User must be able to..." → BDD scenario + E2E test
"System shall validate..." → Unit test for validator + BDD for user feedback
"Data must be..." → Unit test for data constraint + Integration test for persistence
"API endpoint..." → Integration test for API contract
"When X happens, Y should..." → BDD scenario for behavior + Unit test for logic
For each requirement, generate:
Provide test scenarios in requested format:
Gherkin/BDD - For human-readable acceptance tests
JSON - For test automation frameworks (use assets/test_suite_template.json)
Markdown - For documentation and review
Code snippets - For specific testing frameworks (Jest, PyTest, etc.)
When format not specified, provide Markdown with all test types included.
references/test_patterns.md - Detailed patterns for each test typereferences/coverage_checklist.md - Comprehensive coverage checklistassets/test_suite_template.json - JSON template for structured outputTake arabelatso/req-to-test from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.