사용자가 ‘결제하기’ 버튼을 누르는 단 몇 초의 순간.
우리 서비스는 보이지 않는 곳에서 수많은 시스템과 복잡한 통신을 시작합니다.
사용자의 카드 정보는 안전하게 전달되어야 하고, 결제는 정확하게 승인되며, 그 결과는 빠짐없이 우리 데이터베이스에 기록되어야 합니다.
이 돈이 오가는 길목을 지키고, 모든 과정의 정확성과 안정성을 검증하는 것이 바로 ‘결제 테스트’입니다.
이번 글에서는 PG(Payment Gateway, 결제 게이트웨이)사 연동 시 QA가 무엇을 어떻게 테스트해야 하는지 알아보겠습니다.

이 글에서 다루는 것
- 결제 시스템의 기본 동작 원리
- 결제 성공/실패/취소 핵심 시나리오 테스트
- QA를 위한 결제 테스트 실무 팁
- 결제 테스트 핵심 체크리스트
결제는 어떻게 이루어지나요?
QA는 결제 프로세스에 어떤 참여자들이 있는지 알아야 합니다.
- 주요 참여자:
- 고객 (User): 결제를 요청하는 사람
- 가맹점 (Our Service): 우리 쇼핑몰 또는 서비스
- PG사 (Payment Gateway): 다양한 결제수단(카드사, 은행)을 우리 서비스와 안전하게 연결해주는 중간 다리 (예: 토스페이먼츠, KG이니시스)
- 카드사/은행 (Acquirer): 실제 돈의 승인과 이체를 담당하는 최종 금융 기관
간략한 흐름은 고객 -> 가맹점 -> PG사 -> 카드사 -> PG사 -> 가맹점 -> 고객 순서로, 데이터가 여러 시스템을 오고 가는 복잡한 과정입니다.
[핵심 1] ‘결제 성공’ 시나리오 테스트
가장 기본이지만 가장 중요한 테스트입니다.
- 테스트 케이스:
- 사용자가 결제 정보를 입력하고 ‘결제하기’ 버튼을 누릅니다.
- PG사에서 제공하는 결제창이 정상적으로 호출되는지 확인합니다.
- 테스트용 결제 정보로 결제를 시도하여, 성공적으로 완료된 후 ‘결제 완료’ 페이지로 이동하는지 확인합니다.
- 데이터 검증 (가장 중요):
- 우리 서비스의 데이터베이스(DB)에 해당 주문 정보가 ‘결제 완료’ 상태로, 정확한 금액과 함께 기록되었는지 직접 확인합니다(DB 쿼리).
- PG사에서 제공하는 ‘가맹점 관리자 페이지’에서도 해당 결제 내역이 동일하게 기록되었는지 교차 확인하여, 데이터의 정합성을 보증해야 합니다.
[핵심 2] ‘결제 실패’ 시나리오 테스트
사용자는 다양한 이유로 결제에 실패할 수 있습니다.
이때 사용자에게 친절한 안내를 하고, 데이터가 꼬이지 않도록 막는 것이 중요합니다.
- 테스트 케이스:
- 카드 정보 오류: 유효하지 않은 카드 번호, 만료된 유효기간, 틀린 CVC 번호를 입력했을 때.
- 한도 초과: 카드사의 결제 한도를 초과하는 금액을 결제하려고 시도했을 때.
- 사용자 취소: 사용자가 PG사 결제창에서 비밀번호 입력을 거부하거나 ‘취소’ 버튼을 눌렀을 때.
- 기대 결과:
- “유효하지 않은 카드 번호입니다.” 와 같이, 사용자가 이해할 수 있는 명확하고 친절한 에러 메시지를 보여줘야 합니다.
- 우리 DB의 주문 상태는 ‘결제 실패’ 또는 ‘결제 대기’로 올바르게 기록되어야 합니다.
- 실패 시, 주문했던 상품의 재고가 다시 원상복구되는 등 후속 조치가 올바르게 이루어져야 합니다.
[핵심 3] ‘결제 취소(환불)’ 시나리오 테스트
이미 성공한 결제를 취소하는 것은 돈과 직접적으로 관련되므로, 매우 민감하고 중요한 기능입니다.
- 테스트 케이스:
- 전체 취소: 결제한 금액 전체를 취소합니다.
- 부분 취소: 여러 상품 중 일부만 취소하여, 부분 환불이 일어나는 경우를 테스트합니다.
- 데이터 검증:
- 우리 DB에 주문 상태가 ‘결제 취소’로 변경되고, 환불 금액이 정확히 기록되는지 확인합니다.
- PG사 가맹점 관리자 페이지에서도 ‘망취소’ 또는 ‘승인 취소’가 정상적으로 기록되었는지 확인합니다.
- 카드사로부터 실제 환불이 완료되었다는 알림을 받는지 확인합니다. (테스트 환경)
결론: 신뢰를 검증하는 최전선
‘결제 테스트’는 돈과 직접적으로 관련된, 서비스의 신뢰를 결정하는 최전선에 있는 품질 활동입니다.
QA는 단순히 버튼 클릭을 넘어, 눈에 보이지 않는 데이터의 흐름과 상태 변화를 꼼꼼히 추적해야 합니다.
단 1원의 오차도 용납하지 않는 꼼꼼함과, 발생할 수 있는 모든 실패 상황을 미리 대비하는 집요함이 바로 성공적인 ‘결제 테스트’를 이끄는 힘입니다.
부록: 결제 테스트 미니 체크리스트 ✅
- 결제 성공 시, 우리 DB와 PG사 DB에 데이터(주문번호, 금액, 시간)가 정확히 일치하는가?
- 결제 실패 시, 사용자에게 명확한 실패 사유를 안내하는가?
- 결제 취소(전체/부분) 시, 환불 금액 계산은 정확하며, 재고는 원복되는가?
- 네트워크가 불안정한 상태에서 결제 버튼을 여러 번 클릭했을 때, 중복 결제가 발생하지는 않는가?
- 모든 결제 과정에서 개인정보 및 카드 정보는 안전하게 암호화되어 통신하는가?
참고 자료 (References)
- 토스페이먼츠:
https://docs.tosspayments.com/resources/glossary/index - Stripe Docs – Testing (해외 PG사):
https://stripe.com/docs/testing