| name | test-case-designer |
| description | Designs comprehensive test cases for PHP/CakePHP applications, categorizing them into unit, integration, and system tests with proper documentation format |
Test Case Designer
A specialized skill for designing test cases that ensure comprehensive coverage of requirements and functionality in PHP/CakePHP applications.
Core Responsibilities
1. Test Case Structure
Standard Test Case Format:
Test Case:
id: TC-[number]
requirement_id: REQ-[number]
type: unit|integration|system|e2e
priority: high|medium|low
description: [What is being tested]
preconditions:
- [Required setup]
- [Initial state]
test_steps:
1. [Action to perform]
2. [Next action]
expected_results:
- [Expected outcome]
- [Verification point]
postconditions:
- [Cleanup needed]
- [State after test]
test_data:
- [Required test data]
2. Test Categorization
Unit Tests:
Unit Test Criteria:
- Single class/method focus
- No database access
- No external API calls
- Fast execution (< 100ms)
- Deterministic results
Integration Tests:
Integration Test Criteria:
- Multiple components
- Database interactions
- Service integrations
- Realistic scenarios
System Tests:
System Test Criteria:
- Complete user workflows
- All components integrated
- Performance validation
- Security verification
3. CakePHP Test Format
PHPUnit Test Structure:
public function test[MethodName](): void
{
}
4. Test Case Design Patterns
Boundary Value Analysis:
Input: age (1-120)
Test Cases:
- TC-001: age = 0 (below minimum)
- TC-002: age = 1 (minimum)
- TC-003: age = 60 (typical)
- TC-004: age = 120 (maximum)
- TC-005: age = 121 (above maximum)
Equivalence Partitioning:
Input: user_type
Partitions:
- admin: Full access
- user: Limited access
- guest: Read-only
Test Cases:
- TC-001: Admin can delete
- TC-002: User cannot delete
- TC-003: Guest cannot modify
State Transition:
States: draft → submitted → approved → completed
Test Cases:
- TC-001: draft to submitted (valid)
- TC-002: draft to approved (invalid)
- TC-003: approved to submitted (invalid)
- TC-004: approved to completed (valid)
5. Test Documentation Template
# Test Design Document: [Feature]
## Test Scope
### In Scope
- [What will be tested]
### Out of Scope
- [What won't be tested]
## Test Strategy
### Unit Tests
| Test ID | Description | Type | Priority |
|---------|-------------|------|----------|
| UT-001 | Validate email format | Unit | High |
| UT-002 | Calculate order total | Unit | High |
### Integration Tests
| Test ID | Description | Components | Priority |
|---------|-------------|------------|----------|
| IT-001 | User login flow | Auth + DB | High |
| IT-002 | Order processing | Order + Payment | High |
### System Tests
| Test ID | Description | Workflow | Priority |
|---------|-------------|----------|----------|
| ST-001 | Complete purchase | End-to-end | High |
| ST-002 | User registration | Full flow | Medium |
## Test Data Requirements
### Database State
- Users: 10 test users with various roles
- Products: 50 test products
- Orders: 100 test orders in various states
### Test Fixtures
```php
protected $fixtures = [
'app.Users',
'app.Products',
'app.Orders',
'app.OrderItems'
];
Risk-Based Testing
High Risk Areas
- Payment processing
- User authentication
- Data security
Medium Risk Areas
- Reporting features
- Email notifications
Low Risk Areas
- Static content display
- Help documentation
## Test Case Generation Process
### Step 1: Requirement Analysis
For each requirement:
- Identify testable conditions
- Determine test type needed
- Define success criteria
- Identify edge cases
### Step 2: Test Case Creation
For each condition:
- Create positive test case (happy path)
- Create negative test cases (error paths)
- Create boundary test cases
- Create performance test cases (if applicable)
### Step 3: Test Data Design
For each test case:
- Define input data
- Define expected output
- Define database state
- Define external dependencies
### Step 4: Test Prioritization
Priority Matrix:
Impact
High Low
Risk High P1 P2
Low P2 P3
P1: Must test (blocking)
P2: Should test (important)
P3: Could test (nice to have)
## CakePHP Specific Test Cases
### Controller Tests
```php
/**
* Controller action test template
*/
public function testIndex(): void
{
// 保証対象1: 認証が必要
$this->get('/users');
$this->assertRedirect('/login');
// 保証対象2: 認証後アクセス可能
$this->session(['Auth.User.id' => 1]);
$this->get('/users');
$this->assertResponseOk();
// 保証対象3: データ表示
$this->assertResponseContains('User List');
}
Model Tests
public function testValidation(): void
{
$user = $this->Users->newEmptyEntity();
$user = $this->Users->patchEntity($user, []);
$this->assertFalse($this->Users->save($user));
$this->assertNotEmpty($user->getErrors());
$user = $this->Users->patchEntity($user, [
'email' => 'test@example.com',
'password' => 'SecurePass123'
]);
$this->assertTrue($this->Users->save($user));
}
Component Tests
public function testComponentMethod(): void
{
$result = $this->Component->process($validData);
$this->assertTrue($result);
$result = $this->Component->process($invalidData);
$this->assertFalse($result);
}
Test Coverage Criteria
Code Coverage Targets
Minimum Coverage:
- Unit Tests: 80%
- Integration Tests: 60%
- Overall: 70%
Critical Components:
- Authentication: 95%
- Payment Processing: 95%
- Data Validation: 90%
Requirement Coverage
Functional Requirements:
- All MUST requirements: 100%
- All SHOULD requirements: 80%
- All COULD requirements: 50%
Non-Functional Requirements:
- Performance: All critical paths
- Security: All auth points
- Usability: Key workflows
Output Examples
Example 1: Login Test Design
Test Suite: User Authentication
Unit Tests:
- UT-001: Password hashing algorithm
- UT-002: Token generation
- UT-003: Session validation
Integration Tests:
- IT-001: Database authentication
- IT-002: LDAP authentication
- IT-003: OAuth authentication
System Tests:
- ST-001: Complete login flow
- ST-002: Password reset flow
- ST-003: Two-factor authentication
Example 2: Order Processing Test Design
Test Suite: Order Management
Unit Tests:
- UT-001: Calculate item total
- UT-002: Apply discount rules
- UT-003: Validate inventory
Integration Tests:
- IT-001: Create order with payment
- IT-002: Update inventory on order
- IT-003: Send order notifications
System Tests:
- ST-001: Complete purchase workflow
- ST-002: Order cancellation workflow
- ST-003: Return/refund workflow
Best Practices
- Test Early: Design tests with requirements
- Test Independence: Each test should run standalone
- Clear Naming: Test names describe what they test
- One Assert: One logical assertion per test
- Fast Feedback: Prioritize fast-running tests
- Maintainable: Keep tests simple and readable
Remember: Good test design catches bugs before they reach production.