테스트 데이터 관리 전략과 환경 신뢰도
그래서 테스트 전략에는 도구 선택만큼 테스트 데이터 관리 전략이 중요합니다.
테스트 데이터는 부수 준비물이 아니다
팀이 테스트 데이터를 가볍게 보면 다음 문제가 반복됩니다.
- 테스트 순서에 따라 결과가 달라짐
- 로컬에서는 통과하지만 CI에서는 실패
- 운영 데이터 일부를 복사해 쓰다 보니 개인정보 위험이 생김
- 시나리오 추가 때마다 셋업 비용이 커짐
좋은 테스트 데이터는 테스트 코드처럼 의도와 수명이 관리되어야 합니다.
레벨마다 데이터 전략이 달라야 한다
모든 테스트에 같은 데이터 접근 방식을 쓰면 비용이 커집니다.
- 단위 테스트: 작고 명시적인 픽스처, 인라인 데이터가 유리
- 통합 테스트: 도메인 의미를 가진 팩토리와 시드 데이터가 유리
- E2E 테스트: 사용자 시나리오 중심의 상태 세트가 필요
단위 테스트에서는 데이터를 최소화해야 하고, E2E에서는 실제 업무 흐름을 재현할 수 있을 만큼 맥락이 있어야 합니다. 둘을 같은 방식으로 만들면 한쪽은 과하고 한쪽은 부족해집니다.
고정 샘플과 생성형 데이터의 균형
실무에서는 고정 샘플만으로도, 무작위 생성만으로도 부족합니다.
- 고정 샘플은 디버깅과 가독성이 좋습니다.
- 생성형 데이터는 조합 폭을 넓혀 예상 못 한 경계를 드러냅니다.
추천 방식은 핵심 회귀 시나리오는 고정 샘플로 유지하고, 경계 조건이나 속성 기반 테스트 성격의 검증에는 생성형 데이터를 섞는 것입니다. 그래야 재현성과 탐색성을 동시에 챙길 수 있습니다.
테스트 환경은 초기화 비용보다 예측 가능성이 중요하다
테스트 데이터 전략은 결국 환경 초기화 방식과 연결됩니다. 대표적인 선택지는 다음과 같습니다.
- 테스트마다 트랜잭션 롤백
- 스위트 단위 DB 리셋
- 컨테이너 기반 임시 DB
- 공유 테스트 환경 + 네임스페이스 분리
속도만 보면 공유 환경이 좋아 보일 수 있지만, 데이터 충돌과 오염이 생기면 신뢰도가 급격히 떨어집니다. 팀이 자주 겪는 실패는 빠른 환경보다 예측 가능한 환경을 먼저 선택하지 않은 데서 나옵니다.
개인정보와 운영 데이터 복제는 더 엄격해야 한다
운영 데이터를 테스트에 가져오는 경우는 특히 조심해야 합니다. 단순 마스킹만으로는 관계형 구조와 민감한 패턴이 그대로 남을 수 있습니다. 테스트용 데이터셋은 다음 기준을 만족하는 편이 좋습니다.
- 개인 식별 가능 정보가 제거되었는가
- 업무 흐름 재현에 필요한 관계는 유지되는가
- 법적 보관 제한을 넘지 않는가
- 복사 시점과 생성 방식이 문서화되어 있는가
운영 데이터에 가까운 현실감보다 안전한 합성 데이터셋을 꾸준히 개선하는 편이 장기적으로 낫습니다.
데이터 준비도 테스트 코드처럼 추상화해야 한다
시나리오마다 SQL을 직접 쓰거나 API 호출을 길게 나열하면 유지보수가 무너집니다. 테스트 데이터도 도메인 언어로 감싸는 것이 좋습니다.
예를 들어:
- “결제 대기 주문이 있는 사용자”
- “구독 만료 하루 전 고객”
- “재고 부족 상태의 상품”
이런 상태를 팩토리, 빌더, 시드 스크립트로 표현하면 테스트가 더 읽기 쉬워지고 요구사항 변화도 견디기 쉬워집니다.
체크리스트
- 테스트 레벨마다 데이터 전략을 구분했는가
- 재현 가능한 고정 샘플과 탐색용 생성 데이터를 함께 쓰는가
- 환경 초기화 방식이 빠르기보다 예측 가능한가
- 개인정보와 운영 데이터 사용 기준이 문서화되어 있는가
- 데이터 준비 코드가 도메인 의미를 드러내는가
마무리
테스트 실패의 상당수는 코드 결함이 아니라 데이터 관리 결함에서 시작합니다. 좋은 팀은 테스트 케이스만 늘리지 않고, 테스트 데이터의 생성, 수명, 초기화, 안전성까지 함께 설계합니다. 결국 테스트 신뢰도는 얼마나 많은 테스트가 있느냐보다, 그 테스트가 어떤 상태를 재현하느냐에 달려 있습니다.
Continue Reading
다음으로 읽기 좋은 글
Synthetic Monitoring 과 E2E Testing 의 차이
릴리스 시점의 E2E 테스트와 운영 중 synthetic check를 어떻게 분리해서 설계해야 하는지 다루는 실무 가이드입니다.
🧪 Test플레이키 테스트 신호 예산 관리
불안정한 테스트를 단순 재시도로 덮지 않고 신뢰도, 소유권, 격리 기준으로 관리하는 방법을 정리합니다.
📱 Mobile모바일 Crash Budget 운영법
모바일 안정성은 단순히 크래시를 줄이는 것이 아니라, 어느 수준까지 허용하고 언제 출하를 멈출지 결정하는 운영 문제입니다.
🤖 AI / LLMOpsAI 평가 루브릭 실전 설계
프로덕션 AI 기능을 위해 품질 기준, 실패 유형, 릴리스 게이트를 어떻게 정의할지 정리한 실전 가이드입니다.
다음 탐색