home / skills / masanao-ohba / claude-manifests / test-case-designer

test-case-designer skill

/skills/php-cakephp/test-case-designer

This skill designs comprehensive PHP/CakePHP test cases across unit, integration, and system levels with clear documentation.

npx playbooks add skill masanao-ohba/claude-manifests --skill test-case-designer

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
8.4 KB
---
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:**
```yaml
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:**
```php
/**
 * 単体テスト設計
 *
 * 対象: Individual methods/functions
 * 目的: Logic verification in isolation
 * モック: External dependencies
 */
Unit Test Criteria:
  - Single class/method focus
  - No database access
  - No external API calls
  - Fast execution (< 100ms)
  - Deterministic results
```

**Integration Tests:**
```php
/**
 * 結合テスト設計
 *
 * 対象: Component interactions
 * 目的: Verify integrations work
 * 実行: With real dependencies
 */
Integration Test Criteria:
  - Multiple components
  - Database interactions
  - Service integrations
  - Realistic scenarios
```

**System Tests:**
```php
/**
 * システムテスト設計
 *
 * 対象: End-to-end workflows
 * 目的: Full feature validation
 * 環境: Production-like
 */
System Test Criteria:
  - Complete user workflows
  - All components integrated
  - Performance validation
  - Security verification
```

### 3. CakePHP Test Format

**PHPUnit Test Structure:**
```php
/**
 * [機能名]のテスト
 *
 * 保証対象:
 * 1. [具体的な保証内容1]
 * 2. [具体的な保証内容2]
 * 失敗時の損失:
 * - [ビジネスへの影響]
 * - [ユーザーへの影響]
 */
public function test[MethodName](): void
{
    // Arrange (準備)
    // テストデータのセットアップ

    // Act (実行)
    // テスト対象の実行

    // Assert (検証)
    // 結果の確認
}
```

### 4. Test Case Design Patterns

**Boundary Value Analysis:**
```yaml
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:**
```yaml
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:**
```yaml
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

```markdown
# 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:
1. Identify testable conditions
2. Determine test type needed
3. Define success criteria
4. Identify edge cases
```

### Step 2: Test Case Creation
```
For each condition:
1. Create positive test case (happy path)
2. Create negative test cases (error paths)
3. Create boundary test cases
4. Create performance test cases (if applicable)
```

### Step 3: Test Data Design
```
For each test case:
1. Define input data
2. Define expected output
3. Define database state
4. 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
```php
/**
 * Model validation test template
 */
public function testValidation(): void
{
    // 保証対象1: 必須フィールド
    $user = $this->Users->newEmptyEntity();
    $user = $this->Users->patchEntity($user, []);
    $this->assertFalse($this->Users->save($user));
    $this->assertNotEmpty($user->getErrors());

    // 保証対象2: 正常データ
    $user = $this->Users->patchEntity($user, [
        'email' => '[email protected]',
        'password' => 'SecurePass123'
    ]);
    $this->assertTrue($this->Users->save($user));
}
```

### Component Tests
```php
/**
 * Component behavior test template
 */
public function testComponentMethod(): void
{
    // 保証対象1: 正常系
    $result = $this->Component->process($validData);
    $this->assertTrue($result);

    // 保証対象2: 異常系
    $result = $this->Component->process($invalidData);
    $this->assertFalse($result);
}
```

## Test Coverage Criteria

### Code Coverage Targets
```yaml
Minimum Coverage:
  - Unit Tests: 80%
  - Integration Tests: 60%
  - Overall: 70%

Critical Components:
  - Authentication: 95%
  - Payment Processing: 95%
  - Data Validation: 90%
```

### Requirement Coverage
```yaml
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
```yaml
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
```yaml
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

1. **Test Early**: Design tests with requirements
2. **Test Independence**: Each test should run standalone
3. **Clear Naming**: Test names describe what they test
4. **One Assert**: One logical assertion per test
5. **Fast Feedback**: Prioritize fast-running tests
6. **Maintainable**: Keep tests simple and readable

Remember: Good test design catches bugs before they reach production.

Overview

This skill designs comprehensive test cases for PHP and CakePHP applications, producing structured, documented test suites categorized into unit, integration, and system tests. It outputs standardized YAML and PHPUnit-style templates, risk-based prioritization, and coverage targets to align tests with requirements and business impact. The goal is clear, executable test artifacts that integrate into CakePHP test fixtures and CI pipelines.

How this skill works

The skill analyzes requirements and maps each to testable conditions, then generates positive, negative, boundary, and state-transition test cases. It classifies tests by type (unit, integration, system), assigns priority using a risk matrix, and produces documentation in a consistent format (YAML/markdown and PHPUnit templates). CakePHP-specific fixtures, controller/model/component patterns, and coverage targets are included for immediate use.

When to use it

  • When translating requirements into executable test cases for PHP/CakePHP features
  • Before implementation to drive test-first design or to prepare CI test suites
  • When assessing test coverage and identifying gaps across unit/integration/system levels
  • When preparing release test plans for high-risk components like auth or payments
  • When standardizing test documentation and fixtures across projects

Best practices

  • Design tests during requirement analysis to catch issues early
  • Keep tests independent and deterministic; avoid shared state across tests
  • Use clear, descriptive test IDs and names that map back to requirements
  • Prefer one logical assertion per test and fast unit tests for quick feedback
  • Include boundary, equivalence, and state-transition cases for thorough coverage
  • Prioritize P1 tests for blocking functions and critical business flows

Example use cases

  • Generate a Test Design Document for a new user registration feature with fixtures and test data requirements
  • Create unit tests for model validation and password hashing to meet 80% unit coverage target
  • Design integration tests for order processing that include DB updates and payment service interactions
  • Produce system-level end-to-end scenarios for a complete purchase workflow in production-like environment
  • Prepare regression suites focused on authentication and payment processing with high priority and coverage goals

FAQ

How does the skill decide test priority?

It uses a risk matrix combining impact and risk to assign P1/P2/P3 priorities; P1 covers blocking, high-impact tests.

Does it produce runnable CakePHP tests?

Yes — it generates PHPUnit-style templates, fixture lists, and suggested assertions tailored to CakePHP controllers, models, and components.