# Flutter Superport 통합 테스트 이 디렉토리는 실제 API를 호출하는 통합 테스트를 포함합니다. ## 개요 통합 테스트는 Mock을 사용하지 않고 실제 백엔드 API를 호출하여 전체 시스템의 동작을 검증합니다. 각 화면별로 사용자가 수행할 수 있는 모든 작업을 자동으로 테스트합니다. ## 테스트 구조 ``` test/integration/ ├── screens/ # 화면별 통합 테스트 │ ├── login_integration_test.dart │ ├── company_integration_test.dart │ ├── equipment_integration_test.dart │ ├── user_integration_test.dart │ ├── license_integration_test.dart # TODO │ └── warehouse_integration_test.dart # TODO ├── automated/ # 기존 자동화 테스트 프레임워크 │ └── framework/ # 재사용 가능한 테스트 유틸리티 ├── run_integration_tests.sh # 전체 테스트 실행 스크립트 └── README.md # 이 파일 ``` ## 사전 요구사항 1. **테스트 계정**: `admin@superport.kr` / `admin123!` 2. **API 서버**: 테스트 환경의 API 서버가 실행 중이어야 함 3. **환경 설정**: `.env` 파일에 API 엔드포인트 설정 (선택사항) ## 테스트 실행 방법 ### 전체 통합 테스트 실행 ```bash # 프로젝트 루트에서 실행 ./test/integration/run_integration_tests.sh ``` ### 개별 화면 테스트 실행 ```bash # 로그인 테스트 flutter test test/integration/screens/login_integration_test.dart # 회사 관리 테스트 flutter test test/integration/screens/company_integration_test.dart # 장비 관리 테스트 flutter test test/integration/screens/equipment_integration_test.dart # 사용자 관리 테스트 flutter test test/integration/screens/user_integration_test.dart ``` ## 테스트 시나리오 ### 1. 로그인 화면 (`login_integration_test.dart`) - ✅ 유효한 계정으로 로그인 - ✅ 잘못된 비밀번호로 로그인 시도 - ✅ 존재하지 않는 이메일로 로그인 시도 - ✅ 이메일 형식 검증 - ✅ 빈 필드로 로그인 시도 - ✅ 로그아웃 기능 - ✅ 토큰 갱신 기능 ### 2. 회사 관리 화면 (`company_integration_test.dart`) - ✅ 회사 목록 조회 - ✅ 새 회사 생성 (자동 생성 데이터) - ✅ 회사 상세 정보 조회 - ✅ 회사 정보 수정 - ✅ 회사 삭제 - ✅ 회사 검색 기능 - ✅ 활성/비활성 필터링 - ✅ 페이지네이션 - ✅ 대량 데이터 생성 및 조회 성능 테스트 ### 3. 장비 관리 화면 (`equipment_integration_test.dart`) - ✅ 장비 목록 조회 - ✅ 장비 입고 (생성) - ✅ 장비 상세 정보 조회 - ✅ 장비 출고 - ✅ 장비 검색 기능 - ✅ 상태별 필터링 (입고/출고) - ✅ 카테고리별 필터링 - ✅ 장비 정보 수정 - ✅ 대량 장비 입고 성능 테스트 ### 4. 사용자 관리 화면 (`user_integration_test.dart`) - ✅ 사용자 목록 조회 - ✅ 신규 사용자 생성 - ✅ 사용자 상세 정보 조회 - ✅ 사용자 정보 수정 - ✅ 사용자 상태 변경 (활성/비활성) - ✅ 역할별 필터링 - ✅ 회사별 필터링 - ✅ 사용자 검색 기능 - ✅ 사용자 삭제 - ✅ 비밀번호 변경 기능 ### 5. 라이선스 관리 화면 (`license_integration_test.dart`) - TODO - 라이선스 목록 조회 - 라이선스 등록 - 라이선스 갱신 - 만료 예정 라이선스 필터링 - 라이선스 삭제 ### 6. 창고 관리 화면 (`warehouse_integration_test.dart`) - TODO - 창고 위치 목록 조회 - 새 창고 위치 생성 - 창고 정보 수정 - 창고 삭제 - 활성/비활성 필터링 ## 테스트 데이터 생성 테스트는 `TestDataGenerator` 클래스를 사용하여 현실적인 테스트 데이터를 자동으로 생성합니다: - 실제 한국 기업명 사용 - 실제 제조사 및 제품 모델명 사용 - 유효한 사업자번호 및 전화번호 형식 - 타임스탬프 기반 고유 ID 생성 ## 주의사항 1. **데이터 정리**: 각 테스트는 생성한 데이터를 자동으로 정리합니다 (`tearDownAll`) 2. **테스트 격리**: 각 테스트는 독립적으로 실행 가능하도록 설계되었습니다 3. **실행 순서**: 일부 테스트는 다른 리소스(회사, 창고)에 의존하므로 순서가 중요할 수 있습니다 4. **성능**: 실제 API를 호출하므로 Mock 테스트보다 느립니다 5. **네트워크**: 안정적인 네트워크 연결이 필요합니다 ## 문제 해결 ### 로그인 실패 - 테스트 계정 정보 확인: `admin@superport.kr` / `admin123!` - API 서버 연결 상태 확인 ### 데이터 생성 실패 - 필수 필드 누락 확인 - API 권한 확인 - 중복 데이터 (사업자번호, 이메일 등) 확인 ### 테스트 데이터가 삭제되지 않음 - 테스트가 중간에 실패한 경우 수동으로 정리 필요 - 관리자 페이지에서 테스트 데이터 확인 및 삭제 ## 기여 방법 1. 새로운 화면 테스트 추가 시 동일한 패턴 따르기 2. 테스트 데이터는 항상 정리하기 3. 의미 있는 로그 메시지 포함하기 4. 실패 시나리오도 함께 테스트하기