# SUPERPORT 마스터 테스트 스위트 강화된 마스터 테스트 스위트는 모든 화면 테스트를 통합하여 병렬로 실행하고 상세한 리포트를 생성합니다. ## 주요 기능 ### 1. 병렬 테스트 실행 - 의존성이 없는 테스트들을 동시에 실행하여 전체 실행 시간 단축 - 최대 동시 실행 수 조절 가능 (기본값: 3) - 세마포어 기반 실행 제어로 리소스 관리 ### 2. 실시간 진행 상황 표시 ``` [2/5] ▶️ EquipmentIn 테스트 시작... [2/5] ✅ License 완료 (45초) [3/5] ❌ Company 실패 (12초) ``` ### 3. 에러 복원력 - 한 테스트가 실패해도 다른 테스트는 계속 진행 - 예외 발생 시 안전한 처리 - 상세한 에러 로그 기록 ### 4. 다양한 리포트 형식 #### HTML 리포트 - 시각적으로 보기 좋은 웹 기반 리포트 - 차트와 그래프로 결과 시각화 - 상세한 실패 정보 포함 #### Markdown 리포트 - Git 저장소에서 바로 볼 수 있는 형식 - 표와 섹션으로 구조화 - 성능 분석 및 권장사항 포함 #### JSON 리포트 - CI/CD 파이프라인 통합용 - 프로그래매틱 분석 가능 - Exit code 포함 ### 5. CI/CD 통합 - Jenkins, GitHub Actions 등과 완벽 호환 - Exit code 기반 성공/실패 판단 - JSON 형식의 구조화된 결과 ## 사용법 ### 기본 실행 ```bash # 병렬 모드로 모든 테스트 실행 ./run_master_test_suite.sh # 또는 직접 실행 flutter test test/integration/automated/master_test_suite.dart ``` ### 옵션 설정 코드에서 직접 옵션 수정: ```dart final options = TestSuiteOptions( parallel: true, // 병렬 실행 여부 verbose: false, // 상세 로그 출력 stopOnError: false, // 첫 에러 시 중단 generateHtml: true, // HTML 리포트 생성 generateMarkdown: true, // Markdown 리포트 생성 maxParallelTests: 3, // 최대 동시 실행 수 includeScreens: ['EquipmentIn', 'License'], // 특정 화면만 excludeScreens: ['Company'], // 특정 화면 제외 ); ``` ## 테스트 추가하기 ### 1. BaseScreenTest를 상속하는 새 테스트 클래스 생성 ```dart class MyScreenTest extends BaseScreenTest { @override ScreenMetadata getScreenMetadata() { return ScreenMetadata( screenName: 'MyScreen', // ... 메타데이터 ); } // ... 필수 메서드 구현 } ``` ### 2. MasterTestSuite에 테스트 추가 `_prepareScreenTests()` 메서드에 추가: ```dart if (_shouldIncludeScreen('MyScreen')) { screenTests.add(MyScreenTest( apiClient: apiClient, getIt: getIt, testContext: TestContext(), errorDiagnostics: errorDiagnostics, autoFixer: autoFixer, dataGenerator: dataGenerator, reportCollector: ReportCollector(), )); } ``` ## 리포트 확인 ### 생성 위치 - `test_reports/master_test_report_[timestamp].html` - `test_reports/master_test_report_[timestamp].md` - `test_reports/master_test_report_[timestamp].json` ### 리포트 내용 - 실행 개요 (시간, 환경, 모드) - 전체 결과 요약 - 화면별 상세 결과 - 실패 상세 정보 - 성능 분석 (가장 느린 테스트) - 권장사항 ## 성능 최적화 ### 병렬 실행 효율성 - 테스트가 균등하게 분배되도록 조정 - CPU 코어 수에 맞춰 `maxParallelTests` 설정 - 네트워크 대역폭 고려 ### 테스트 격리 - 각 테스트는 독립적인 컨텍스트 사용 - 리소스 충돌 방지 - 테스트 간 상태 공유 없음 ## 문제 해결 ### 테스트가 실패하는 경우 1. 개별 테스트 로그 확인 2. 리포트의 실패 상세 섹션 참조 3. 자동 수정 시도 확인 ### 성능이 느린 경우 1. 병렬 실행 수 증가 2. 네트워크 지연 확인 3. 개별 테스트 최적화 ### 리포트가 생성되지 않는 경우 1. `test_reports` 디렉토리 권한 확인 2. 디스크 공간 확인 3. 로그에서 에러 메시지 확인 ## 현재 포함된 테스트 1. **EquipmentIn** - 장비 입고 프로세스 2. **License** - 라이선스 관리 ## 향후 추가될 테스트 - Company - 회사 관리 - User - 사용자 관리 - Warehouse - 창고 관리 이들은 현재 BaseScreenTest 형식으로 마이그레이션 중입니다.