메뉴

테스트용 신용카드 번호: 무엇이고 어떻게 쓰는가

테스트용 신용카드 번호가 왜 존재하고 어디에 쓰이는지, 실제 카드 번호와 무엇이 다른지, 그리고 개발자가 테스트 데이터를 고를 때 지켜야 할 기준을 정리합니다.

게시일

  • 테스트 데이터
  • 결제

결제 화면을 만들다 보면 실제 카드가 한 장도 없는데 카드 입력 칸을 검증해야 하는 순간이 옵니다. 이때 쓰는 것이 테스트용 신용카드 번호입니다. 카드사가 공개한 번호 규칙을 그대로 따라 만들어져 형식 검사는 통과하지만, 발급된 적이 없는 번호이므로 승인은 되지 않습니다. 이 글에서는 이 번호가 왜 존재하는지, 어디까지 믿어도 되는지, 그리고 테스트 데이터를 고를 때의 기준을 차례로 살펴봅니다.

테스트용 카드 번호는 왜 존재할까?

카드 번호의 구조는 비밀이 아닙니다. 어느 자리에 발급 기관을 나타내는 숫자가 오고, 총 몇 자리까지 허용되며, 마지막 한 자리가 어떤 계산으로 정해지는지는 국제 표준과 카드사 문서에 공개되어 있습니다. 규칙이 공개되어 있으니 규칙에 맞는 번호를 얼마든지 계산해 낼 수 있고, 그것이 테스트 번호의 출발점입니다.

두 번째 이유는 규정입니다. 실제 고객의 카드 정보를 개발 장비나 테스트 데이터베이스에 넣는 것은 결제 카드 산업의 보안 기준에서 허용되지 않습니다. 그래서 실제 데이터 대신 합성 번호를 쓰는 것이 선택이 아니라 원칙이 됩니다.

어디에 쓰이고 어디에 쓰이면 안 될까?

  • 결제 폼의 입력 검증: 자릿수, 카드사 인식, 검산 숫자 통과 여부
  • 화면 표시 확인: 번호를 가릴 때 앞뒤 몇 자리를 남기는지, 자릿수 구분을 어디에 넣는지
  • 저장 형식 확인: 하이픈과 공백을 걷어낸 뒤 어떤 형태로 보관하는지
  • 실패 시나리오 재현: 승인 거절, 잔액 부족 같은 응답을 화면이 어떻게 처리하는지
  • 자동화 테스트: 매번 같은 조건으로 돌아가야 하는 회귀 테스트

반대로 실제 결제 요청, 실제 정산, 실제 고객 문의 대응에는 쓸 수 없습니다. 승인 응답을 돌려줄 계좌 자체가 없기 때문입니다.

테스트 번호와 실제 카드 번호는 무엇이 다른가?

가장 큰 차이는 존재 여부입니다. 테스트용 신용카드 번호는 산술 규칙을 만족하도록 계산된 문자열일 뿐이고, 어느 발급사에도 등록되어 있지 않습니다. 반면 실제 카드 번호는 발급사가 계좌를 만들면서 부여한 값이며, 번호만으로는 알 수 없는 한도와 상태, 소유자 정보가 뒤에 붙어 있습니다.

구분 테스트용 번호 실제 카드 번호
형식 검사 통과 통과
발급사 등록 없음 있음
승인 가능성 없음 조건에 따라 가능
사용 목적 개발과 검증 실제 결제
보관 규정 자유롭게 사용 엄격한 보호 의무

이 표에서 기억할 것은 두 번째 줄입니다. 형식 검사를 통과했다는 사실은 그 번호가 어딘가에 존재한다는 뜻이 전혀 아닙니다.

카드사마다 규칙이 다른데 어떻게 하나?

번호의 앞자리는 카드사를 구분하고, 카드사마다 허용되는 길이와 시작 숫자가 다릅니다. 어떤 카드사는 16자리만 쓰고, 어떤 카드사는 15자리를 쓰며, 시작 숫자 조합도 서로 겹치지 않게 나뉘어 있습니다. 그래서 한 카드사용으로 만든 번호를 다른 카드사 검증에 넣으면 카드사 인식 단계에서 먼저 걸립니다.

테스트를 할 때는 카드사별로 번호를 따로 준비하고, 각 카드사가 실제로 쓰는 자릿수를 그대로 맞춰야 합니다. 카드사별 테스트 카드 번호에서 이 차이를 표로 정리했습니다.

검산 숫자는 어떻게 정해지나?

번호의 마지막 한 자리는 앞의 모든 자릿수를 더한 값이 10의 배수가 되도록 정해집니다. 계산 규칙 자체는 공개된 산수이고, 손으로도 몇 분이면 따라 할 수 있습니다. 계산 순서와 두 배로 만든 값을 한 자리로 줄이는 요령은 Luhn 알고리즘에 따로 적어 두었습니다.

여기서 중요한 것은 이 규칙의 성격입니다. 검산 숫자는 오타를 잡는 장치이지, 그 번호가 유효한 계좌라는 증거가 아닙니다.

생성기를 쓸 때 알아 둘 점

번호를 여러 개 만들다 보면 같은 번호가 다시 나오거나, 카드사 조합이 한쪽으로 쏠리는 경우가 있습니다. 테스트 목적에 따라 원하는 조건이 다르기 때문입니다. 테스트용 신용카드 번호 생성기에서는 카드사를 고정하거나 무작위로 두고, 필요한 개수만큼 번호를 한 번에 만들 수 있습니다. 접두사만 정해 두고 나머지 자리를 채우는 방식도 지원하므로, 이미 문서에 적어 둔 접두사가 있다면 그대로 이어 붙일 수 있습니다. 함께 표시되는 유효기간과 보안 코드는 폼 입력을 끝까지 채워 보기 위한 예시 값입니다.

개발자를 위한 메모: 테스트 픽스처를 고르는 법

자동화 테스트에 카드 번호를 넣을 때는 무작위 생성보다 고정된 값이 낫습니다. 실패했을 때 원인을 좁히기 쉽고, 테스트 실행마다 결과가 달라지지 않기 때문입니다. 반대로 여러 건을 대량으로 넣어야 하는 시드 데이터라면 고정 목록보다 생성기가 편합니다. 시드 데이터를 다루는 방법은 스테이징 데이터베이스에 가짜 데이터 심기에서 더 자세히 다룹니다.

픽스처를 정할 때 확인할 항목은 다음과 같습니다.

  • 카드사별 시작 숫자와 자릿수가 실제 규칙과 맞는지
  • 검산 숫자가 계산대로 채워졌는지
  • 실패 케이스용 번호를 성공 케이스와 분리해 두었는지
  • 픽스처를 만든 규칙을 저장소 안 문서에 남겼는지

마지막 항목이 가장 자주 빠집니다. 몇 달 뒤에 같은 데이터를 다시 만들어야 할 때, 당시 규칙을 적어 두지 않았다면 결과를 재현할 수 없습니다.

다음 단계

먼저 생성기에서 카드사 두세 곳의 번호를 각각 만들어 보고, 그 번호를 실제 폼에 넣어 카드사 인식과 자릿수 표시가 기대대로 나오는지 확인해 보세요. 그다음 결제 폼 테스트 체크리스트를 펴고 거절 응답과 재시도 흐름까지 점검하면, 형식 검증을 넘어 실제 운영에서 마주칠 상황까지 미리 덮을 수 있습니다. 여기서 생성되는 번호는 구조적으로는 유효하지만 실제로 발급된 적이 없으므로, 어떤 경우에도 실제 결제에 사용할 수 없습니다.

이어 읽기

테스트용 신용카드 번호 생성기 관련 글