메뉴

비자 마스터카드 테스트 카드 번호 고르는 법

비자 마스터카드 테스트 카드 번호를 카드사별 대역과 자릿수 차이에 맞춰 고르는 방법과, 카드 조직별 테스트 행렬을 준비하는 요령을 정리합니다.

게시일

  • 카드사
  • 테스트 데이터

비자 마스터카드 테스트 카드 번호를 고르는 일은 사소해 보이지만 실제로는 화면 곳곳에 영향을 줍니다. 카드 조직마다 시작 숫자 대역이 다르고, 허용되는 자릿수도 다르며, 보안 코드 길이까지 다릅니다. 비자 번호만 넣어 둔 테스트 묶음은 American Express에서 깨지는 화면을 끝내 발견하지 못합니다. 이 글은 카드 조직별로 무엇이 다른지, 그리고 테스트 목록을 어떻게 구성해야 하는지 정리합니다.

카드 조직별로 무엇이 다를까?

첫 자리는 산업 분류를 뜻하고, 그 뒤 몇 자리가 발급사를 가리킵니다. 카드 조직은 이 공개된 대역을 나눠 쓰기 때문에, 시작 숫자 조합만 보면 어느 조직의 카드인지 판별할 수 있습니다. 다만 대역이 겹치는 구간이 있어서 비교 순서를 정해 두어야 합니다.

카드 조직 시작 대역 자릿수 보안 코드
Visa 4로 시작 13, 16, 19 뒷면 3자리
Mastercard 51에서 55, 2221에서 2720 16 뒷면 3자리
American Express 34, 37 15 앞면 4자리
Discover 6011, 65, 644에서 649, 622126에서 622925 16 뒷면 3자리
JCB 3528에서 3589 16 뒷면 3자리
Diners Club 300에서 305, 36, 38에서 39 14 뒷면 3자리
유니온페이 62로 시작 16에서 19 뒷면 3자리

이 표에서 눈에 띄는 것은 American Express의 15자리와 앞면 4자리 보안 코드입니다. 이 두 가지가 화면 로직에서 가장 자주 빠집니다.

자릿수가 다른 것이 왜 문제가 될까?

검증 로직을 열여섯 자리에 맞춰 두면 열다섯 자리 카드가 거부됩니다. 반대로 자릿수 검사를 느슨하게 두면 열여섯 자리만 받아야 하는 카드에 긴 값이 들어가도 통과합니다. 두 경우 모두 실제 사용자에게는 결제가 안 되는 화면으로 보입니다.

보안 코드도 마찬가지입니다. 세 자리만 받는 입력 칸에서는 American Express 카드로 결제를 끝낼 수 없습니다. 카드사를 판별한 시점에 보안 코드 입력 칸의 최대 길이와 안내 문구를 함께 바꾸는 것이 좋습니다.

어떤 대역을 골라 테스트할까?

테스트 목록은 카드 조직을 축으로 잡고, 그 위에 상황을 얹는 구성이 관리하기 쉽습니다.

  • 각 카드 조직에서 대표 번호를 하나씩
  • 자릿수가 다른 카드 조직은 긴 쪽과 짧은 쪽을 각각
  • 대역이 겹치는 구간을 하나
  • 검산만 통과하고 카드사 판별이 애매한 값을 하나
  • 지원하지 않기로 한 대역을 하나

마지막 두 항목은 부정 케이스입니다. 정상 입력만 모아 두면 검증이 실제로 무엇을 막고 있는지 알 수 없습니다.

왜 한 카드사의 번호를 다른 카드사에 쓰면 안 될까?

카드 조직마다 번호 대역이 다르기 때문에, 비자용으로 만든 번호는 American Express 검증에서 카드사 판별 단계에 걸립니다. 이때 화면이 보여 주는 오류가 카드사 불일치인지 검산 실패인지에 따라 사용자 안내가 완전히 달라집니다.

테스트에서 이 구분을 확인하지 않으면, 실제 사용자가 자기 카드사를 잘못 인식당했을 때 어떤 문구가 나오는지 알 수 없습니다. 카드사 판별과 검증 순서는 코드로 카드 번호 검증하기에서 이어서 다룹니다.

그러면 카드사마다 테스트 번호를 따로 두어야 할까요? 따로 두는 편이 좋습니다. 앞에서 본 것처럼 자릿수와 보안 코드 길이가 카드 조직마다 다르기 때문에, 한 조직의 번호로는 다른 조직의 화면을 검증할 수 없습니다. 비자용 번호를 American Express 검증에 넣으면 카드사 판별 단계에서 걸려서, 정작 확인해야 할 열다섯 자리 처리와 앞면 네 자리 입력은 시험되지 않습니다.

또 하나의 이유는 화면 문구입니다. 카드 조직을 인식했을 때 안내 문구와 예시가 함께 바뀌는지 확인하려면, 각 조직의 번호가 최소 하나씩 있어야 합니다.

대역이 겹치면 어떻게 고를까?

공개된 대역에는 서로 겹치는 구간이 있습니다. 예를 들어 6으로 시작하는 대역은 여러 카드 조직이 나눠 쓰고, Discover의 일부 구간은 다른 조직의 구간과 인접해 있습니다. 이때 비교 순서를 잘못 두면 긴 대역이 짧은 대역에 가려져 엉뚱한 조직으로 판정됩니다.

그래서 대역표를 정할 때는 긴 구간을 먼저 검사하고, 겹치는 경계값을 테스트 항목에 넣는 편이 좋습니다. 경계값은 대개 표의 맨 앞과 맨 뒤에 있으므로, 그 두 값만 넣어도 대부분의 정렬 실수를 잡아낼 수 있습니다. 대역 비교가 끝난 뒤의 자릿수와 문자 검사 순서는 코드로 카드 번호 검증하기에서 이어집니다.

대역 비교가 끝난 뒤에 남는 질문이 하나 있습니다. 카드사 판별이 실패하면 무슨 일이 생길까요? 판별이 실패하면 화면은 사용자에게 무엇을 입력하라고 안내해야 할지 알 수 없게 됩니다. 이때 흔히 하는 처리는 번호를 그대로 승인 요청에 넘기는 것인데, 결과적으로 사용자는 몇 초를 기다린 뒤에야 잘못을 알게 됩니다.

더 나은 처리는 판별 실패를 별도의 상태로 두고, 지원하는 카드 조직 목록을 함께 안내하는 것입니다. 이 상태가 실제로 발생하는지 확인하려면 지원하지 않기로 한 대역의 번호를 테스트 목록에 반드시 하나 넣어야 합니다.

목록을 관리하는 방법

카드 조직 목록은 고정되어 있지 않습니다. 새 대역이 추가되기도 하고, 잘 쓰이지 않던 대역이 정리되기도 합니다. 그래서 목록을 코드 곳곳에 흩어 두면 갱신할 때 누락이 생깁니다.

관리하기 좋은 형태는 한 곳에 모아 둔 표입니다. 카드 조직 이름, 시작 대역, 허용 자릿수, 보안 코드 길이, 그리고 테스트용 번호를 한 줄에 두고, 검증 로직과 화면 로직이 모두 이 표를 참조하게 만듭니다. 표에 넣을 번호를 고르는 기준은 테스트용 신용카드 번호에 따로 정리해 두었습니다.

개발자를 위한 메모: 테스트 행렬을 표로 고정하라

카드 조직이 늘어나면 경우의 수가 금방 커집니다. 그래서 조합을 문서로 고정해 두는 편이 좋습니다.

  • 카드 조직과 자릿수 조합을 행으로 두기
  • 성공, 카드사 불일치, 자릿수 오류를 열로 두기
  • 각 칸에 쓸 번호를 미리 정해 두기
  • 자동화 테스트가 이 표를 그대로 읽게 만들기

이렇게 해 두면 카드 조직이 하나 늘어났을 때 채워야 할 칸이 눈에 보입니다. 반대로 표 없이 감으로 테스트하면 새 조직이 들어와도 확인되지 않은 채 배포됩니다.

다음 단계

지금 쓰는 테스트 번호가 한 카드사에만 몰려 있다면, 위 표를 참고해 최소 세 조직으로 늘려 보세요. 특히 열다섯 자리와 앞면 네 자리 보안 코드를 함께 시험해야 하는 카드 조직을 꼭 넣는 것이 좋습니다. 생성기에서 카드사를 지정해 번호를 만들면 조직별 자릿수와 보안 코드 길이를 한 번에 확인할 수 있고, 만들어진 번호는 구조적으로 유효할 뿐 실제로 발급된 적이 없습니다.

이어 읽기

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