docs: 테스트 작성 원칙 문서 중복 제거

- 섹션 1 핵심 원칙에 상세 섹션 참조 추가 (중복 설명 제거)
- 섹션 2 금지 사항에 참조 추가
- 섹션 4 유지 기준에 참조 추가
- 섹션 5 삭제 대상을 표 형식으로 정리 (중복 제거)
- 섹션 8 체크리스트 간소화 (상세 내용은 해당 섹션 참조)
This commit is contained in:
Claude-51124 2026-01-03 13:00:58 +09:00
parent 5547b280ce
commit 73768b38ef

View File

@ -11,10 +11,10 @@
**목표**: 테스트 코드를 매번 재작성하지 않고 재사용 가능하게 관리 **목표**: 테스트 코드를 매번 재작성하지 않고 재사용 가능하게 관리
**원칙**: **원칙** (상세: 섹션 2-5 참조):
- **재사용성 우선**: 공통 테스트 로직은 fixtures/유틸리티로 추출 - **재사용성 우선**: 공통 테스트 로직은 fixtures/유틸리티로 추출 (섹션 3)
- **자동화 필수**: pytest 기반 자동 테스트만 유지, 수동 스크립트는 작업 완료 즉시 삭제 - **자동화 필수**: pytest 기반 자동 테스트만 유지 (섹션 6)
- **중복 제거**: 동일 기능 테스트는 하나로 통합 - **중복 제거**: 동일 기능 테스트는 하나로 통합 (섹션 4)
--- ---
@ -29,11 +29,11 @@
### 금지 사항 ### 금지 사항
| 금지 | 이유 | | 금지 | 이유 | 참조 |
|------|------| |------|------|------|
| `tests/`에 실험 스크립트 저장 | 자동 테스트와 혼재, 정리 어려움 | | `tests/`에 실험 스크립트 저장 | 자동 테스트와 혼재, 정리 어려움 | 섹션 5, 6 |
| 수동 실행 스크립트 장기 보관 | 재작성 비효율 유발 | | 수동 실행 스크립트 장기 보관 | 재작성 비효율 유발 | 섹션 5 |
| 중복 테스트 파일 유지 | 유지보수 비용 증가 | | 중복 테스트 파일 유지 | 유지보수 비용 증가 | 섹션 4 |
--- ---
@ -78,10 +78,10 @@ def test_intent_classification(mock_llm_service):
| TDD 단계별 테스트 파일 | 최종 버전만 유지 | | TDD 단계별 테스트 파일 | 최종 버전만 유지 |
| `test_*_vs_*.py` 비교 테스트 | troubleshooting 기록 후 삭제 | | `test_*_vs_*.py` 비교 테스트 | troubleshooting 기록 후 삭제 |
### 유지 기준 ### 유지 기준 (상세: 섹션 6 참조)
- **유지**: pytest로 재현 가능한 자동 테스트 - **유지**: pytest로 재현 가능한 자동 테스트
- **삭제**: 임시 실험, 비교 테스트, refactoring 테스트 - **삭제**: 임시 실험, 비교 테스트, refactoring 테스트 (섹션 5)
--- ---
@ -89,10 +89,13 @@ def test_intent_classification(mock_llm_service):
### 즉시 삭제 대상 ### 즉시 삭제 대상
1. **리팩토링 테스트**: `test_*_refactoring.py` (작업 완료 후) | 대상 | 패턴 | 처리 시점 |
2. **비교 실험**: `test_*_vs_*.py` (결과 troubleshooting에 기록 후) |------|------|----------|
3. **관찰용 스크립트**: "서비스 코드 수정 없이 관찰" 목적의 스크립트 | **리팩토링 테스트** | `test_*_refactoring.py` | 작업 완료 후 |
4. **실험 결과 파일**: `.md`, `.json` 결과 파일 (troubleshooting 문서화 후) | **비교 실험** | `test_*_vs_*.py` | troubleshooting 기록 후 |
| **관찰용 스크립트** | "서비스 코드 수정 없이 관찰" 주석 | 작업 완료 즉시 |
| **수동 실행 스크립트** | `python3` 직접 실행, pytest 미적용 | 작업 완료 즉시 (섹션 6) |
| **실험 결과 파일** | `.md`, `.json` 결과 파일 | troubleshooting 문서화 후 |
### 정리 프로세스 ### 정리 프로세스
@ -152,24 +155,21 @@ grep -l "import pytest\|@pytest" tests/test_*.py
### 테스트 작성 전 ### 테스트 작성 전
- [ ] 동일한 테스트 로직이 이미 존재하는가? (재사용 가능한지 확인) - [ ] 동일한 테스트 로직이 이미 존재하는가? (섹션 3 재사용성 확인)
- [ ] 공통 모킹/데이터가 있다면 `conftest.py`에 추가할 수 있는가? - [ ] 공통 모킹/데이터가 있다면 `conftest.py`에 추가할 수 있는가? (섹션 3)
- [ ] pytest 자동 테스트인가? (수동 스크립트면 `scripts/` 사용) - [ ] pytest 자동 테스트인가? (섹션 6 기준 확인)
- [ ] `import pytest` 또는 `@pytest` 데코레이터 포함? (섹션 6 기준)
### 테스트 파일 추가 전 ### 테스트 파일 추가 전
- [ ] 중복 테스트 파일이 있는가? (통합 가능한지 확인) - [ ] 중복 테스트 파일이 있는가? (섹션 4 통합 가능한지 확인)
- [ ] 임시 실험 파일인가? (작업 완료 시 삭제 계획 수립) - [ ] 임시 실험 파일인가? (섹션 5 삭제 계획 수립)
- [ ] 네이밍 규칙 준수 (`test_{기능}.py`) - [ ] 네이밍 규칙 준수 (섹션 7)
- [ ] `pytest tests/test_*.py` 명령으로 실행 가능한가?
### 정리 시점 ### 정리 시점 (섹션 5, 9 참조)
- [ ] 리팩토링/비교 테스트 → troubleshooting 기록 후 삭제 - [ ] 리팩토링/비교 테스트 → troubleshooting 기록 후 삭제
- [ ] 실험 스크립트 → 작업 완료 즉시 삭제 - [ ] 실험/수동 스크립트 → 작업 완료 즉시 삭제
- [ ] 중복 테스트 → 통합 또는 삭제 - [ ] 중복 테스트 → 통합 또는 삭제
- [ ] pytest 없이 직접 실행하는 파일 → 삭제 또는 pytest로 변환
--- ---