메뉴

청구서 양식 테스트: 무엇을 어떤 순서로 확인할까

기업 청구서 양식이 요구하는 항목과 나라별 차이를 정리하고, 유효한 번호와 그렇지 않은 번호를 나눠 확인하는 이유, 반복 제출과 중복 발행을 시험하는 방법을 설명합니다.

게시일

  • 청구서
  • 양식 테스트

청구서 양식 테스트는 회사명과 주소를 채워 넣는 일처럼 보이지만, 실제로는 어느 조합에서 어느 칸이 필수가 되는지를 확인하는 작업입니다. 같은 화면도 사업자인지 개인인지, 국경을 넘는 거래인지에 따라 요구하는 항목이 달라집니다. 이 글은 양식에 들어가는 항목, 나라별 차이가 생기는 이유, 그리고 놓치기 쉬운 분기를 정리합니다.

청구서 양식에는 무엇이 들어가나요?

기업 간 청구서에는 대개 여덟 가지가 들어갑니다. 발행하는 쪽의 회사명과 등록번호, 세금 관련 번호, 주소, 연락 창구, 그리고 받는 쪽의 같은 항목입니다. 여기에 청구 기간, 항목과 금액, 발행일과 번호가 더해집니다.

이 가운데 발행자 정보는 우리 쪽 데이터베이스에서 오고, 수신자 정보는 사용자가 입력합니다. 그래서 시험에서 확인할 대상은 대부분 수신자 쪽 입력 양식입니다. 발행자 정보는 이미 저장된 값이므로, 저장된 값이 수신자 화면에 잘 표시되는지가 별도 확인 항목이 됩니다.

번호 항목은 다른 항목과 성질이 다릅니다. 회사명이나 주소는 사람이 읽고 판단하지만, 번호는 형식 규칙이 있고 나라마다 다릅니다. 그래서 검증 로직이 개입할 여지가 가장 큰 자리입니다.

나라마다 요구 항목이 다른 이유는 무엇인가요?

청구서의 필수 항목은 각국의 세법이 정합니다. 어떤 나라는 수신자의 세금 번호를 반드시 요구하고, 어떤 나라는 사업자 간 거래에만 요구합니다. 개인에게 보내는 청구서에서는 세금 번호를 받지 않는 나라가 많습니다.

그래서 같은 서비스라도 결제 화면이 나라별로 다른 분기를 갖습니다. 사업자와 개인을 나누고, 국내와 국경 거래를 나누고, 번호를 받는 나라와 받지 않는 나라를 나눕니다. 이 분기가 늘어날수록 시험하지 않은 조합이 생기기 쉽습니다.

실무적으로는 분기를 최소한으로 유지하는 편이 낫습니다. 나라마다 화면을 따로 만들면 유지 비용이 커지고, 새 나라를 추가할 때마다 같은 실수가 반복됩니다. 대신 공통 양식을 두고 항목의 필수 여부만 표로 관리하는 방식이 흔히 쓰입니다.

어떤 분기를 반드시 시험해야 하나요?

  • 세금 번호가 있는 사업자와 없는 사업자. 번호를 받지 않는 나라의 사업자가 막히지 않는지 확인합니다.
  • 국내 거래와 국경 거래. 국경 거래에서만 국가 코드를 요구하는 경우가 많습니다.
  • 사업자와 개인. 개인 경로에서 회사 항목이 잘못 필수로 남아 있지 않은지 봅니다.
  • 등록번호와 세금 번호를 함께 받는 나라와 하나만 받는 나라.
  • 번호를 나중에 추가하는 흐름. 처음에는 비워 두고 나중에 채우는 경로가 자주 빠집니다.
  • 같은 청구서를 두 번 제출하는 흐름. 중복 발행이 생기는지 확인합니다.

앞의 네 가지는 입력 단계의 분기이고, 뒤의 두 가지는 저장 이후의 분기입니다. 입력만 시험하고 저장 이후를 건너뛰면, 실제로는 중복 청구서가 발행되는데도 시험은 통과합니다.

자주 발생하는 실패는 무엇인가요?

증상 원인 확인 방법
정상 번호가 거부됨 특정 나라 길이를 전체 규칙으로 굳힘 지원 국가를 모두 넣어 봄
번호 없이 진행 불가 사업자와 개인 분기가 없음 개인 경로로 끝까지 진행
청구서 두 장 발행 제출 버튼이 중복 처리됨 같은 요청을 연속 두 번 보냄
주소가 잘려 저장됨 길이 제한이 짧음 가장 긴 주소로 입력
번호가 다른 값으로 저장됨 구분 기호를 임의로 제거 저장값과 입력값 비교

표의 첫 줄과 마지막 줄은 서로 반대 방향의 실수입니다. 하나는 너무 엄격해서 막고, 다른 하나는 너무 관대해서 값을 바꿉니다. 두 방향을 함께 시험해야 검증 계층이 제자리에 있는지 알 수 있습니다.

번호를 다루는 세부 규칙은 세금 번호 검증에, 나라별 형식은 국가별 부가가치세 번호에 정리해 두었습니다.

이 사이트의 도구에서는 어떻게 준비하나요?

테스트용 회사 정보 생성기에서 사업자 정보 한 세트를 만들면 위 분기를 채워 넣을 입력값이 준비됩니다. 같은 식별자를 다시 넣으면 같은 회사가 나오므로, 발행자와 수신자를 짝지어 시나리오를 반복하기 좋습니다. 만들어진 값은 합성 데이터이고 실제 발행 효력이 없으므로, 실제 청구서 발송 경로에는 절대 넣지 마세요.

개발자를 위한 메모: 조합과 멱등성

  • 시험 조합을 표로 관리합니다. 나라, 주체 유형, 번호 보유 여부를 축으로 두고 각 조합에 기대 결과를 적어 둡니다.
  • 청구서 번호의 유일성과 멱등성을 함께 봅니다. 같은 요청이 두 번 도착해도 한 장만 발행되어야 합니다.
  • 제출 버튼을 두 번 누르는 경우를 정식 시나리오로 넣습니다. 네트워크 지연이 있는 환경에서 가장 흔한 사고입니다.
  • 검증 순서를 고정합니다. 어느 칸을 먼저 확인하는지에 따라 사용자가 보는 오류가 달라지므로, 순서를 정하고 시험으로 고정합니다.
  • 오류 위치를 정확히 알려 줍니다. 여러 칸이 동시에 걸렸을 때 한 칸만 표시하면 사용자가 왕복하며 고쳐야 합니다.
  • 시험 자료에는 합성임이 드러나는 표기를 넣습니다. 실제 고객에게 시험 청구서가 나가는 사고는 대개 이 표시가 없어서 생깁니다.
  • 발송 경로를 시험 환경에서 닫아 둡니다. 메일이나 우편 발송이 실제로 나가지 않도록 기본값을 막아 두고, 필요할 때만 모의 수신으로 돌립니다.
  • 통화와 금액 표기를 분리해 다룹니다. 소수 자릿수와 천 단위 구분이 나라마다 달라 합계 검산에서 어긋납니다.

다음 단계

지금 청구서 양식이 어떤 축으로 분기되는지 적어 보고, 그 조합을 하나씩 실행해 보세요. 특히 번호가 없는 사업자와 개인 경로를 먼저 확인하면 막힌 자리가 빨리 드러납니다. 그다음 테스트용 회사 정보 생성기에서 나라를 바꿔 가며 입력값을 만들어, 같은 시나리오를 반복 실행할 수 있는지 확인하면 좋습니다.

이 글은 시험 설계를 돕기 위한 안내이며 회계나 세무 자문이 아닙니다. 청구서의 필수 항목과 효력은 해당 법역의 규정이 정하고, 여기서 만든 자료는 시험용 합성 데이터입니다.

이어 읽기

테스트용 회사 정보 생성기 관련 글