AI Builder - Code Test
This skill creates and executes comprehensive test suites to verify code quality and functionality. As a QA Engineer expert, you'll design test plans, write automated tests, perform manual testing, analyze results, identify issues, and create backlogs for changes, bugs, or improvements.
When to Use This Skill
- User asks to test a backlog or feature
- User requests test creation or execution
- Code review is complete and testing is needed
- User wants to verify implementation meets requirements
- User asks to run test suite
- User wants to validate a sprint before completion
Prerequisites
This skill requires:
- Code implementation completed
- Code review completed (recommended)
04-prd/- Product Requirements Document (business requirements and acceptance criteria)07-tech-specs/- Engineering standards and constraintsfeatures/folder with feature design and implementation docs10-sprints/folder with backlog and test plan{SRC}/folder (organized as defined in source-code-structure.md)- Access to source code and running environment
Feature-Driven Testing Workflow
CRITICAL: This skill follows a strict feature-driven approach where feature-name is the index for the entire project:
For Each Backlog:
- Read backlog.md from
10-sprints/SPRINT-XX-descriptive-name/[BACKLOG_TYPE]-XX-[feature-name]-<sub-feature>.md - Extract the
feature-namefrom the backlog file name - Read
features/features-index.mdto find the feature file - Read feature documentation in this order:
features/[feature-name].md- Feature definition (WHAT/WHY/SCOPE)features/flows/[feature-name].md- User flows and process flows (if exists)features/contracts/[feature-name].md- API/data contracts (if exists)features/impl/[feature-name].md- Implementation notes (if exists)
- Locate code and test files in
{SRC}/usingfeatures/impl/[feature-name].md - Write/execute tests following
07-tech-specs/testing-standards.md - Update
backlog.mdwith test results and findings
This approach ensures AI testers can test large projects without reading all code at once.
Your Roles in This Skill
See dev-swarm/docs/general-dev-stage-rule.md for role selection guidance.
Role Communication
See dev-swarm/docs/general-dev-stage-rule.md for the required role announcement format.
Test Types Overview
This skill handles multiple test types:
- Unit Tests: Test individual functions/components in isolation
- Integration Tests: Test component interactions and data flow
- API Tests: Test REST/GraphQL endpoints, contracts, error handling
- CLI Tests: Test command-line interfaces and scripts
- Web UI Tests: Test web interfaces (Playwright, Selenium, Cypress)
- Mobile UI Tests: Test mobile apps (if applicable)
- Log Analysis: Verify logging, monitoring, error tracking
- Performance Tests: Load testing, stress testing, benchmarks
- Security Tests: Vulnerability scanning, penetration testing
Instructions
Follow these steps in order:
Step 0: Verify Prerequisites and Gather Context (Feature-Driven Approach)
IMPORTANT: Follow this exact order to efficiently locate all relevant context:
-
Identify the backlog to test:
- User specifies which backlog to test
- Or test latest reviewed backlog from sprint
10-sprints/ └── SPRINT-XX-descriptive-name/ └── [BACKLOG_TYPE]-XX-[feature-name]-<sub-feature>.md- Locate the sprint README at
10-sprints/SPRINT-XX-descriptive-name/README.mdfor required progress log updates
-
Read the backlog file:
- Understand requirements and acceptance criteria
- Read the test plan defined in backlog
- Extract the
feature-namefrom the file name (CRITICAL) - Verify
Feature Namein backlog metadata matches the file name - If they do not match, stop and ask the user to confirm the correct feature name
- Note backlog type (FEATURE/CHANGE/BUG/IMPROVE)
- Identify success criteria
-
Read testing standards:
- Understand test coverage requirements
- Note test frameworks and conventions
-
Read PRD and tech specs:
- Read
04-prd/(all markdown files) - Product requirements and acceptance criteria for the feature - Read
07-tech-specs/(all markdown files) - Technical specifications and engineering standards - Understand the business context and technical constraints
- Read
-
Read feature documentation (using feature-name as index):
- Read
features/features-index.mdto confirm feature exists - Read
features/[feature-name].md- Feature definition (expected behavior) - Read
features/flows/[feature-name].md- User flows (test these flows) - Read
features/contracts/[feature-name].md- API contracts (test these contracts) - Read
features/impl/[feature-name].md- Implementation notes (what was built)
- Read
-
Locate code and tests:
- Use
features/impl/[feature-name].mdto find code locations - Navigate to
{SRC}/directory - Check existing test files in
{SRC}/(locations from features/impl/[feature-name].md) - Identify files to test
- Use
-
Read sprint test plan:
- Check
10-sprints/SPRINT-XX-descriptive-name/README.mdfor sprint-level test plan - Understand end-user test scenarios
- Note manual vs automated test requirements
- Check
-
Determine test scope:
- What test types are needed?
- Manual or automated or both?
- Environment requirements?
DO NOT read the entire codebase. Use feature-name to find only relevant files.
Checklist and Status Rules (Backlog + Sprint)
Apply these rules whenever you test a backlog or sprint:
- For any checklist, acceptance criteria, or test plan, use task list items and mark results as:
[x]= pass[-]= no test needed
- After testing a backlog, update its status to
Done. - After finishing a backlog test, check if any backlogs remain in the sprint README.
- If none remain, test the sprint-level checklist items in the sprint README, mark each item, and set the sprint status to
Completed.
- If none remain, test the sprint-level checklist items in the sprint README, mark each item, and set the sprint status to
Test Method Priority
Use this priority order when choosing test methods:
curlcommands (highest priority)playwright-browser-*skills for web UI (must use browser for any web UI item)- Write test code
- Write unit tests
Step 1: Design Test Strategy
Before writing tests, plan the approach:
-
Identify test scenarios:
Happy Path:
- Normal, expected user flows
- Valid inputs and operations
- Successful outcomes
Edge Cases:
- Boundary values (min, max, zero, negative)
- Empty inputs
- Very large inputs
- Special characters
Error Cases:
- Invalid inputs
- Missing required data
- Permission denials
- Network failures
- System errors
Security Cases:
- SQL injection attempts
- XSS attempts
- Authentication bypass attempts
- Authorization violations
- CSRF attacks
-
Select test types:
- Which test types are appropriate?
- What can be automated?
- What requires manual testing?
- What's the priority order?
-
Define success criteria:
- What does passing mean?
- What coverage is needed?
- Performance benchmarks?
- Security requirements?
Step 2: Write Automated Tests
Create automated test suites based on test type:
Unit Tests
Test individual functions/components in isolation:
Best Practices:
- Test one thing per test case
- Clear, descriptive test names
- Arrange-Act-Assert pattern
- Mock external dependencies
- Test both success and failure paths
Integration Tests
Test component interactions:
API Tests
Test endpoints and contracts:
CLI Tests
Test command-line interfaces:
Web UI Tests (Playwright/Cypress)
Test web interfaces:
Step 3: Execute Manual Tests
For scenarios that can't be easily automated:
-
Follow test plan from backlog:
- Execute each manual test step
- Use curl for API testing
- Use CLI for command testing
- Use browser for UI testing
-
Document test execution:
- Record what was tested
- Note any issues encountered
- Capture screenshots/logs for failures
- Time performance-critical operations
-
Test across environments:
- Development environment
- Different browsers (Chrome, Firefox, Safari)
- Different devices (mobile, tablet, desktop)
- Different operating systems (if applicable)
Step 4: Analyze Logs
Review application logs for issues:
-
Check for errors:
- Unhandled exceptions
- Stack traces
- Error messages
-
Verify logging quality:
- Appropriate log levels (debug, info, warn, error)
- No sensitive data in logs (passwords, tokens)
- Sufficient context in log messages
- Proper error tracking
-
Monitor performance:
- Slow queries or operations
- Memory usage patterns
- Resource leaks
-
Security audit:
- No secrets logged
- Proper access control logging
- Suspicious activity detection
Step 5: Performance Testing (When Needed)
For performance-critical features:
-
Load testing:
- Simulate multiple concurrent users
- Measure response times
- Identify bottlenecks
-
Stress testing:
- Push system beyond normal limits
- Find breaking points
- Test recovery behavior
-
Benchmark key operations:
- Database query performance
- API response times
- Page load times
Step 6: Analyze Results and Identify Issues
Categorize findings into three types:
1. Changes (Doesn't meet requirements)
Implementation doesn't meet original requirements:
- Missing acceptance criteria
- Incorrect behavior vs specification
- Doesn't follow test plan
- Feature doesn't work as designed
Action: Create change type backlog
2. Bugs (Defects found)
Code has defects or errors:
- Functional bugs (incorrect results)
- UI bugs (broken layouts, wrong text)
- API bugs (wrong status codes, incorrect responses)
- Performance bugs (timeouts, slowness)
- Security vulnerabilities
- Crashes or exceptions
- Data corruption
Action: Create bug type backlog
3. Improvements (Enhancement opportunities)
Non-critical enhancements:
- Better error messages
- UX improvements
- Performance optimizations
- Additional validation
- Better logging
- Test coverage gaps
- Accessibility improvements
Action: Create improve type backlog
Step 7: Create Backlogs for Issues
For each issue found, create a backlog:
-
Determine severity:
- Critical: System unusable, data loss, security breach
- High: Major feature broken, significant user impact
- Medium: Minor feature broken, workaround exists
- Low: Cosmetic issues, minor improvements
-
Create backlog file in
10-sprints/:Test Bug Backlog Template:
# Backlog: [Type] - [Brief Description] ## Type [change | bug | improve] ## Severity [critical | high | medium | low] ## Original Feature/Backlog Reference to original backlog that was tested ## Issue Description Clear description of the bug or issue ## Steps to Reproduce 1. Step-by-step instructions to reproduce 2. Include specific inputs/actions 3. Note environment details ## Expected Behavior What should happen ## Actual Behavior What actually happens ## Test Evidence - Screenshots - Log excerpts - Error messages - Performance metrics ## Affected Components - Files/functions involved - APIs or UI elements broken ## Reference Features Related features to consult ## Test Plan How to verify the fix works -
Notify Project Management:
- Critical issues need immediate attention
- High severity bugs should be prioritized
- Medium/low can be batched
Step 8: Create Test Report
Document test results:
-
Test Summary:
- Total test cases executed
- Passed vs Failed
- Test coverage achieved
- Time taken
-
Test Results by Type:
- Unit tests: X passed, Y failed
- Integration tests: X passed, Y failed
- API tests: X passed, Y failed
- UI tests: X passed, Y failed
- Manual tests: X passed, Y failed
-
Issues Found:
- Changes required: count
- Bugs found: count
- Improvements suggested: count
- By severity breakdown
-
Test Decision:
- Passed: All tests pass, ready for production
- Passed with minor issues: Non-critical improvements noted
- Failed: Critical issues must be fixed before release
- Blocked: Cannot test due to environment or dependency issues
Step 9: Finalize and Commit
CRITICAL: Follow this process to safely commit changes and update tracking:
-
Update Tracking Files:
- Update
backlog.md:- Change status to
Doneafter testing completes - Mark all checklist items (acceptance criteria/test plan) as
[x]pass or[-]no test needed - Add "Testing Notes" section:
- Test Summary: Passed/Failed counts
- Issues Found: Bug backlogs created
- Decision: Passed/Failed
- Change status to
- Update feature documentation with test results
- Update
10-sprints/.../README.md:- Update status in table
- Add progress log entry
- If all backlogs are Done, mark sprint-level checklist items as
[x]pass or[-]no test needed - If sprint-level checks are complete, set sprint status to
Completed
- Update
-
Request Human Review:
- Present the test results and plan to commit
- Ask user: "Please review the results. If approved, I will commit and close the backlog."
- Wait for approval.
-
Commit the Tests/Fixes (Content):
- Run
git add .to stage all changes - Unstage the backlog file and sprint README (
git reset HEAD <path-to-backlog> <path-to-sprint-readme>) - Check if there are staged changes:
- If yes:
- Draft conventional commit message (e.g., "test: add tests for [feature-name]")
- Commit:
git commit -m "test: ..." - Get Commit ID:
git rev-parse --short HEAD
- If no (only current backlog updated):
- Skip to next step
- If yes:
- Run
-
Update Backlog with Commit ID:
- If a commit was made, append "Test Commit:
[commit-id]" to the "Testing Notes" inbacklog.md
- If a commit was made, append "Test Commit:
-
Commit the Backlog (Metadata):
- Stage
backlog.mdand sprintREADME.md - Commit:
git commit -m "docs([feature-name]): update backlog status to Done"
- Stage
-
Notify user:
- Confirm completion
- If Done: "Backlog closed successfully"
- If Failed: "Backlog returned to development"
This two-step commit process ensures history is preserved before the backlog is updated with the commit reference.