Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

スクリプトと変数を活用したリクエスト実行順序制御 スクリプトと変数を活用することで複数リクエストの実行順序を制御できます。これによりさまざまなパター ンのシナリオテストの実行が可能になります // グローバル変数設定 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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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