메뉴

연령 확인 테스트: 나이 기준과 경계일을 검증하는 법

연령 확인 테스트에서 13세와 16세, 18세, 21세 기준이 어떻게 다른지, 경계일에 통과와 거절이 어떻게 갈리는지, 시험 데이터를 어떻게 설계할지 정리합니다.

게시일

  • 나이 검증
  • 경계값

연령 확인 테스트는 나이 제한이 걸린 화면이 정확히 하루 단위로 갈리는지 확인하는 일입니다. 이 글에서는 흔히 쓰이는 네 가지 기준이 어디서 왔는지, 스스로 적은 생년월일과 서류 확인이 어떻게 다른지, 경계일 시험 데이터를 어떤 식으로 설계해야 하는지 살펴봅니다.

나이 기준은 왜 여러 개인가요?

기준이 여러 개인 것은 하나의 규칙을 나눈 결과가 아니라 서로 다른 법에서 온 것이기 때문입니다. 어린이 온라인 개인정보 보호와 관련된 미국의 규칙에서 13세가 나오고, 유럽에서 정보 사회 서비스를 제공할 때의 기본 동의 연령은 16세이며 회원국이 13세에서 16세 사이에서 정할 수 있습니다. 대부분의 나라에서 성인으로 보는 나이는 18세이고, 21세는 일부 지역의 주류 판매 같은 맥락에서 쓰입니다.

이 기준들은 목적이 다르므로 하나로 합치면 안 됩니다. 가입 동의를 받기 위한 나이와 술을 팔기 위한 나이는 같은 문턱이 아니고, 어느 하나를 다른 하나로 대신 쓰면 규칙이 어긋납니다. 화면마다 어떤 기준을 쓰는지 이름을 붙여 두는 편이 안전합니다.

기준이 여러 개이므로 화면마다 어느 기준을 따르는지 표시해 두면, 나중에 기준이 바뀌었을 때 어느 화면을 손봐야 하는지 바로 알 수 있습니다. 가입과 구매가 서로 다른 기준을 쓰는 경우도 같은 방식으로 구분해 둡니다.

스스로 적은 생년월일과 서류 확인은 어떻게 다른가요?

대부분의 서비스는 사용자가 직접 적은 생년월일을 받습니다. 확인 절차가 없으므로 사실과 다를 수 있고, 이 점을 전제로 동작을 설계해야 합니다. 입력값을 믿고 나이를 계산하되, 그 값이 사실이라는 보장은 없다는 사실을 문서에 남겨 둡니다.

서류나 다른 수단으로 확인하는 절차는 목적과 비용이 다릅니다. 확인을 붙이면 흐름이 길어지고 실패 지점이 늘어나므로, 어느 화면에 확인이 필요한지 먼저 정합니다. 두 경우 모두 시험에서는 계산과 분기가 올바른지가 먼저이고, 확인 절차가 실제 사람을 통과시키는지는 별개의 문제입니다.

입력한 값이 사실과 다를 수 있다는 전제는 화면 문구에도 반영합니다. 확인 절차가 없다는 이유로 제한을 없애자는 뜻이 아니라, 제한이 계산에 근거한다는 사실을 분명히 하자는 뜻입니다.

경계일에는 무슨 일이 일어나나요?

나이 제한이 있는 화면은 기준일 하루 전후에서 결과가 뒤집힙니다. 생일 하루 전에는 아직 기준에 닿지 못하고, 생일 당일에는 보통 이미 닿은 것으로 봅니다. 그래서 같은 사람이 하루 사이에 통과와 거절을 오갑니다.

이 하루를 시험에 넣지 않으면 경계 로직은 검증되지 않습니다. 대부분의 값은 어느 쪽으로 계산해도 같은 답이 나오기 때문에 문제가 드러나지 않다가, 기준에 딱 걸린 사용자에게서만 틀립니다. 시험 데이터에는 기준에 정확히 맞는 날과 하루 모자란 날을 함께 넣습니다.

2월 29일생은 어떻게 처리하나요?

2월 29일에 태어난 사람은 윤년이 아닌 해에 생일이 없습니다. 어느 날을 생일로 볼지는 나라와 관행에 따라 다르고, 서비스 안에서도 한 가지로 정해 두어야 합니다. 정하지 않으면 화면과 서버가 다른 날에 나이를 올립니다.

시험에서는 2월 28일과 3월 1일 양쪽에서 결과를 확인해 둡니다. 윤년이 아닌 해에 이 사람의 나이가 어떻게 계산되는지도 함께 봅니다. 기준 시간대가 다를 때 결과가 달라지는지도 이때 드러납니다.

기준 시각과 시간대는 결과를 바꾸나요?

바꿉니다. 나이는 오늘 날짜로 계산하고, 오늘 날짜는 시간대에 따라 달라집니다. 한 지역이 자정을 넘긴 시각에도 다른 지역은 아직 전날이므로, 서버가 어느 기준으로 오늘을 정하는지가 경계일의 판정을 뒤집습니다.

이 차이는 경계에 걸친 사용자에게만 나타나므로 시험에서 놓치기 쉽습니다. 화면에서 계산한 값과 서버에서 계산한 값이 다르면 원인이 여기인 경우가 많습니다. 경계일 시험에 시간대가 다른 값을 함께 넣어 두면 어느 쪽 기준으로 동작하는지 분명해집니다.

목록 화면과 상세 화면이 서로 다른 시점에 나이를 계산하면 같은 사람의 나이가 두 값으로 보일 수 있습니다. 기준 시각을 한 곳에서 정하는 이유가 여기에 있습니다.

신원 생성기로 나이대별 기록 만들기

신원 생성기에서는 국가와 성별을 고르면 생년월일과 나이가 함께 있는 기록이 만들어집니다. 기준에 딱 맞는 나이와 하루 차이 나는 나이를 각각 만들어 두고, 같은 기록을 화면과 서버 양쪽에 넣어 결과가 같은지 비교해 보세요.

만들어지는 값은 알고리즘이 합성한 것이며 실존 인물이 아닙니다. 시험용으로만 쓰고 실제 인물을 사칭하거나 실제 나이 확인을 통과하는 데 사용해서는 안 됩니다.

개발자를 위한 메모: 나이 계산과 기준값 설계

  • 나이는 저장하지 않습니다. 생년월일에서 그때그때 계산해야 하루가 지날 때 값이 틀어지지 않습니다.
  • 기준 시간대를 한 곳에서 정하고 화면과 서버가 같은 값을 쓰게 합니다. 각자 오늘을 구하면 경계일에서 갈립니다.
  • 네 가지 기준을 각각 이름 붙여 설정으로 둡니다. 하나로 합치면 어느 화면이 어떤 법을 따르는지 흐려집니다.
  • 경계 표본을 고정해 둡니다. 기준에 정확히 맞는 날, 하루 모자란 날, 하루 지난 날, 윤년 아닌 해의 2월 29일생이 출발점입니다.
  • 스스로 적은 값이라는 전제를 코드와 문서에 남깁니다. 확인 절차가 없다는 사실을 잊으면 통과를 과신하게 됩니다.
  • 기준값을 바꿀 때 기존 시험이 함께 바뀌는지 확인합니다. 값을 여러 곳에 적어 두면 한 곳만 고쳐집니다.
  • 거절된 경우에도 이유를 남깁니다. 기준 미달인지 입력 오류인지 구분되지 않으면 문의 대응이 어려워집니다.
  • 스스로 적은 값과 확인된 값을 코드에서 구분해 둡니다. 같은 필드에 섞으면 나중에 어느 쪽인지 알 수 없습니다.

다음 단계

경계일 표본을 만들 때는 신원 생성기에서 나이대를 지정해 몇 개를 뽑아 보고, 계산 규칙 자체는 생년월일 경계 사례에서 확인하세요. 시험 환경에서 다루는 값의 범위는 GDPR과 테스트 신원 데이터에서 이어서 볼 수 있습니다.

이어 읽기

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