메뉴

신원 테스트 픽스처: 재현 가능한 신원 기록 만들기

신원 테스트 픽스처를 어떻게 만들고 관리할지, 시나리오 이름 붙이기, 경계 표본 고르기, 매번 달라지는 무작위 데이터의 문제를 정리합니다.

게시일

  • 테스트 데이터
  • 픽스처

신원 테스트 픽스처는 시험마다 같은 모양으로 다시 만들어지는 신원 기록 묶음입니다. 값이 매번 달라지면 실패가 재현되지 않고, 고정해 두면 시간이 지나면서 서서히 쓸모없어집니다. 이 글에서는 시나리오에 이름을 붙이는 방법, 어떤 표본을 남겨야 하는지, 그리고 픽스처가 썩는 이유와 관리 방법을 살펴봅니다.

픽스처는 왜 필요한가요?

시험이 실패했을 때 같은 조건을 다시 만들 수 있어야 원인을 찾습니다. 값이 매번 달라지면 실패한 그 기록을 다시 얻을 방법이 없습니다. 픽스처는 그 조건을 이름 붙여 남겨 두는 장치입니다.

무작위 생성이 나쁜 것은 아닙니다. 넓은 범위에서 문제를 찾는 데는 무작위가 낫습니다. 다만 실패를 붙잡아 두려면 그때 값을 픽스처로 옮겨 오는 절차가 있어야 합니다. 픽스처가 없으면 같은 실패를 두 번 보지 못합니다.

픽스처는 문서 역할도 합니다. 어떤 값이 유효하고 어떤 값이 거절되어야 하는지 값 자체가 예시가 되므로, 규칙을 글로 설명하는 것보다 오해가 적습니다. 새로 합류한 사람이 픽스처를 읽으면 무엇을 지켜야 하는지 빠르게 파악할 수 있습니다.

시나리오에 어떻게 이름을 붙이나요?

이름은 무엇을 확인하는 시험인지 드러내야 합니다. 로그인 시험용 기록인지, 나이 제한 시험용인지, 주소 형식 시험용인지가 이름에서 보이면 실패 목록만 보고도 어디를 볼지 알 수 있습니다.

좋은 이름은 값이 아니라 상황을 가리킵니다. 같은 상황을 여러 벌 두게 되면 이름 옆에 구분자를 붙여 어느 시험이 쓰는지 표시합니다. 이름이 겹치면 나중에 어느 쪽을 고쳐야 하는지 알 수 없습니다.

이름을 붙일 때는 값이 아니라 조건을 적습니다. 나이와 나라처럼 시험을 가르는 조건이 이름에 들어가면 같은 조건의 값을 여러 개 두어도 서로 구분됩니다. 반대로 값을 이름에 그대로 옮겨 적으면 값이 바뀌는 순간 이름이 사실과 달라지고, 목록을 읽는 사람이 잘못 짐작하게 됩니다.

어떤 표본을 꼭 남겨야 하나요?

  • 백 살이 넘은 사람: 나이 계산과 자릿수 표시가 모두 영향을 받습니다.
  • 아주 긴 이름: 저장 길이와 줄바꿈이 드러납니다.
  • 성이 없는 이름: 성을 필수로 둔 검증이 걸립니다.
  • 라틴 문자를 쓰지 않는 이름: 표기 변환과 정렬에서 문제가 나옵니다.
  • 생일이 오늘인 사람: 나이 경계가 하루 단위로 갈립니다.
  • 서로 다른 나라의 주소와 번호: 짝 검사가 실제로 동작하는지 확인됩니다.

이 표본들은 값이 특이해서가 아니라 규칙의 가장자리를 찌르기 때문에 남깁니다. 각 표본 옆에 어떤 시험이 쓰는지 적어 두면 나중에 지워도 되는지 판단할 수 있습니다.

표본을 고를 때는 값의 개수보다 규칙과의 관계를 봅니다. 같은 이유로 걸리는 값이 여러 개 있으면 하나만 남겨도 충분하고, 다른 이유로 걸리는 값은 하나씩 있어야 합니다.

매번 새로 만드는 방식은 왜 실패를 숨기나요?

무작위로 값을 만들면 시험은 대체로 통과합니다. 문제는 실패했을 때입니다. 그때 만들어진 값이 남아 있지 않으면 실패를 다시 볼 수 없고, 고쳤는지도 확인할 수 없습니다. 결국 실패는 한 번 나타났다가 사라지는 일회성 사건이 됩니다.

반대로 값을 고정해 두고 무작위는 따로 돌리는 방식이 실용적입니다. 고정한 픽스처가 기본 시험이 되고, 무작위가 넓은 범위를 훑습니다. 무작위가 실패를 찾아내면 그 값을 픽스처로 옮겨 영구 시험으로 만듭니다.

신원 생성기로 픽스처 만들기

신원 생성기는 같은 조건에서 같은 기록을 다시 만들 수 있도록 키를 받습니다. 시험에 쓸 기록을 만들 때 키를 함께 적어 두면, 나중에 그 키로 같은 묶음을 그대로 다시 만들어 낼 수 있습니다. 국가나 성별, 나이 범위를 지정해 원하는 표본을 뽑는 데도 쓸 수 있습니다.

만들어지는 기록은 알고리즘이 합성한 값이며 실존 인물과 무관합니다. 테스트 전용으로만 사용하고 실제 인물을 사칭하는 데 쓰지 마세요.

픽스처는 왜 시간이 지나면 쓸모없어지나요?

처음 만들어질 때는 맞았던 값이 나중에는 규칙과 어긋납니다. 나라의 번호 형식이 바뀌기도 하고, 목록이 갱신되기도 하며, 기준 날짜가 지나면서 나이 조건이 달라지기도 합니다. 픽스처는 고정되어 있으므로 규칙이 움직이면 혼자 남습니다.

증상은 시험이 갑자기 실패하는 것으로 나타납니다. 이때 픽스처를 지우는 대신 무엇이 바뀌었는지 먼저 확인합니다. 규칙이 바뀐 것이라면 픽스처를 고쳐야 하고, 픽스처가 틀렸던 것이라면 새 표본을 추가해야 합니다.

썩는 속도는 규칙이 바뀌는 속도에 달려 있습니다. 국가 데이터를 자주 갱신한다면 픽스처도 그 주기에 맞춰 점검해야 하고, 좀처럼 바뀌지 않는 영역이라면 점검 간격을 넓혀도 됩니다.

개발자를 위한 메모: 픽스처 구조와 관리

  • 픽스처는 값 목록이 아니라 이름이 붙은 기록 묶음으로 둡니다. 어느 시험이 쓰는지 함께 적어 둡니다.
  • 모든 값을 사람이 읽을 수 있는 형태로 저장합니다. 읽을 수 없으면 검토가 안 되고 검토가 안 되면 방치됩니다.
  • 기준 날짜를 값에 넣지 말고 시험 실행 시점에서 계산합니다. 고정된 날짜가 있으면 시간이 지날수록 의미가 흐려집니다.
  • 값이 서로를 설명하도록 만듭니다. 주소와 우편번호와 전화번호는 같은 나라에서 나와야 하고, 나라를 따로 뽑는 생성기는 이 짝을 거의 항상 깨뜨립니다.
  • 새 실패를 만나면 픽스처로 옮기는 절차를 정해 둡니다. 옮기지 않으면 같은 실패를 다시 만납니다.
  • 픽스처를 주기적으로 점검합니다. 어느 시험도 쓰지 않는 기록은 지우고, 규칙이 바뀐 기록은 고칩니다.
  • 픽스처를 바꿀 때 어떤 시험이 영향을 받는지 먼저 확인합니다. 이름 옆에 쓰는 시험을 적어 두면 이 확인이 빨라집니다.
  • 실패한 값을 픽스처로 옮길 때는 원인을 함께 적습니다. 값만 남기면 나중에 왜 이 값이 있는지 알 수 없습니다.

다음 단계

픽스처를 만들 때 필요한 기록은 신원 생성기에서 키와 함께 뽑아 두고, 값이 서로 맞는지 확인하는 방법은 신원 데이터 일관성에서 이어서 볼 수 있습니다. 주소 쪽 픽스처 관리 방법은 주소 픽스처 관리 안내를 참고하세요.

이어 읽기

온라인 신원·테스트 데이터 생성기 관련 글