- 모든 서비스 메서드 시그니처를 실제 구현에 맞게 수정 - TestDataGenerator 제거하고 직접 객체 생성으로 변경 - 모델 필드명 및 타입 불일치 수정 - 불필요한 Either 패턴 사용 제거 - null safety 관련 이슈 해결 수정된 파일: - test/integration/screens/company_integration_test.dart - test/integration/screens/equipment_integration_test.dart - test/integration/screens/user_integration_test.dart - test/integration/screens/login_integration_test.dart
5.2 KiB
5.2 KiB
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 # 이 파일
사전 요구사항
- 테스트 계정:
admin@superport.kr/admin123! - API 서버: 테스트 환경의 API 서버가 실행 중이어야 함
- 환경 설정:
.env파일에 API 엔드포인트 설정 (선택사항)
테스트 실행 방법
전체 통합 테스트 실행
# 프로젝트 루트에서 실행
./test/integration/run_integration_tests.sh
개별 화면 테스트 실행
# 로그인 테스트
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 생성
주의사항
- 데이터 정리: 각 테스트는 생성한 데이터를 자동으로 정리합니다 (
tearDownAll) - 테스트 격리: 각 테스트는 독립적으로 실행 가능하도록 설계되었습니다
- 실행 순서: 일부 테스트는 다른 리소스(회사, 창고)에 의존하므로 순서가 중요할 수 있습니다
- 성능: 실제 API를 호출하므로 Mock 테스트보다 느립니다
- 네트워크: 안정적인 네트워크 연결이 필요합니다
문제 해결
로그인 실패
- 테스트 계정 정보 확인:
admin@superport.kr/admin123! - API 서버 연결 상태 확인
데이터 생성 실패
- 필수 필드 누락 확인
- API 권한 확인
- 중복 데이터 (사업자번호, 이메일 등) 확인
테스트 데이터가 삭제되지 않음
- 테스트가 중간에 실패한 경우 수동으로 정리 필요
- 관리자 페이지에서 테스트 데이터 확인 및 삭제
기여 방법
- 새로운 화면 테스트 추가 시 동일한 패턴 따르기
- 테스트 데이터는 항상 정리하기
- 의미 있는 로그 메시지 포함하기
- 실패 시나리오도 함께 테스트하기