# π― MCP World-Class Tester μ¬μ© κ°μ΄λ
**138λ² ν
μ€ν° νλ₯΄μλλ₯Ό νμ©ν 체κ³μ ν
μ€ν
**
> μ΄ κ°μ΄λλ MCP (Model Context Protocol)λ₯Ό ν΅ν΄ World-Class Tester νλ₯΄μλλ₯Ό νμ©νλ μ€μ λ°©λ²μ μ€λͺ
ν©λλ€.
---
## π λͺ©μ°¨
1. [MCP ν
μ€ν° νλ₯΄μλλ?](#mcp-ν
μ€ν°-νλ₯΄μλλ)
2. [κΈ°λ³Έ μ¬μ©λ²](#κΈ°λ³Έ-μ¬μ©λ²)
3. [μ€μ μλ리μ€λ³ μ¬μ©](#μ€μ -μλ리μ€λ³-μ¬μ©)
4. [λ¨κ³λ³ μν¬νλ‘μ°](#λ¨κ³λ³-μν¬νλ‘μ°)
5. [λ¬Έμ μλ μ°Έμ‘° μμ€ν
](#λ¬Έμ-μλ-μ°Έμ‘°-μμ€ν
)
---
## MCP ν
μ€ν° νλ₯΄μλλ?
### νΉμ§
**138λ² World-Class Tester**λ λ€μκ³Ό κ°μ νΉλ³ν κΈ°λ₯μ κ°μ§ MCP νλ₯΄μλμ
λλ€:
```markdown
π― μλ λ¬Έμ μ°Έμ‘°
- docs/WORLD_CLASS_TESTER_PERSONA.md (ν΅μ¬ λ°©λ²λ‘ )
- docs/WORLD_CLASS_TESTER_COMPETENCIES.md (μλ νμ€)
- docs/TESTER_USAGE_GUIDE.md (μ€μ μλ리μ€)
π 체κ³μ 5λ¨κ³ μν¬νλ‘μ°
Phase 1: Planning (15λΆ)
Phase 2: Test Case Writing (30λΆ)
Phase 3: Manual Testing (1-2μκ°)
Phase 4: Automation (2-4μκ°)
Phase 5: Reporting (30λΆ)
π νμ§ λ©νΈλ¦ μλ μΆμ
- Test Coverage: >80%
- Defect Detection Rate: >90%
- Flaky Test Rate: <5%
```
### νμ±ν λ°©λ²
λͺ¨λ AI λꡬ (Windsurf, Claude Desktop, Cursor, Antigravity)μμ:
```
"138λ² ν
μ€ν° νλ₯΄μλ λΆλ¬μμ€"
"138λ² World-Class Testerλ‘ μ νν΄μ€"
"@persona:138-world-class-tester"
```
---
## κΈ°λ³Έ μ¬μ©λ²
### μμ 1: μ κ· κΈ°λ₯ ν
μ€νΈ
```markdown
User: "138λ² ν
μ€ν° νλ₯΄μλλ‘ AI Chat κΈ°λ₯ ν
μ€νΈν΄μ€"
AI Response:
"World-Class Tester νλ₯΄μλλ‘ μ ννμ΅λλ€.
AI Chat κΈ°λ₯ ν
μ€νΈλ₯Ό μμνκ² μ΅λλ€.
λ¨Όμ ν
μ€ν
λ¬Έμλ₯Ό νμΈνκ² μ΅λλ€...
[docs/WORLD_CLASS_TESTER_PERSONA.md μ°Έμ‘°]
[docs/TESTER_USAGE_GUIDE.mdμ AI Chat μλλ¦¬μ€ μ μ©]
π PHASE 1: PLANNING (15λΆ)
μꡬμ¬ν λΆμμ μν΄ λͺ κ°μ§ μ§λ¬Έλλ¦¬κ² μ΅λλ€:
1. AI Chatμ μ£Όμ λͺ©μ μ 무μμΈκ°μ?
- μ°κ΅¬ μ§λ¬Έ λ΅λ³
- λ°μ΄ν° λΆμ μ§μ
- κΈ°ν
2. μ§μνλ AI λͺ¨λΈμ?
- Claude 3.5 Sonnet
- GPT-4
- λ λ€
3. μ
λ ₯ μ νμ¬νμ΄ μλμ?
- μ΅λ ν
μ€νΈ κΈΈμ΄
- νμΌ μ
λ‘λ μ§μ μ¬λΆ
4. μλ΅ μκ° λͺ©νλ?
- μΌλ°μ μΌλ‘ <10μ΄ κΆμ₯
5. μμλλ μλ¬ μλ리μ€λ?
- API μ€ν¨, νμμμ, λ€νΈμν¬ μ€λ₯
λ΅λ³ν΄μ£Όμλ©΄ ν
μ€νΈ κ³νμ μ립νκ² μ΅λλ€."
```
### μμ 2: Pre-release κ²μ¦
```markdown
User: "138λ² ν
μ€ν°λ‘ v2.1.0 λ¦΄λ¦¬μ€ μ κ²μ¦ν΄μ€"
AI Response:
"World-Class Testerλ‘ v2.1.0 Pre-release κ²μ¦μ μμν©λλ€.
[docs/WORLD_CLASS_TESTER_PERSONA.mdμ Pre-release Checklist μ μ©]
π PRE-RELEASE VERIFICATION CHECKLIST
β
Step 1: CI/CD Pipeline νμΈ
νμ¬ μνλ₯Ό μλ €μ£ΌμΈμ:
- [ ] Unit tests κ²°κ³Ό?
- [ ] Integration tests κ²°κ³Ό?
- [ ] E2E tests κ²°κ³Ό?
- [ ] Code coverage %?
β
Step 2: Critical Path Manual Testing (10κ° ν΅μ¬ νλ¦)
λ€μ κΈ°λ₯λ€μ μλμΌλ‘ ν
μ€νΈνκ² μ΅λλ€:
1. Login/Logout
2. User Registration
3. Create Project
4. Edit Project
5. AI Chat
6. File Upload/Download
7. Report Generation
8. Team Collaboration
9. Dashboard
10. User Settings
κ° νλͺ©μ Chrome DevToolsλ‘ κ²μ¦νκ³ κ²°κ³Όλ₯Ό λ³΄κ³ νκ² μ΅λλ€.
β
Step 3: Cross-Browser Testing
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Mobile (iOS/Android)
β
Step 4: Performance & Security
- Lighthouse μ μ
- OWASP ZAP μ€μΊ
- μ κ·Όμ± κ²μ¬
λͺ¨λ λ¨κ³λ₯Ό μλ£νκ³ GO/NO-GO κ²°μ μ μ 곡νκ² μ΅λλ€."
```
---
## μ€μ μλ리μ€λ³ μ¬μ©
### μλλ¦¬μ€ 1: λ²κ·Έ λ°κ²¬ μ
```markdown
User: "138λ² ν
μ€ν°λ‘ Login νμ΄μ§μμ λ²κ·Έ μ°Ύμμ€"
AI:
"Login νμ΄μ§ ν
μ€νΈλ₯Ό μμν©λλ€.
[Manual Testing 4-Step Workflow μ μ©]
Step 1: Preparation
β
Chrome DevTools νμ±ν νμΈ
β
Network ν λͺ¨λν°λ§ μμ
β
Console μλ¬ μΆμ
Step 2: Happy Path Testing
β
μ ν¨ν μ격μ¦λͺ
μΌλ‘ λ‘κ·ΈμΈ
β
'Remember me' κΈ°λ₯ νμΈ
β
리λ€μ΄λ μ
μ μ νμΈ
Step 3: Error Path Testing
β οΈ λ²κ·Έ λ°κ²¬!
π BUG-001: μλͺ»λ λΉλ°λ²νΈ μ
λ ₯ μ μλ¬ λ©μμ§ λλ½
π Environment:
- OS: Windows 11
- Browser: Chrome 120
- Version: v2.1.0
π Reproduction Steps:
1. Login νμ΄μ§ μ μ
2. μ¬λ°λ₯Έ μ΄λ©μΌ μ
λ ₯ (user@example.com)
3. μλͺ»λ λΉλ°λ²νΈ μ
λ ₯ (wrong123)
4. Login λ²νΌ ν΄λ¦
β Actual Result:
- μλ¬ λ©μμ§ νμ μ λ¨
- νμ΄μ§κ° reloadλ§ λ¨
- Consoleμ 401 μλ¬λ§ λ‘κ·Έ
β
Expected Result:
- λͺ
νν μλ¬ λ©μμ§: 'Invalid password. Please try again.'
- λΉλ°λ²νΈ νλμ ν¬μ»€μ€
- μ
λ ₯ν μ΄λ©μΌμ μ μ§
π₯ Severity: P1 - High (μ£Όμ μ¬μ©μ± λ¬Έμ )
π Reproduction Rate: Always (100%)
πΉ Evidence:
[μ€ν¬λ¦°μ· νμ]
[Console λ‘κ·Έ 첨λΆ]
π οΈ Suggested Fix:
\`\`\`typescript
// Add error handling in login handler
if (response.status === 401) {
setError('Invalid email or password');
passwordRef.current.focus();
}
\`\`\`
Step 4: Edge Case Testing κ³μ μ§ννκ² μ΅λλ€..."
```
### μλλ¦¬μ€ 2: E2E ν
μ€νΈ μμ± μμ²
```markdown
User: "138λ² ν
μ€ν°λ‘ Project Creation E2E ν
μ€νΈ μ½λ μμ±ν΄μ€"
AI:
"Project Creation E2E ν
μ€νΈλ₯Ό μμ±νκ² μ΅λλ€.
[docs/WORLD_CLASS_TESTER_PERSONA.mdμ E2E λ°©λ²λ‘ μ μ©]
π Test Plan:
1. Happy Path: μ μ νλ‘μ νΈ μμ±
2. Error Path: νμ νλ λλ½
3. Edge Case: κΈ΄ μ΄λ¦, νΉμλ¬Έμ
\`\`\`typescript
// tests/e2e/project-creation.spec.ts
import { test, expect } from '@playwright/test';
import { loginAsResearcher } from '../helpers/auth';
test.describe('Project Creation', () => {
test.beforeEach(async ({ page }) => {
await loginAsResearcher(page);
await page.goto('/projects');
});
test('TC001: should create project with valid data', async ({ page }) => {
// Step 1: Navigate to create form
await page.click('[data-testid="create-project-btn"]');
await expect(page).toHaveURL(/\/projects\/new/);
// Step 2: Fill form
await page.fill('[data-testid="project-name"]', 'Test Project Alpha');
await page.fill('[data-testid="project-description"]', 'E2E Test Project');
// Step 3: Set dates
const today = new Date().toISOString().split('T')[0];
await page.fill('[data-testid="start-date"]', today);
const futureDate = new Date();
futureDate.setMonth(futureDate.getMonth() + 6);
await page.fill('[data-testid="end-date"]', futureDate.toISOString().split('T')[0]);
// Step 4: Submit
await page.click('[data-testid="submit-btn"]');
// Step 5: Verify success
await expect(page.locator('[data-testid="success-toast"]')).toBeVisible();
await expect(page).toHaveURL(/\/projects\/\\d+/);
await expect(page.locator('h1')).toContainText('Test Project Alpha');
});
test('TC002: should show error for missing required field', async ({ page }) => {
await page.click('[data-testid="create-project-btn"]');
// Submit without name
await page.click('[data-testid="submit-btn"]');
// Verify error
const errorMsg = page.locator('[data-testid="error-message"]');
await expect(errorMsg).toBeVisible();
await expect(errorMsg).toContainText('Project name is required');
// Verify focus on name field
await expect(page.locator('[data-testid="project-name"]')).toBeFocused();
});
test('TC003: should handle long project name', async ({ page }) => {
await page.click('[data-testid="create-project-btn"]');
// Try 500 character name
const longName = 'A'.repeat(500);
await page.fill('[data-testid="project-name"]', longName);
await page.click('[data-testid="submit-btn"]');
// Should show validation error
const error = page.locator('[data-testid="error-message"]');
await expect(error).toContainText('maximum 200 characters');
});
});
\`\`\`
β
Test Coverage:
- Happy Path: β
- Error Handling: β
- Edge Cases: β
- Data-testid selectors: β (stable)
- Proper waits: β (no fixed timeouts)
π Next Steps:
1. Run tests: \`npx playwright test project-creation\`
2. Check for flakiness (run 10 times)
3. Add to CI/CD pipeline
4. Update test documentation"
```
---
## λ¨κ³λ³ μν¬νλ‘μ°
### 5-Phase Testing Process
```markdown
PHASE 1: PLANNING (15 min)
ββββββββββββββββββββββββ
User: "138λ² ν
μ€ν°λ‘ [Feature] ν
μ€νΈν΄μ€"
AI:
1. μꡬμ¬ν λΆμ (5κ° μ§λ¬Έ)
2. ν
μ€νΈ λ²μ μ μ
3. μ°μ μμ κ²°μ
Output: Test Plan document
PHASE 2: TEST CASE WRITING (30 min)
ββββββββββββββββββββββββ
AI:
1. Happy Path μλλ¦¬μ€ (5-10κ°)
2. Error Path μλλ¦¬μ€ (3-5κ°)
3. Edge Cases (3-5κ°)
Output: Test Cases (yaml/markdown)
PHASE 3: MANUAL TESTING (1-2 hours)
ββββββββββββββββββββββββ
AI: "Chrome DevToolsλ₯Ό μ΄κ³ ν
μ€νΈ μμ..."
1. Preparation checklist
2. Execute all test cases
3. Document results
4. Capture bugs (screenshots/videos)
Output: Test Results + Bug Reports
PHASE 4: AUTOMATION (2-4 hours)
ββββββββββββββββββββββββ
AI: "E2E ν
μ€νΈ μ½λ μμ±..."
1. Write Page Object Model
2. Implement test scripts
3. Add to CI/CD
4. Verify stability
Output: Playwright/Cypress code
PHASE 5: REPORTING (30 min)
ββββββββββββββββββββββββ
AI:
1. Summary (Pass/Fail counts)
2. Bug list (P0/P1/P2/P3)
3. Quality metrics
4. GO/NO-GO recommendation
Output: Test Report + Release Decision
```
---
## λ¬Έμ μλ μ°Έμ‘° μμ€ν
### MCP νλ₯΄μλκ° μλμΌλ‘ νμΈνλ λ¬Έμ
```markdown
π Documentation Auto-Reference Flow:
User Request
β
138λ² Tester Activated
β
Auto-check docs/ folder
ββ WORLD_CLASS_TESTER_PERSONA.md
β ββ Manual Testing 4-step
β ββ E2E Automation patterns
β ββ Bug Report template
β
ββ WORLD_CLASS_TESTER_COMPETENCIES.md
β ββ Testing levels (Unit/Integration/E2E)
β ββ Security testing (OWASP)
β ββ Quality metrics
β
ββ TESTER_USAGE_GUIDE.md
ββ 4 real scenarios
ββ Daily/Weekly/Sprint checklists
ββ FAQ & troubleshooting
β
Apply appropriate methodology
β
Execute systematic testing
β
Report with evidence
```
### μ€μ λμ μμ
```
User: "138λ² ν
μ€ν°λ‘ AI Chat ν
μ€νΈν΄μ€"
AI Internal Process:
1. Load persona (138-world-class-tester.txt)
2. Recognize: Testing request
3. Check: docs/TESTER_USAGE_GUIDE.md
4. Find: "Scenario 1: AI Chat testing"
5. Apply: Step-by-step workflow
6. Execute: Phase 1-5
7. Report: With evidence and recommendations
User sees:
"World-Class Tester νμ±ν. λ¬Έμ νμΈ μ€...
[Scenario 1 μ μ©] AI Chat ν
μ€νΈ μμν©λλ€."
```
---
## π‘ μ€μ ν
### Tip 1: λ¬Έμ λͺ
μμ μ°Έμ‘° μμ²
```
"138λ² ν
μ€ν°λ‘ μ ννκ³ , WORLD_CLASS_TESTER_PERSONA.mdμ
Pre-release Checklistλ₯Ό λ°λΌ κ²μ¦ν΄μ€"
```
### Tip 2: λ¨κ³λ³ μ€ν
```
"138λ² ν
μ€ν°λ‘ AI Chat ν
μ€νΈν΄μ€.
Phase 1λ§ λ¨Όμ μλ£νκ³ λ€μ λ¨κ³λ λ΄κ° μ§μν κ²"
```
### Tip 3: νΉμ 체ν¬λ¦¬μ€νΈ μ¬μ©
```
"138λ² ν
μ€ν°λ‘ Security Testing Checklist
(OWASP Top 10) μ μ©ν΄μ κ²μ¦ν΄μ€"
```
---
## π― μμ½
### MCP World-Class Testerμ ν΅μ¬ κ°μΉ
```markdown
β
μλ λ¬Έμ μ°Έμ‘°
β λ§€λ² κ°μ΄λ μ°Ύμ νμ μμ
β
체κ³μ μν¬νλ‘μ°
β 무μμ ν
μ€νΈ X, 5λ¨κ³ λ°©λ²λ‘ O
β
νμ€ κΈ°λ°
β IEEE, OWASP, NRC νμ€ μ μ©
β
μ€μ μ€μ¬
β μ΄λ‘ μ΄ μλ μ€μ μ½λ λ° μμ
β
νμ§ λ©νΈλ¦
β μ λμ νμ§ μΈ‘μ
```
### μ¬μ© μμ
```bash
# AI λꡬμμ (Windsurf, Claude Desktop, Cursor, Antigravity)
"138λ² World-Class Tester νλ₯΄μλ λΆλ¬μμ€"
# ν
μ€νΈ μμ²
"AI Chat κΈ°λ₯ ν
μ€νΈν΄μ€"
"v2.1.0 λ¦΄λ¦¬μ€ μ κ²μ¦ν΄μ€"
"Login λ²κ·Έ μ°Ύμμ€"
# AIκ° μλμΌλ‘:
1. λ¬Έμ νμΈ
2. λ°©λ²λ‘ μ μ©
3. 체κ³μ ν
μ€νΈ
4. μ¦κ±° κΈ°λ° λ³΄κ³
```
---
**π μ΄μ World-Class μμ€μ ν
μ€ν
μ μλνλ μν¬νλ‘μ°λ‘ μνν μ μμ΅λλ€!**