クレジットカードシステムのテスト項目を徹底解説!決済・異常系・3Dセキュアまで網羅

クレジットカードシステムのテストを担当すると、「正常に決済できることは確認したものの、ほかに何をテストすればよいのかわからない」と悩むケースは少なくありません。
クレジットカード決済は金銭を扱うため、一般的な入力フォーム以上に、テスト漏れが売上や顧客対応へ大きな影響を与えやすい機能です。
正常なカードで購入できるかだけではなく、カード利用拒否、本人認証の失敗、通信エラー、取消、返金、二重決済といった状況まで想定する必要があります。
さらに、画面上では決済に成功していても、注文データや管理画面のステータスが更新されていなければ、システム全体として正常とはいえません。
重要なのは、思いついたテスト項目を増やしていくのではなく、決済開始から決済後の処理までを一連のフローとして分解し、それぞれに正常系と異常系を当てはめることです。
テスト用の環境やカードを活用すれば、実際の請求を発生させることなく、決済成功や各種エラーを再現できるサービスもあります。
そこで今回は、クレジットカードシステムで確認したいテスト観点を、決済フロー・基本機能・外部連携・セキュリティ・リリース前確認の順番で整理しました!
テスト設計やレビュー時の観点整理に役立てながら、担当システムに必要なテストケースへ落とし込んでいきましょう。

まず押さえたい!クレジットカードシステムのテスト範囲

クレジットカードシステムをテストするときは、カード情報を入力する画面だけではなく、決済に関連するシステム全体をテスト対象として捉えることが重要です。
ECサイトやWebサービスでは、自社システムだけで決済処理が完結するとは限らず、決済代行サービスやカード会社など、複数のシステムをまたいで処理が進みます。
そのため、画面上で「購入が完了しました」と表示されたことだけを確認しても、十分なテストとはいえません。
決済結果が注文データへ反映されているか、管理画面のステータスが正しいか、金額にずれがないかなど、内部処理まで確認する必要があります。
特に重要なのが、画面上の状態・決済サービス側の状態・自社データの状態が一致しているかという観点です。
最初にテスト対象となる処理やステータスを整理しておけば、正常系だけに偏らず、異常系や決済後処理まで含めたテストケースを作りやすくなります。
決済画面だけでなく「一連の処理」をテストしよう!
クレジットカード決済では、カード番号を入力して決済ボタンを押した瞬間だけではなく、注文開始から決済結果の反映までの一連の処理を確認します。
ECサイトであれば、商品選択、注文情報の作成、カード情報の入力、本人認証、決済処理、決済結果の取得、注文状態の更新、完了画面の表示といった流れが代表的です。
さらに、決済完了メールや管理画面への反映、在庫の更新などが連動している場合は、それらもテスト範囲に含めます。
API(Application Programming Interface)を利用して決済サービスと連携している場合は、リクエスト内容だけではなく、返却された結果が自社システムへ正しく反映されるかを確認することも欠かせません。
たとえば、決済サービスでは成功しているにもかかわらず、注文データが「未決済」のままであれば、後続の出荷や顧客対応で問題が発生します。
利用者から見える画面とシステム内部の状態をセットで確認することが、決済システムのテストで重要な基本姿勢です。
テスト前に「決済状態と業務フロー」を整理しよう!
具体的なテストケースを作成する前に、システム内で扱われる決済ステータスと業務フローを一覧化しておくと、テスト漏れを減らしやすくなります。
決済システムでは単純な「成功」「失敗」だけではなく、処理前、認証中、与信済み、売上済み、取消済み、返金済みなど、複数の状態を扱う場合があります。
オーソリと呼ばれる与信処理の後に売上を確定するシステムでは、与信成功後に売上処理へ進めるか、取消した場合に状態が戻るかといった確認も必要です。
特に注意したいのが、自社の注文状態と決済サービス側の状態が食い違うケースです。
「決済は成功しているが注文登録に失敗した」「注文データは作成されたが決済は失敗した」などの状態をあらかじめ想定すると、障害時の復旧方法まで確認できます。
都度購入だけでなく、予約販売や定期購入などがある場合は、業務フローごとに「処理×状態×結果」を整理してからテストケースへ落とし込むと効率的です。

ここを押さえれば漏れにくい!クレジットカード決済の基本テスト項目

クレジットカード決済の基本テストは、正常系・入力エラー・決済失敗・決済後処理の4つに分けると整理しやすくなります。
最初に正常系で基本的な決済フローが成立することを確認し、その後にカード情報の誤入力や利用拒否などの異常系を追加していくのが基本的な進め方です。
また、購入できることだけを確認してテストを終えるのではなく、取消や返金まで含めて確認する必要があります。
特に決済システムでは、正常系よりも異常発生時の処理で不具合が見つかることが少なくありません。
テストケースを作成するときは、単にケース数を増やすのではなく、どのような条件で決済結果やシステム状態が変化するのかを基準に整理します。
カード情報、金額、認証結果、決済結果などの条件を組み合わせることで、実運用に近いテスト設計につながります。
まずは正常系!問題なく購入できる流れを確認しよう!
正常系では、利用可能なカードを使用して、注文開始から決済完了まで問題なく進められることを確認します。
カード番号、有効期限、セキュリティコードなどを正しく入力し、想定した決済結果が返ってくるかを確認しましょう。
Visa、Mastercard、JCBなど複数のカードブランドに対応している場合は、契約内容や実装仕様を踏まえて必要なブランドをテスト対象に含めます。
金額についても、商品価格だけではなく、送料、税、割引、クーポンなどを含めた最終的な請求金額が注文金額と一致しているかを確認することが重要です。
決済成功後は、注文データや決済ステータス、管理画面、在庫、メール通知など、関連する処理まで正しく反映されているかを確認します。
一つの画面で「成功」と表示されたことだけを合格条件とせず、決済完了後のシステム状態まで含めて正常系と考えることがポイントです。
入力チェックを網羅!カード情報の異常・境界値を確認しよう!
カード情報入力画面では、正しい値だけではなく、未入力・形式不正・境界値などを使った入力チェックを行います。
カード番号では、未入力、桁数不足、桁数超過、数字以外の入力など、画面仕様で想定されているケースを確認します。
有効期限では、過去の日付、存在しない月、未入力などに対して適切なエラーが表示されるかを確認します。
セキュリティコードやカード名義を扱う場合も、必須チェックや文字数、利用可能な文字種などを仕様書と照らし合わせます。
入力値だけでなく、決済ボタンの連打、ブラウザの戻る操作、再読み込みなど、通常とは異なる画面操作を組み合わせることも重要です。
なお、入力形式のエラーと、正しい形式で送信した後にカード会社や決済サービスから返される利用拒否は別の異常系になるため、混同せずテストケースを分けて設計します。
決済失敗も再現!カード拒否や処理エラーを確認しよう!
クレジットカードシステムでは、正常に決済できるケースと同じくらい、決済できなかったときの挙動が重要です。
テスト環境で再現できる場合は、カード利用拒否、有効期限切れ、利用可能額不足、処理エラーなど、提供されている失敗パターンを確認します。
決済サービスによっては、特定のテストカードや入力条件によって異なるレスポンスを再現できる仕組みがあります。
ただし、再現可能なエラーの種類やテストカードの仕様はサービスごとに異なるため、使用中の決済サービスのテスト仕様に合わせてケースを設計する必要があります。
決済失敗後には、不要な請求が発生していないか、注文状態が正しいか、再度決済できるかなども確認しましょう。
エラーメッセージについては、内部的なエラーコードをそのまま表示するのではなく、利用者が次に何をすればよいか判断できる内容になっているかという視点も重要です。
決済後も重要!取消・返金・売上処理まで確認しよう!
クレジットカードシステムのテストでは、商品を購入できた時点で終了せず、決済後に発生する取消や返金までテストします。
決済取消を実行した場合は、決済サービス側だけではなく、自社システムの注文状態や管理画面にも結果が正しく反映されているかを確認します。
返金機能がある場合は、全額返金に加え、システムが対応しているのであれば一部返金も確認します。
同じ取引に対して取消や返金を複数回実行した際に、二重で処理されないことも重要なチェックポイントです。
また、決済サービスによって取消・返金できる期間や処理条件が定められている場合があるため、サービス側の制約と自社システムの制御が一致しているかも確認する必要があります。
購入処理だけでなく、注文キャンセルや返品といった実際の業務フローまで想定することで、本番運用で発生しやすい問題を事前に見つけやすくなります。

本番障害を防ごう!外部連携・3Dセキュア・セキュリティのテスト

クレジットカード決済は外部サービスとの連携が多いため、通常の画面テストだけでは確認できない障害パターンがあります。
特に注意したいのが、API通信の失敗やタイムアウトによって決済結果が不明確になるケースです。
さらに、ECサイトではEMV 3-Dセキュアによる本人認証が重要となっており、認証成功だけでなく認証失敗やキャンセルなどの分岐もテストする必要があります。
現在のEC加盟店では、EMV 3-Dセキュアの導入だけでなく、Webサイトの脆弱性対策や不正ログイン対策なども重要なセキュリティ施策として位置づけられています。
また、カード情報を保存・処理・送信するシステムでは、PCI DSS(Payment Card Industry Data Security Standard)を踏まえたデータ保護も検討しなければなりません。
機能面で決済できることと、安全な決済システムであることは別のため、外部障害・本人認証・情報保護をそれぞれ独立したテスト観点として持つことが重要です。
通信エラーに強くする!API・タイムアウト時の動きを確認しよう!
外部の決済サービスとAPIで連携しているシステムでは、正常なレスポンスだけでなく、エラーや通信障害が発生した場合の挙動を確認します。
決済APIがエラーを返した場合に処理を適切に中断できるか、利用者へ必要な案内を表示できるかを確認しましょう。
特に注意したいのが、決済リクエストを送信した後にタイムアウトし、自社システム側では結果を受け取れないケースです。
この状態で単純に再送すると、最初の決済が実際には成功していた場合に二重決済へつながる可能性があります。
決済ボタンの連打、画面の再読み込み、通信途中の画面離脱などについても、同じ取引が重複して実行されない仕組みになっているかを確認することが重要です。
Webhookなどの非同期通知を利用している場合は、通知が遅れる、重複する、届かないといった状況も含め、決済状態を最終的に正しく確定できるかまでテストします。
3Dセキュアも忘れずに!本人認証の分岐を確認しよう!
ECサイトの決済では、EMV 3-Dセキュアによるカード利用者の本人認証を含めたフローをテストする必要があります。
現在はEC加盟店における不正利用対策としてEMV 3-Dセキュアの導入が重要な位置づけとなっており、認証機能を含めた動作確認は欠かせません。
正常に認証して決済が完了するケースだけでなく、追加認証が必要になる場合や、認証に失敗した場合も確認します。
利用者が認証をキャンセルした場合、認証中にタイムアウトした場合、ブラウザの戻る操作を行った場合などもテスト対象です。
本人認証画面から自社サイトへ戻った際には、注文状態と決済状態が正しい組み合わせになっているかを必ず確認します。
認証画面自体が正常に表示されることだけを確認するのではなく、認証前から認証後までを一つの決済フローとしてテストすることが重要です。
カード情報を守れている?セキュリティ観点も確認しよう!
クレジットカードシステムでは、決済機能が正常に動くことに加えて、カード情報を安全に取り扱えているかという観点が欠かせません。
まず確認したいのが、カード番号やセキュリティコードなどの機密性が高い情報を、不要な場所へ保存していないかという点です。
アプリケーションログ、エラーログ、アクセスログ、分析ツールなどへカード情報が意図せず出力されていないかも確認します。
PCI DSSは、カード会員データを保存・処理・送信する事業体などを対象として、決済情報を保護するための技術面・運用面の基本要件を定めています。
EC加盟店では、決済部分だけを見るのではなく、Webサイトやシステムの脆弱性、不正ログインなどを含めた対策も重要です。
「機能テストに合格したから安全」と判断せず、機能品質とセキュリティ品質を別々に確認することが安全な決済システムにつながります。

実務ですぐ使える!テスト環境の準備からリリース判定までの進め方

クレジットカードシステムのテストを効率よく進めるには、テストケースを作る前に利用できるテスト環境と再現可能な決済結果を確認することが大切です。
決済サービスによって、テストカードで再現できる成功・失敗パターンや、テスト環境と本番環境の違いは異なります。
そのため、一般的なテスト項目をそのまま当てはめるのではなく、自社システムの仕様と利用している決済サービスの仕様を組み合わせてテストケースを作成します。
すべての条件を総当たりでテストするとケース数が膨大になるため、障害が発生した場合の影響と発生可能性を考えて優先順位を付けることも重要です。
特に決済不可、二重決済、金額誤り、注文状態との不整合などは、事業への影響が大きいため重点的に確認します。
最終的には、重要なリスクを十分にカバーした状態でリリース判断できるテスト設計を目指します。
まずテスト環境を確認!テストカードで安全に再現しよう!
テストを始める前に、利用している決済サービスが提供しているテスト環境やサンドボックスの仕様を確認しましょう。
決済サービスによっては、実際の請求を発生させずに、決済成功や決済失敗などを再現できる専用のテストカードが用意されています。
正常決済だけでなく、利用拒否や認証失敗などを再現できれば、異常系のテストも安全に実施できます。
ただし、テストカードの番号や再現できる結果はサービスごとに異なるため、別の決済サービス向けに公開されているテスト情報を流用しないよう注意が必要です。
また、テスト環境で確認できる機能と、本番環境でなければ最終確認できない機能をあらかじめ切り分けておきます。
テスト環境は本番環境そのものではないという前提を持ち、環境差分や本番切り替え後に確認すべき項目までテスト計画へ含めることが重要です。
「画面×決済状態×外部連携」でテストケースを整理しよう!
テストケースを作る際は、画面ごとに項目を並べるだけでなく、「画面」「決済状態」「外部連携」の3つの軸で整理すると抜け漏れを発見しやすくなります。
処理の流れとしては、入力、本人認証、決済処理、結果反映、取消・返金といった単位に分けます。
そこへ正常系、異常系、境界値、通信障害、セキュリティといった観点を組み合わせれば、必要なケースを体系的に洗い出せます。
さらに、カード状態、購入金額、本人認証結果、APIの応答結果など、結果を変化させる条件を整理します。
ただし、すべての組み合わせを機械的に実行すると膨大な工数が必要になるため、障害時の影響度と発生可能性を考慮して優先順位を付けることが重要です。
レビューではテストケースの総数だけを見るのではなく、二重決済や状態不整合など、事業への影響が大きいリスクを十分にカバーできているかを確認しましょう。
リリース前に最終確認!重大障害につながるケースを優先しよう!
リリース直前は、テスト項目を最初からすべて繰り返すのではなく、障害発生時の影響が大きい機能から優先して最終確認します。
代表的なのは、決済できない、二重で請求される、注文金額と決済金額が異なる、決済結果と注文状態が一致しないといったケースです。
タイムアウト、通信断、決済ボタンの連打、ブラウザの再読み込みなど、通常操作から外れた状況も重点的に再確認します。
EMV 3-Dセキュアを利用するシステムでは、本人認証を含む実際の決済フローと、テスト環境との違いを把握しておくことも大切です。
さらに、テストモードの解除、APIキーや接続先の切り替えなど、テスト用設定が本番環境へ残っていないかもリリースチェックに含めます。
万が一の障害に備えて、取引を特定できるID、必要なログ、監視方法、決済サービスへの問い合わせ手順まで確認しておけば、問題発生後の調査や復旧も進めやすくなります。

まとめ|チェックリスト化して「漏れなく安全にリリースできる状態」をつくろう!
クレジットカードシステムのテストでは、正常に購入できることだけではなく、入力エラー、決済失敗、取消・返金、外部連携、本人認証、セキュリティまで一連の流れとして確認することが重要です。
特に決済システムでは、利用者が目にする画面だけでなく、自社の注文データや決済サービス側のステータスが一致しているかを確認する必要があります。
テストケースは「画面」「決済状態」「外部連携」の軸で整理し、正常系・異常系・境界値を組み合わせると抜け漏れを減らしやすくなります。
テスト環境やテストカードも活用しながら、決済成功だけではなく、失敗や通信障害など本番で起こり得る状況を再現しておきましょう。
すべてを同じ優先度で確認するのではなく、二重決済、金額誤り、決済状態の不整合など、事業や利用者への影響が大きいリスクを優先することがポイントです。
整理したテスト観点を自社システム用のチェックリストとして残しておけば、今後の機能改修や決済サービス変更でも再利用でき、テスト設計の効率化と品質向上につなげられます。
QA業務効率化ならPractiTest
テスト管理の効率化についてお悩みではありませんか?そんなときはテスト資産の一元管理をすることで工数を20%削減できる総合テスト管理ツール「PractiTest」がおすすめです!
PractiTest(プラクティテスト)に関する
お問い合わせ
トライアルアカウントお申し込みや、製品デモの依頼、
機能についての問い合わせなどお気軽にお問い合わせください。

この記事の監修

Dr.T。テストエンジニア。
PractiTestエバンジェリスト。
大学卒業後、外車純正Navi開発のテストエンジニアとしてキャリアをスタート。DTVチューナ開発会社、第三者検証会社等、数々のプロダクトの検証業務に従事。
2017年株式会社モンテカンポへ入社し、マネージメント業務の傍ら、自らもテストエンジニアとしテストコンサルやPractiTestの導入サポートなどを担当している。
記事制作:川上サトシ(マーケター、合同会社ぎあはーと代表)

