테스트 전략 개요
Multi-SaaS Kit의 테스트 시스템과 전략을 소개합니다.
개요
Multi-SaaS Kit은 448개 테스트, 1,042개 assertion으로 구성된 견고한 테스트 시스템을 갖추고 있습니다. PHPUnit과 Pest 기반으로 작성되어 있으며, Core 모듈에 대해서는 TDD 접근법을 적용합니다.
┌─────────────────────────────────────────────────────────────┐
│ 테스트 피라미드 │
│ │
│ /\ │
│ / \ E2E 테스트 (선택) │
│ /----\ │
│ / \ │
│ / \ Feature 테스트 (통합) │
│ /----------\ │
│ / \ │
│ / \ Unit 테스트 (단위) │
│ /----------------\ │
│ │
│ Unit : Feature = 7 : 3 비율 권장 │
└─────────────────────────────────────────────────────────────┘
테스트 스택
| 도구 | 역할 |
|---|---|
| PHPUnit | 테스트 프레임워크 |
| Pest | PHPUnit 래퍼 (간결한 문법) |
| SQLite In-Memory | 테스트 데이터베이스 |
| Factory | 테스트 데이터 생성 |
| RefreshDatabase | 테스트 간 DB 초기화 |
테스트 DB 분리
RefreshDatabase는 PHPUnit 실행 중 APP_ENV=testing에서 내부적으로 migrate:fresh를 호출할 수 있습니다. MSK의 DB 안전 가드는 이 테스트 러너 경로만 허용하므로, phpunit.xml과 tests/TestCase에서 운영 DB가 아닌 별도 테스트 DB 또는 SQLite in-memory를 사용하도록 반드시 고정해야 합니다.
테스트 현황
| 영역 | 테스트 수 | Assertions | 설명 |
|---|---|---|---|
| Core/Permission | 15 | 45 | 권한 시스템 (Level 0~6, ADR-058) |
| Core/Tenant | 17 | 51 | 테넌트 격리 |
| Core/Guardian | 72 | 216 | 후견인 관계 (Extension) |
| Core/Impersonate | 66 | 198 | 사용자 전환 (Extension) |
| Models | 81 | 243 | User, Tenant, Organization |
| Seeder | 39 | 117 | CoreSeeder 검증 |
| Filament | 41 | 123 | Admin Panel 기능 |
| Security | 8 | 24 | Cross-Tenant 보안 |
| Total | 448 | 1,042 | - |