From 0a427da636532c3e3acf4cd71f5b6e50b620de93 Mon Sep 17 00:00:00 2001 From: Codex Date: Thu, 2 Jul 2026 13:14:13 +0900 Subject: [PATCH] Add tdc114plus testing policy --- ...dc114plus-development-policy-2026-07-02.md | 10 +- docs/tdc114plus-testing-policy-2026-07-02.md | 259 ++++++++++++++++++ ...plus-work-progress-timetable-2026-07-02.md | 15 +- 3 files changed, 276 insertions(+), 8 deletions(-) create mode 100644 docs/tdc114plus-testing-policy-2026-07-02.md diff --git a/docs/tdc114plus-development-policy-2026-07-02.md b/docs/tdc114plus-development-policy-2026-07-02.md index 29b0899..918ba1e 100644 --- a/docs/tdc114plus-development-policy-2026-07-02.md +++ b/docs/tdc114plus-development-policy-2026-07-02.md @@ -72,6 +72,10 @@ Flutter 앱 변경 시 최소 검증: ./scripts/flutter-docker.sh test ``` +상세 테스트 기준은 아래 정식 정책을 따른다. + +- `docs/tdc114plus-testing-policy-2026-07-02.md` + Baron SSO API 변경 시 최소 검증: - 변경한 backend/orgFront 영역의 기존 테스트 확인 @@ -100,7 +104,9 @@ Baron SSO API 변경 시 최소 검증: 1. `docs/tdc114plus-development-decision-brief-2026-07-01.md` 2. `docs/tdc114plus-work-progress-timetable-2026-07-02.md` 3. `docs/tdc114plus-development-policy-2026-07-02.md` -4. `docs/baron-sso-reference-source-policy-2026-07-02.md` -5. `docs/references/baron-safe-policies/` +4. `docs/tdc114plus-testing-policy-2026-07-02.md` +5. `docs/tdc114plus-api-contract-2026-07-02.md` +6. `docs/baron-sso-reference-source-policy-2026-07-02.md` +7. `docs/references/baron-safe-policies/` Baron Safe 참고 문서는 참고 자료이며, `tdc114plus`의 직접 정책보다 우선하지 않는다. diff --git a/docs/tdc114plus-testing-policy-2026-07-02.md b/docs/tdc114plus-testing-policy-2026-07-02.md new file mode 100644 index 0000000..2461680 --- /dev/null +++ b/docs/tdc114plus-testing-policy-2026-07-02.md @@ -0,0 +1,259 @@ +# tdc114plus 테스트 정책 + +작성일: 2026-07-02 +상태: v1.0 1차 개발 기준 확정 + +목적: `tdc114plus` Flutter 앱 개발 중 적용할 테스트 기준, 자동화 원칙, 단계별 검증 범위를 정의한다. 본 문서는 `docs/references/ai-testing/ai_testing_policy_draft.md`의 일반 원칙 중 `tdc114plus`에 적용 가능한 부분을 앱/API/보안 중심으로 재해석한 정식 정책이다. + +## 1. 적용 범위 + +본 정책은 아래 영역에 적용한다. + +- Flutter 앱 화면, 라우팅, 상태관리 +- API client, repository, provider +- API 계약 기반 model, DTO, JSON 변환 +- Baron SSO 로그인 연동 +- orgFront 직원/조직 데이터 연동 +- 전화번호, 개인정보, 즐겨찾기 로컬 저장 +- 전화걸기, 문자보내기 등 플랫폼 액션 + +현재 `tdc114plus`는 LLM/AI 추론 기능을 포함하지 않으므로 아래 항목은 1차 적용 대상에서 제외한다. + +- AI 모델 추론 결과 평가 +- Evaluator LLM 기반 자동 채점 +- multi-engine AI 교차 검증 +- 프롬프트 jailbreak/redteam matrix +- PSI 기반 AI 학습 데이터 drift 계산 + +위 항목은 향후 앱에 실제 AI 기능이 추가될 경우 별도 정책으로 확장한다. + +## 2. 기본 검증 게이트 + +Flutter 앱 코드를 변경한 모든 작업은 아래 검증을 통과해야 한다. + +```bash +./scripts/flutter-docker.sh analyze +./scripts/flutter-docker.sh test +``` + +추가로 Dart 파일을 많이 수정했거나 새 파일을 추가한 경우 formatter를 적용한다. + +```bash +docker run --rm -u 0:0 \ + -v /home/ubuntu/workspace/tdc114plus:/workspace \ + -w /workspace/app \ + ghcr.io/cirruslabs/flutter:stable \ + sh -lc "flutter pub get && dart format lib test && chown -R 1000:1000 /workspace/app" +``` + +검증 실패 상태의 코드는 `main` 브랜치에 반영하지 않는다. + +## 3. 테스트 강도 기준 + +### 3.1 강한 테스트가 필요한 영역 + +아래 영역은 결정론적 로직으로 보고 단위 테스트를 우선 작성한다. + +- API model `fromJson`, `toJson` +- API error parsing +- 전화번호 입력 검증 및 정규화 +- 로그인 성공/실패 상태 전이 +- 인증 token 저장/삭제 +- 직원검색 query/filter 생성 +- 가족사/조직 필터 상태 +- 즐겨찾기 추가/삭제/조회 +- 개인정보 표시/마스킹 정책 +- API 실패, 401, 403, 404, timeout 처리 + +이 영역의 테스트는 통과율 100%를 기준으로 한다. + +### 3.2 화면 테스트가 필요한 영역 + +아래 화면 흐름은 widget test 또는 integration test로 검증한다. + +- 앱 실행 후 로그인 화면 표시 +- 전화번호 입력 후 로그인 성공/실패 흐름 +- 직원목록 진입 +- 직원 검색어 입력과 결과 표시 +- 가족사 필터 선택/해제 +- 조직도 화면 탐색 +- 직원 상세 화면 표시 +- 전화걸기/문자보내기 액션 노출 +- 즐겨찾기 토글 + +Phase 3에서는 실제 API가 없으므로 mock 데이터와 fake repository를 사용한다. + +## 4. 단계별 테스트 전략 + +### 4.1 Phase 3: Mock 기반 1차 UI + +목표: + +- API 없이 앱의 핵심 화면 흐름을 검증한다. +- 확정 API 계약과 Dart model이 화면에서 자연스럽게 사용되는지 확인한다. + +필수 테스트: + +- mock 직원 목록 렌더링 +- 검색어 입력 시 목록 필터링 +- 가족사 필터 선택 시 목록 필터링 +- 직원 상세 진입 +- 즐겨찾기 토글 상태 변경 +- 로그인 화면에서 직원목록 화면으로 이동 + +완료 기준: + +- `flutter analyze` 통과 +- `flutter test` 통과 +- 주요 mock 시나리오 widget test 추가 + +### 4.2 Phase 4: 실제 API 연동 + +목표: + +- Baron SSO와 orgFront 연동 시 계약 불일치를 조기에 발견한다. +- 인증/권한/오류 처리 흐름을 검증한다. + +필수 테스트: + +- API response parsing +- 로그인 성공/실패 +- 미등록 사용자 오류 +- session token 저장/삭제 +- 직원목록 API 성공/실패 +- 조직도 API 성공/실패 +- 401/403 발생 시 재로그인 또는 오류 안내 +- 네트워크 timeout 대응 + +완료 기준: + +- API client/repository 단위 테스트 +- staging 또는 mock server 기반 연동 테스트 +- API 계약 문서와 구현 응답 필드 일치 확인 + +### 4.3 Phase 5: 핵심 액션 + +목표: + +- 전화걸기, 문자보내기, 즐겨찾기 기능을 사용자 흐름 기준으로 검증한다. + +필수 테스트: + +- 전화번호가 없는 직원의 call/sms 액션 비활성 +- 전화번호가 있는 직원의 call/sms URL 생성 +- 즐겨찾기 로컬 저장/삭제/복원 +- 앱 재실행 후 즐겨찾기 유지 + +완료 기준: + +- 플랫폼 액션 wrapper 테스트 +- 즐겨찾기 repository 테스트 +- 수동 검증 체크리스트 작성 + +### 4.4 Phase 6: 빌드/배포 준비 + +목표: + +- Android APK와 최소 iOS 준비 상태를 확인한다. +- 운영 배포 전 보안 민감 영역을 재검토한다. + +필수 테스트: + +- Android debug APK 빌드 +- 앱 시작 smoke test +- 로그인/검색/상세/즐겨찾기 주요 흐름 수동 검증 +- token 저장 위치 검토 +- 전화번호/이메일/직급 노출 범위 검토 + +완료 기준: + +- APK 빌드 성공 +- 주요 수동 검증 체크리스트 통과 +- 운영 배포 전 보안 재검토 항목 문서화 + +## 5. 커버리지 정책 + +초기 개발 속도를 고려하여 전체 라인 커버리지 수치를 즉시 강제하지 않는다. + +단계별 기준: + +| 단계 | 기준 | +| --- | --- | +| Phase 3 | 핵심 model과 mock UI 흐름 테스트 확보 | +| Phase 4 | API client/repository/error 처리 테스트 확보 | +| Phase 5 | 즐겨찾기와 연락 액션 테스트 확보 | +| Phase 6 | 주요 기능 회귀 테스트와 수동 검증 체크리스트 확보 | + +장기 목표: + +- 핵심 도메인/model/repository 라인 커버리지 80% 이상 +- 로그인, 개인정보, token 처리 영역 테스트 누락 없음 +- 주요 사용자 시나리오 90% 이상 테스트 또는 수동 체크리스트로 관리 + +## 6. 보안 민감 영역 테스트 + +아래 항목은 일반 UI 변경보다 높은 기준으로 검증한다. + +- 전화번호 로그인 +- SSO 미등록 사용자 처리 +- session token 저장/삭제 +- 로그아웃 +- 개인정보 노출 필드 +- 직원 검색/상세 조회 +- 네트워크 오류와 인증 만료 + +원칙: + +- 미등록 사용자 여부를 과도하게 드러내는 메시지를 피한다. +- 전화번호 원문을 로그에 남기지 않는다. +- token 값을 테스트 fixture나 로그에 실제값으로 남기지 않는다. +- 개인정보 마스킹 정책이 변경되면 model, UI, test를 함께 갱신한다. + +## 7. Mock 데이터 정책 + +Mock 데이터는 확정 API 계약과 같은 field 이름을 사용한다. + +필수 mock case: + +- 로그인 성공 사용자 +- 로그인 실패 사용자 +- 직원목록 0건 +- 직원목록 다건 +- 가족사 2개 이상 +- 조직도 parent/child 구조 +- 전화번호가 없는 직원 +- 이메일이 없는 직원 +- 즐겨찾기 등록된 직원 + +Mock 데이터가 API 계약과 달라지는 경우 API 계약 문서를 먼저 확인하고, 필요한 경우 계약 문서와 model/test를 함께 수정한다. + +## 8. 리포트 및 기록 + +자동화 검증 결과는 커밋 메시지 또는 작업 완료 보고에 아래 형식으로 기록한다. + +```text +검증: +- ./scripts/flutter-docker.sh analyze +- ./scripts/flutter-docker.sh test +``` + +실행하지 못한 검증이 있으면 이유를 함께 기록한다. + +## 9. 참고 문서와 우선순위 + +참고 원문: + +- `docs/references/ai-testing/ai_testing_policy_draft.md` +- `docs/references/ai-testing/tdc114plus_test_strategy.md` + +본 문서는 위 참고문서보다 `tdc114plus` 개발에 우선 적용한다. + +정책 우선순위: + +1. `docs/tdc114plus-development-decision-brief-2026-07-01.md` +2. `docs/tdc114plus-work-progress-timetable-2026-07-02.md` +3. `docs/tdc114plus-development-policy-2026-07-02.md` +4. `docs/tdc114plus-testing-policy-2026-07-02.md` +5. `docs/tdc114plus-api-contract-2026-07-02.md` +6. `docs/baron-sso-reference-source-policy-2026-07-02.md` +7. `docs/references/` diff --git a/docs/tdc114plus-work-progress-timetable-2026-07-02.md b/docs/tdc114plus-work-progress-timetable-2026-07-02.md index b56eaec..4edef6e 100644 --- a/docs/tdc114plus-work-progress-timetable-2026-07-02.md +++ b/docs/tdc114plus-work-progress-timetable-2026-07-02.md @@ -46,12 +46,13 @@ | 12 | API 계약 정리 | 완료 | Baron SSO 로그인 API, orgFront 직원/조직 API 계약 정리 | `docs/tdc114plus-api-contract-2026-07-02.md` | | 13 | API 계약 검토 및 확정 | 완료 | API 계약 초안의 추가 확인사항 검토 후 1차 구현 기준 확정 | `docs/tdc114plus-api-contract-2026-07-02.md` | | 14 | 데이터 모델 설계 | 완료 | 직원, 조직, 가족사, 즐겨찾기 모델 정의 | Dart model 및 model test | -| 15 | Mock 데이터 기반 화면 확장 | 다음 작업 | 직원목록, 검색, 가족사 필터, 조직도 화면을 mock 데이터로 우선 구현 | 동작 가능한 UI | -| 16 | Baron SSO 로그인 연동 | 대기 | 전화번호 입력 후 SSO 등록 인원 여부 확인 연동 | 로그인 client/repository | -| 17 | orgFront 데이터 연동 | 대기 | 직원/조직 데이터 API 연동 | directory/organization client | -| 18 | 전화/문자 액션 구현 | 대기 | `url_launcher` 기반 전화걸기/문자보내기 구현 | 연락 액션 | -| 19 | 즐겨찾기 구현 | 대기 | 1차 로컬 저장 기반 즐겨찾기 구현 | favorites feature | -| 20 | Android APK 빌드 확인 | 대기 | debug APK 빌드 및 실행 확인 | APK 산출물 | +| 15 | 테스트 정책 정식화 | 완료 | AI testing 참고 초안을 tdc114plus Flutter 앱/API/보안 중심 테스트 정책으로 재해석 | `docs/tdc114plus-testing-policy-2026-07-02.md` | +| 16 | Mock 데이터 기반 화면 확장 | 다음 작업 | 직원목록, 검색, 가족사 필터, 조직도 화면을 mock 데이터로 우선 구현 | 동작 가능한 UI | +| 17 | Baron SSO 로그인 연동 | 대기 | 전화번호 입력 후 SSO 등록 인원 여부 확인 연동 | 로그인 client/repository | +| 18 | orgFront 데이터 연동 | 대기 | 직원/조직 데이터 API 연동 | directory/organization client | +| 19 | 전화/문자 액션 구현 | 대기 | `url_launcher` 기반 전화걸기/문자보내기 구현 | 연락 액션 | +| 20 | 즐겨찾기 구현 | 대기 | 1차 로컬 저장 기반 즐겨찾기 구현 | favorites feature | +| 21 | Android APK 빌드 확인 | 대기 | debug APK 빌드 및 실행 확인 | APK 산출물 | ## 3. 단계별 타임테이블 @@ -63,6 +64,7 @@ | Phase 2-1 | 완료 | API 계약 초안 작성 | 개발 정책 확인 후 SSO 로그인 API, orgFront 직원/조직 API, 응답 필드, 오류 정책 정리 | API 계약 초안 작성 완료 | | Phase 2-2 | 완료 | API 계약 검토 및 확정 | token 종류, 전화번호 로그인 보안 수준, 개인정보 마스킹 범위, 즐겨찾기 동기화 여부 확인 | API 계약 확정본 | | Phase 2-3 | 완료 | Dart 데이터 모델 설계 | 확정된 API 계약 기준으로 직원, 조직, 로그인, 즐겨찾기 model 정의 | analyze/test 통과 | +| Phase 2-4 | 완료 | 테스트 정책 정식화 | AI testing 참고 초안을 tdc114plus 적용 기준으로 정리 | `docs/tdc114plus-testing-policy-2026-07-02.md` | | Phase 3 | 다음 | Mock 기반 1차 UI 완성 | 직원목록, 검색, 가족사 필터, 조직도, 상세 화면 구성 | API 없이 화면 흐름 확인 가능 | | Phase 4 | 이후 | 실제 API 연동 | SSO 로그인, orgFront 직원/조직 데이터 연동 | 등록 사용자 로그인 및 직원목록 조회 | | Phase 5 | 이후 | 핵심 액션 완성 | 전화걸기, 문자보내기, 즐겨찾기 저장 | 1차 기본 기능 수동 검증 | @@ -77,6 +79,7 @@ API 계약 정리 시 아래 문서를 우선 참고한다. - `docs/tdc114plus-development-policy-2026-07-02.md` +- `docs/tdc114plus-testing-policy-2026-07-02.md` - `docs/baron-sso-reference-source-policy-2026-07-02.md` - `docs/references/baron-safe-policies/api-contract.md` - `docs/references/baron-safe-policies/runtime-config.md`