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 outputToolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
Use when implementing any feature or bugfix, before writing implementation code
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
Expert guidance for systematic backtesting of trading strategies. Use when developing, testing, stress-testing, or validating quantitative trading strategies. Covers "beating ideas to death" methodology, parameter robustness testing, slippage modeling, bias prevention, and interpreting backtest results. Applicable when user asks about backtesting, strategy validation, robustness testing, avoiding overfitting, or systematic trading development.
Cloud laboratory platform for automated protein testing and validation. Use when designing proteins and needing experimental validation including binding assays, expression testing, thermostability measurements, enzyme activity assays, or protein sequence optimization. Also use for submitting experiments via API, tracking experiment status, downloading results, optimizing protein sequences for better expression using computational tools (NetSolP, SoluProt, SolubleMPNN, ESM), or managing protein design workflows with wet-lab validation.
This skill should be used for time series machine learning tasks including classification, regression, clustering, forecasting, anomaly detection, segmentation, and similarity search. Use when working with temporal data, sequential patterns, or time-indexed observations requiring specialized algorithms beyond standard ML approaches. Particularly suited for univariate and multivariate time series analysis with scikit-learn compatible APIs.
Take 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.