Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コドモンの決済基盤のテストの紹介 / Introduction to the Payment...

コドモンの決済基盤のテストの紹介 / Introduction to the Payment Infrastructure Testing of Codmon

コドモン開発チーム

December 17, 2024
Tweet

More Decks by コドモン開発チーム

Transcript

  1. 4 • 名前 すなかわ / ミジンコおじさん (X: koppamijinko) • 経歴 2014

    〜 2018 大学受験予備校のチューター 2018 〜 2023 第三者検証会社 2023 〜 コドモン • 趣味 野球観戦、映画、旅行 • 好きなテスト技法 デシジョンテーブルテスト • プライベートでは二児の父(男女の双子)
  2. 8

  3. 10 今回のスコープ テスト 分析 テスト 設計 テスト 実装 テスト 実行

    主にここで、 一部設計や実装の話 ※自動テストの詳細や実行した結果等は、対象外となります。
  4. 15 決済基盤に対するテスト対象分析 • 基本機能から見た注意するところ ◦ 各サービス(用品販売やいつでも請求)からの決済リクエストを 受け付けて、決済代行業者に連携している ◦ 実際にユーザーが決済するまでに様々なサービスの結合部分を 意識する必要がある

    • 特に怖いリスク ◦ 金銭を扱うプロダクト かつ 結合部分の齟齬が起きた時の損害が ダイレクトに信用失墜に繋がる ◦ 決済代行業者は、コドモンがハンドリングできない範疇にいる ため、外部起因のデグレードの可能性がありうる
  5. 16 テスト対象分析 → テスト戦略 1. テストレベルが上がるごとに結合部分を増やしていく 例) Unit Test ではBackendの関数やクラス単位でのテスト

    Integration Test では In / Out を意識した機能検証 2. Integration Test において、プロセス間結合外の世界はモックを準 備し、自動テストにおいて挙動の確認を行う 3. 決済基盤 + 決済代行業者の結合部分は、決済代行業者のテスト環 境と接続した状態での結合試験も準備し、自動テストを行う 4. System Test は、ハッピーパスの自動テストに加えて、マニュアル テストも実施。必要に応じて、非機能テストも実施 5. 本番環境でも実際の決済ができるかをチェックする
  6. 20 決済基盤が公開しているAPIの機能担保 • 図にするとこんな感じ • アサートする対象 ◦ HTTP Status Code

    ◦ Response Body の値 / (準正常系の場合) Error Code ◦ 決済基盤DB のカラム値
  7. 21 決済基盤+決済代行業者の結合部分の機能担保 • テストの目的 ◦ 決済基盤のCUJ(クリティカルユーザージャーニー)となるフ ローが決済代行業者の変更によって守れなくなることはないか ということを検知したい そのため、決済基盤単体のIntegration Testではモックとして

    いた決済代行業者もテスト環境(または 本番環境)に繋いで実施 ◦ 決済ネットワークにおける様々なエラーのエラーハンドリング はあえてテスト内容から除外した(重要なエラーコードは単体 のIntegration Testでカバー)
  8. 23 サービスを全て繋げた時の業務フローの確認(System Test) • テストの目的 ◦ QAエンジニアやエンジニアの観点だけでなく、 プロダクトマネージャーやデザイナーの観点を取り入れる ◦ 方針は下記の通り

    ▪ 業務要件として必要な要件が満たせているか ▪ クリティカルな不具合がないかどうか (例:請求金額や請求先の不備 など) ▪ 他社との強みとなる機能が正常に動作しているか • 上記は、ステージング環境で自動テストを行っている
  9. 25 決済基盤のテスト戦略のまとめ • 紹介したことのまとめ ◦ サービス間をブリッジするサービスとなるので、In / Out にす ごく意識したIntegration

    Test を準備 ◦ 自分たちでコントロールできない決済代行業者に対しては、 決済代行業者の提供している環境と繋いだIntegration Testの 実施をしている ◦ 開発に関わるエンジニア以外のビジネスサイドに近い観点も自 動テストで守っている
  10. 26 決済基盤のテスト戦略のまとめ • できていないこともある ◦ 用品販売+決済基盤のテストの自動化 ▪ 手動検証で守っている状態 ▪ テスト環境構築の都合でまだできていない

    ▪ CDCを組むかはチームで検討中 ◦ 負荷試験の定期的な実施 ◦ 今は決済基盤と用品販売を同じチームで見ているため、 お互いの仕様に詳しいメンバーで保守ができている ▪ 今後チームが別れたり、別のチームが決済基盤を使うと なった時のテスト戦略の見直しが必要になる
  11. WEBアプリケーションエンジニア • プロダクトの価値向上のための開発 ◦ 新規開発や機能改善 ◦ リファクタリング ◦ 開発生産性向上 •

    機能単位のリプレイス開発 QAエンジニア • 品質保証戦略の策定 • 品質に関する知識・技術の普及推進 • ソースコード品質向上のためのCI/CDパイプライン構築 • テスト設計・実装 エンジニアリングマネージャー • 採用・評価運用の改善の推進 • 開発ロードマップの議論の推進 • 開発部全体のプロセス改善の推進 • 自己組織化の促進 やることの例 やることの例 やることの例 28 色々な職種・役割において仲間を募集中です 採用ページは 右のQRコードから ご確認下さい👉