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
│  └─ (요약) ...
│
└─ (요약) ...

전체 플로우

json_fixture_flow


AI 기반 테스트 데이터 생성

초기에는 테스트 데이터를 직접 작성했지만 도메인이 늘고 연관관계가 복잡해질수록 실수도 많고 작성 시간도 많이 길어졌다.

그래서 이 한계를 줄이기 위해 Claude를 활용해 시나리오별 테스트 데이터를 생성하도록 했다.

Claude는 코드와 스키마를 집접 분석할 수 있고 파일 생성도 지원한다.

덕분에 수작업 대비 훨씬 빠르고 정확한 데이터 생성을 할 수 있었으며 테스트 데이터의 품질과 작성 효율이 모두 크게 개선되었고 이는 전체 작업의 생산성이 크게 향상되었다.


관련 문서

⚠️ **GitHub.com Fallback** ⚠️