Fixture 기반 테스트 데이터 전략 - KimGyuBek/Threadly GitHub Wiki
Threadly 프로젝트의 API 통합 테스트는 테스트 데이터를 Json Fixture 기반으록 관리한다.
테스트 목적에 따라 필요한 데이터만 시나리오 단위로 불러올 수 있으며, 각 테스트 데이터 디렉토리에는 해당 시나리오를 설명하는 README.md 문서가 함께 존재핸다.
이 테스트 데이터 구조를 통해 테스트가 독립적이고 재현 가능한 환경에서 실행되며, 테스트 데이터의 의미와 사용 방법이 명확하게 유지된다.
-
도메인 단위 분리
- 주요 도메인별로 상위 디렉토리를 구분한다.
- 예시:
users,follows,posts등
-
시나리오 단위 분리
- 각 도메인별로 시나리오/테스트 목적에 따라 하위 디렉토리를 구분한다.
- 예시:
users:get-user,get-user-profile,get-user-list
-
시나리오 별 세부 데이터 구성
- 각 시나리오별 필요한 데이터를 도메인 단위로 구성한다.
- 예시:
user.json,user-profile.json,follow.json
-
문서화
- 모든 시나리오 단위의 디렉토리 안에서는
README.md문서를 포함한다. - 해당 문서에는 시나리오에서 사용되는 데이터 구성, 실행 순서, 샘플 요약, 그리고 테스트에 필요한 데이터 상수가 정리되어 있어 테스트 의도를 명확히 파악할 수 있다.
- 모든 시나리오 단위의 디렉토리 안에서는
-
디렉토리 예시
src/test/resources/fixtures/
├─ users/ # 도메인
│ ├─ get-user/ # 케이스
│ │ ├─ user.json # 케이스에 필요한 데이터
│ │ └─ README.md # 케이스 설명 문서
│ └─ (요약) ...
│
├─ follows/
│ ├─ get-followers/
│ │ ├─ user.json
│ │ ├─ follow.json
│ │ └─ README.md
│ └─ (요약) ...
│
├─ posts/
│ ├─ get-post-comments/
│ │ ├─ post.json
│ │ ├─ post-comment.json
│ │ └─ README.md
│ └─ (요약) ...
│
└─ (요약) ...

초기에는 테스트 데이터를 직접 작성했지만 도메인이 늘고 연관관계가 복잡해질수록 실수도 많고 작성 시간도 많이 길어졌다.
그래서 이 한계를 줄이기 위해 Claude를 활용해 시나리오별 테스트 데이터를 생성하도록 했다.
Claude는 코드와 스키마를 집접 분석할 수 있고 파일 생성도 지원한다.
덕분에 수작업 대비 훨씬 빠르고 정확한 데이터 생성을 할 수 있었으며 테스트 데이터의 품질과 작성 효율이 모두 크게 개선되었고 이는 전체 작업의 생산성이 크게 향상되었다.