테스트Medium#249
Fixture와 Test Data Builder는 테스트 유지보수에 어떻게 도움이 되나요?
#테스트#Fixture#Builder#테스트데이터
답변 포인트
테스트 데이터 준비와 가독성를 기준으로 정의, 장점, 한계, 예시를 함께 설명해보세요.
정답 및 해설
빠른 요약
Fixture는 공통 데이터를 준비하고 Builder는 필요한 속성만 바꿔 테스트 객체를 만듭니다. 과도한 공용 fixture보다 의도가 보이는 Builder가 유지보수에 유리할 수 있습니다.
Fixture와 Test Data Builder는 테스트 데이터를 일관되게 만들고 중복을 줄이는 도구입니다. 테스트가 많아질수록 데이터 생성 방식이 유지보수성을 크게 좌우합니다.
Fixture
미리 정의된 고정 데이터입니다.
JSON
{
"id": 1,
"email": "user@example.com",
"grade": "VIP"
}공통 시나리오를 빠르게 재사용할 수 있지만, 여러 테스트가 같은 fixture에 의존하면 작은 변경이 많은 테스트를 깨뜨릴 수 있습니다.
Test Data Builder
필요한 값만 바꾸고 나머지는 합리적인 기본값을 제공하는 패턴입니다.
TypeScript
function userBuilder(overrides = {}) {
return {
id: 1,
email: 'user@example.com',
grade: 'BASIC',
createdAt: new Date('2026-01-01'),
...overrides,
};
}
const vip = userBuilder({ grade: 'VIP' });테스트에서 무엇이 중요한 값인지 잘 드러납니다.
좋은 사용법
- 테스트에 중요한 값은 테스트 안에서 명시합니다.
- 중요하지 않은 기본값은 builder에 숨깁니다.
- 전역 fixture를 수정 가능한 상태로 공유하지 않습니다.
- DB fixture는 테스트 격리와 cleanup 전략을 함께 둡니다.
면접 답변 포인트
Fixture는 고정 데이터를 재사용하게 해주고, Test Data Builder는 필요한 차이만 표현하게 해 테스트 가독성과 변경 내성을 높입니다. 공유 fixture 과의존은 피해야 합니다.