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テスト大好き
  2. @postman_japan Postman とは? 全世界 2,800 万人以上のユーザーに使われている APIを 構築して利用するための API プラットフォームです。

    API ライフサイクルの各ステップを簡単に行えるようになり、 API の共有と開発コラボレーションを効率化できます。
  3. テスト自動化ピラミッド UI Tests E2E API Tests Integration Tests Component Tests

    Unit Tests コスト 実行時間 不確実要素 テスト数 @postman_japan
  4. コレクションとは? コレクションは、実行可能な関連 API リクエスト(群)の集合です。コレクション単位で(もしくはコレクション に関連付けて)モックサーバー、モニター、テストスイートなど主要な Postman 機能が利用できます コレクション APIリクエスト テスト

    サンプル APIリクエスト テスト サンプル APIリクエスト テスト サンプル コレクションでできる主なこと • 複数 API リクエスト、関連レスポンス、テストの定義 • ワークフロー定義(リクエスト呼び出しのシーケンス) • リクエスト・テスト実行の自動化(コレクションランナー活用) • コレクション単位の文書化 • モックサーバー利用(コレクション単位) • モニター利用(コレクション単位) • チームメイトや利用者とのコラボレーション ◦ フォーク (Fork) ◦ プルリクエスト ◦ コメント @postman_japan
  5. Postman スクリプト • Postman サンドボックスで実行 • Built-in の JavaScript API

    を pm、postmanオブジェクトを通じて利用可能 • Mocha ベースのテストフレームワークを利用、Assertion ライブラリとして Chai が利用可能 • 豊富なスニペットとサンプルスクリプト集が用意されている • 新機能: Postbot(AIを活用したスクリプト生成アシスタント) スクリプト Postbot スニペット ローコード 支援機能 @postman_japan
  6. コレクションランナーでテストのスケジュール実行 • コレクションごとにスケジュール設定 • テスト実行頻度 ◦ 5分毎〜設定可能。ただし無料プランは一時間毎〜 • テストは Postman

    クラウド内から実行 • アラート通知設定 ◦ テストが失敗したらチームメンバーに通知可能 • リトライ、タイムアウトなど設定可能 イテレーション数 データファイル 指定可能 アラート通知設定 スケジュール設定 @postman_japan
  7. スクリプトと変数を活用したリクエスト実行順序制御 スクリプトと変数を活用することで複数リクエストの実行順序を制御できます。これによりさまざまなパター ンのシナリオテストの実行が可能になります // グローバル変数設定 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/<id> petId orderId pm .environm ent.set pm .environm ent.get pm.environment.get pm.environment.set postman.setNextRequest(“Request C”) 変数でリクエスト間で データを共有 postman.setNextRequestで 次実行するリクエストを指定 @postman_japan
  8. API ファーストとは? • API に対する位置づけ、考え方 ◦ API はプロダクト(主要ソフトウェア構成要素、主要ビジネスアセット) ◦ API

    がビジネスにもたらす価値に焦点を当てる ◦ API 中心:内外サービスを API を通じて活用しビルディングブロックで構築 • API 開発モデル ◦ API を最優先に開発(API を後回しにしない) ◦ コードを書く前に API を設計・構築 • API ファースト採用のために必要な取り組み ◦ API ライフサイクルを理解しライフサイクル全体で取り組む ◦ API の継続的な保守・運用のためのチーム体制を構築する API-First Guide - https://www.postman.com/api-first/ @postman_japan
  9. API はプロダクト = 第一級市民 • API は後付で構築するものではなく、最優先で構築するもの • 戦略的なビジネスアセットとしてライフサイクル全体で管理する •

    一回きりのプロジェクトではなく、継続的に管理する • 継続的な保守・運用のためのチーム体制を構築する @postman_japan
  10. 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
  11. コードを書く前にAPIを設計・構築するとは? 要件 API 設計 コード API 仕様作成 API ドキュメント作成 モック作成

    テストコード作成 API 定義・生成 テスト モック、テスト結果を元にレビューや フィードバックを受け設計内容を洗練させ る作業を繰り返す @postman_japan
  12. デザイン、モック作、フィードバックループ API Spec API Documentation Mocks Tests Code Stubs Client

    SDK Defining & Designing Building Testing Deployment Monitoring & Observing Existing Code @postman_japan
  13. 2つの API 開発モデルを比較 要件 要件 コード API 設計 API ドキュメント

    テ スト コード コメント アノテーション API 仕様 API ドキュメント API モック API テスト コードファースト APIファースト @postman_japan
  14. コードファースト開発モデル 要件 コード (コア機能先行開発) API Docs / Tests ポイント •

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

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

    コーディング 統合 テスト実行 モニター実行 サーバー環境 Dev Stage Prod モック活用 テスト ドキュメント 活用 コードリポジトリ モックを元にレビューや フィードバックを受け 設計内容を洗練させる check-in デプロイ エンドポイント にテスト API 開発環境 @postman_japan
  17. まとめ • Postman ◦ API ファースト開発を意識した API プラットフォーム • API

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