전체 목록
테스트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 과의존은 피해야 합니다.

관련 질문

같은 카테고리/태그 기준