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

APIライフサイクル全体を見据えたテスト戦略

草薙昭彦
November 30, 2023

 APIライフサイクル全体を見据えたテスト戦略

Postmanは全世界で2,800万人以上の開発者に使われているAPIプラットフォームです。「APIファースト」「APIライフサイクル全体のサポート」を念頭に設計されているPostmanが、どのようにAPI開発者の作業を楽にできるかをご紹介します。APIテストツール4選!開発者が語る各ツールの特徴と魅力での発表資料です。

草薙昭彦

November 30, 2023
Tweet

More Decks by 草薙昭彦

Other Decks in Technology

Transcript

  1. All rights reserved by Postman Inc
    API ライフサイクル全体を
    見据えたテスト戦略
    草薙 昭彦
    テクノロジーエバンジェリスト
    #APIテスト大好き

    View full-size slide

  2. テクノロジーエバンジェリスト
    Postman 株式会社
    草薙 昭彦
    @postman_japan
    @nagix

    View full-size slide

  3. @postman_japan
    Postman とは?
    全世界 2,800 万人以上のユーザーに使われている APIを
    構築して利用するための API プラットフォームです。
    API ライフサイクルの各ステップを簡単に行えるようになり、
    API の共有と開発コラボレーションを効率化できます。

    View full-size slide

  4. Postman アプリ
    ドキュメントを見ながら
    作業できる🚀
    整形されたレスポンスが見られる🚀
    パラメータを変えてすぐ試せる🚀
    エンドポイントを打ち込
    む必要がない🚀
    API のセットを整理し
    ておける🚀
    @postman_japan

    View full-size slide

  5. テスト自動化ピラミッド
    UI Tests
    E2E
    API Tests
    Integration Tests
    Component Tests
    Unit Tests
    コスト
    実行時間
    不確実要素
    テスト数
    @postman_japan

    View full-size slide

  6. コレクションとは?
    コレクションは、実行可能な関連 API リクエスト(群)の集合です。コレクション単位で(もしくはコレクション
    に関連付けて)モックサーバー、モニター、テストスイートなど主要な Postman 機能が利用できます
    コレクション
    APIリクエスト
    テスト サンプル
    APIリクエスト
    テスト サンプル
    APIリクエスト
    テスト サンプル
    コレクションでできる主なこと
    ● 複数 API リクエスト、関連レスポンス、テストの定義
    ● ワークフロー定義(リクエスト呼び出しのシーケンス)
    ● リクエスト・テスト実行の自動化(コレクションランナー活用)
    ● コレクション単位の文書化
    ● モックサーバー利用(コレクション単位)
    ● モニター利用(コレクション単位)
    ● チームメイトや利用者とのコラボレーション
    ○ フォーク (Fork)
    ○ プルリクエスト
    ○ コメント
    @postman_japan

    View full-size slide

  7. Postman スクリプト
    ● Postman サンドボックスで実行
    ● Built-in の JavaScript API を pm、postmanオブジェクトを通じて利用可能
    ● Mocha ベースのテストフレームワークを利用、Assertion ライブラリとして Chai が利用可能
    ● 豊富なスニペットとサンプルスクリプト集が用意されている
    ● 新機能: Postbot(AIを活用したスクリプト生成アシスタント)
    スクリプト
    Postbot
    スニペット
    ローコード
    支援機能
    @postman_japan

    View full-size slide

  8. 2種類のスクリプト実行ステージ
    Postman では Pre-request と Test の2種類のステージでスクリプトの実行が可能
    Pre-request
    リクエスト実行前に実行
    Test
    レスポンス取得後に実行
    リクエスト
    送信
    レスポンス
    取得
    @postman_japan

    View full-size slide

  9. リクエスト単位のテスト実行
    実行
    各テストの実行結果が出力
    Test ステージに5つのテストを記述
    @postman_japan

    View full-size slide

  10. コレクションランナーで複数リクエストのテスト実行
    実行
    実行結果詳細表示
    サマリー結果表示
    順番入れ替え可能
    実行方法選択
    手動 / スケジュール実行
    イテレーション数
    遅延秒数
    データファイル
    指定可能
    選択
    コレクションメニュー コレクションランナー実行方法設定
    @postman_japan

    View full-size slide

  11. コレクションランナーでテストのスケジュール実行
    ● コレクションごとにスケジュール設定
    ● テスト実行頻度
    ○ 5分毎〜設定可能。ただし無料プランは一時間毎〜
    ● テストは Postman クラウド内から実行
    ● アラート通知設定
    ○ テストが失敗したらチームメンバーに通知可能
    ● リトライ、タイムアウトなど設定可能
    イテレーション数
    データファイル
    指定可能
    アラート通知設定
    スケジュール設定
    @postman_japan

    View full-size slide

  12. スクリプトと変数を活用したリクエスト実行順序制御
    スクリプトと変数を活用することで複数リクエストの実行順序を制御できます。これによりさまざまなパター
    ンのシナリオテストの実行が可能になります
    // グローバル変数設定
    pm.globals.set("variable_key", "variable_value");
    pm.globals.get("variable_key");
    // コレクション変数設定
    pm.collectionVariables.set("variable_key", "variable_value");
    pm.collectionVariables.get("variable_key");
    // 選択している環境への環境変数設定
    pm.environment.set("variable_key", "variable_value");
    pm.environment.get("variable_key");
    postman.setNextRequest("request_name")
    変数操作用関数(Get/Set)
    次に実行するリクエストを決定する関数
    Request A
    POST /pet
    Request B
    POST /order
    Request C
    GET /pet/
    petId orderId
    pm
    .environm
    ent.set pm
    .environm
    ent.get
    pm.environment.get
    pm.environment.set
    postman.setNextRequest(“Request C”)
    変数でリクエスト間で
    データを共有
    postman.setNextRequestで
    次実行するリクエストを指定
    @postman_japan

    View full-size slide

  13. CLI を活用した CI/CD 経由のテスト自動実行
    コード
    リポジトリ
    ビルド
    ユニット
    テスト
    サービス
    E2E
    テスト
    デプロイ
    リリース
    CI CD
    繰り返し
    @postman_japan

    View full-size slide

  14. API ファースト開発モデル
    @postman_japan

    View full-size slide

  15. API ファーストの世界
    https://api-first-world.com/ja/
    @postman_japan

    View full-size slide

  16. API ファーストとは?
    ● API に対する位置づけ、考え方
    ○ API はプロダクト(主要ソフトウェア構成要素、主要ビジネスアセット)
    ○ API がビジネスにもたらす価値に焦点を当てる
    ○ API 中心:内外サービスを API を通じて活用しビルディングブロックで構築
    ● API 開発モデル
    ○ API を最優先に開発(API を後回しにしない)
    ○ コードを書く前に API を設計・構築
    ● API ファースト採用のために必要な取り組み
    ○ API ライフサイクルを理解しライフサイクル全体で取り組む
    ○ API の継続的な保守・運用のためのチーム体制を構築する
    API-First Guide - https://www.postman.com/api-first/
    @postman_japan

    View full-size slide

  17. API はプロダクト = 第一級市民
    ● API は後付で構築するものではなく、最優先で構築するもの
    ● 戦略的なビジネスアセットとしてライフサイクル全体で管理する
    ● 一回きりのプロジェクトではなく、継続的に管理する
    ● 継続的な保守・運用のためのチーム体制を構築する
    @postman_japan

    View full-size slide

  18. Planning
    Defining
    Designing
    Building
    Testing
    Deployment
    SDLC
    (Software Development Life Cycle)
    @postman_japan

    View full-size slide

  19. API 提供者と利用者の API 開発ライフサイクル
    @postman_japan

    View full-size slide

  20. API ファースト開発モデル
    ● 焦点は API の設計(システムの抽象的な「契約」)
    ● コードを書く前に API を設計・構築し、モック、ドキュメント、テストも作成
    ● 設計フェーズでフィードバックループを通じて設計内容を洗練化
    API-first software development for modern organizations 
    https://medium.com/better-practices/api-first-software-development-for-modern-organizations-fdbfba9a66d3
    API設計
    テスト
    APIドキュメント
    作成
    モック作成
    実装
    コーディング
    統合
    テスト実行
    監視実行
    サーバー環境
    Dev
    Stage
    Prod
    モック活用
    テスト
    ドキュメント
    活用
    コードリポジトリ
    モックを元にレビューや
    フィードバックを受け
    設計内容を洗練させる
    check-in
    デプロイ
    エンドポイント
    にテスト
    API開発環境
    @postman_japan

    View full-size slide

  21. コードを書く前にAPIを設計・構築するとは?
    要件
    API 設計
    コード
    API 仕様作成
    API ドキュメント作成
    モック作成
    テストコード作成
    API 定義・生成 テスト
    モック、テスト結果を元にレビューや
    フィードバックを受け設計内容を洗練させ
    る作業を繰り返す
    @postman_japan

    View full-size slide

  22. デザイン、モック作、フィードバックループ
    API Spec
    API
    Documentation
    Mocks
    Tests
    Code Stubs
    Client SDK
    Defining &
    Designing
    Building
    Testing Deployment
    Monitoring &
    Observing
    Existing
    Code
    @postman_japan

    View full-size slide

  23. 2つの API 開発モデルを比較
    要件 要件
    コード API 設計
    API
    ドキュメント テ
    スト
    コード
    コメント
    アノテーション
    API 仕様
    API ドキュメント
    API モック
    API テスト
    コードファースト APIファースト
    @postman_japan

    View full-size slide

  24. コードファースト開発モデル
    要件
    コード
    (コア機能先行開発)
    API
    Docs / Tests
    ポイント
    ● 要件を元に API 実装後に API テスト・ドキュメント作成。
    ● 焦点は API (インターフェース) ではなくコア機能。API は後付
    け。API を実装する段階になるとコア機能はほぼ完了
    メリット
    ● 迅速なプロトタイピング
    ● 柔軟性と適応力。要件の変更や市場の変化に迅速に対応
    デメリット
    ● API 内容がコア機能や利用テクノロジーに引っ張られやすい
    ● API ドキュメントや結合テストが後付けになるため、品質リスクや途中開発
    における関係者間のコラボレーションへの弊害
    ● 仕様確定やテスト実施によるフィードバックが開発プロセス後半になるた
    め、問題がある場合の変更コストが大きい
    @postman_japan

    View full-size slide

  25. API ファースト開発モデル
    ポイント
    ● API コードを書く前に API を設計・構築
    ● API 設計フェーズでフィードバックループを通じて設計内容を
    洗練化
    メリット
    ● 設計品質、開発者エクスペリエンス向上
    ● 要件・設計などの問題について早期発見ができ、変更コストが低いうち
    に変更、方向転換ができる。不確実性に対して柔軟。
    ● 設計段階で、API ドキュメントやテスト生成され、比較的初期段階でも関
    係者間でコラボレーションが可能
    デメリット
    ● 設計フェーズに時間がかかる
    ● 要件の変更に対する対応に時間がかかりがち(設計から入るため)
    要件
    コード
    API設計
    @postman_japan

    View full-size slide

  26. Postman を活用した実際の開発フロー
    API 設計
    テスト
    API ドキュメント
    作成
    モック作成
    実装
    コーディング
    統合
    テスト実行
    モニター実行
    サーバー環境
    Dev
    Stage
    Prod
    モック活用
    テスト
    ドキュメント
    活用
    コードリポジトリ
    モックを元にレビューや
    フィードバックを受け
    設計内容を洗練させる
    check-in
    デプロイ
    エンドポイント
    にテスト
    API 開発環境
    @postman_japan

    View full-size slide

  27. API を設計する - API ビルダー
    直感的な UI を介して API の構造を定義できます。外部の定義ファイルのインポートも可能。
    @postman_japan

    View full-size slide

  28. モックサーバーを作る
    サンプルレスポンスを設定し、それを応答するモックサーバーを立ち上げ。動的なレスポンスも作れます。
    @postman_japan

    View full-size slide

  29. テストを作る
    コレクションにテストスクリプトを追加。Postbot やコードスニペットの支援を受けられます。
    スクリプト
    Postbot
    スニペット
    ローコード
    支援機能
    @postman_japan

    View full-size slide

  30. テストの実行スケジュールを設定・モニターを作る
    コレクションを定期的に実行するように設定。モニターは実行リージョンの指定もできます。
    @postman_japan

    View full-size slide

  31. まとめ
    ● Postman
    ○ API ファースト開発を意識した API プラットフォーム
    ● API ファースト開発
    ○ 焦点は API の設計(システムの抽象的な「契約」)
    ○ コードを書く前に API を設計・構築し、モック、ドキュメント、テストも作成
    ○ 設計フェーズでフィードバックループを通じて設計内容を洗練化
    ● API ファースト開発ではテストのスタート地点が変わります。皆さんのチームでも、API
    ファーストのアプローチを検討してみませんか?
    @postman_japan

    View full-size slide

  32. 日本語版 Postman ベータリリース 2023/12/1(金)
    @postman_japan
    日本語への切り替え方法
    アプリ画面右上の ⚙ アイコンから
    Settings → General → Application → Language

    View full-size slide

  33. Postman Advent Calendar 2023
    https://qiita.com/advent-calendar/2023/postman
    @postman_japan

    View full-size slide

  34. Postman 日本上陸 記念イベント
    https://www.postman.com/jp/events/postman-japan-launch/
    2023/12/5(火)
    @postman_japan
    15:00 - 19:00

    View full-size slide

  35. ありがとうございました
    @postman_japan

    View full-size slide