Postmanを利用した正式版反映前のリグレッションテスト
概要
正式版の反映前後でAPIレスポンスが変化していないかを確認するため、Postmanを利用してリグレッションテストを行う方法を説明します。
APIのレスポンスが変わる場合はSlackコミュニティ等でお知らせがされますが、対象のエンドポイントや使い方をしている箇所がないか確認するのにご活用ください。
前提条件
- 主にProject Managerを対象としています。クライアント案件サイトのAPIレスポンスが以前と変化していないことを最低限確認するためのテストです。
- Postmanのアプリケーションを利用して、ローカル環境から手動でテストを実行します。
- 静的アクセストークンのAPI (GETメソッド) のみを対象としています。
- Postmanはテスト用のコレクションファイルや実行ログを日本国外(USまたはEU)に保管します。テスト実施可否を事前にクライアントへ確認し、必ず許可を得てください。
- 機密情報や個人情報を含むサイトは絶対に対象としないでください。必要な場合は、それらを全てダミーデータに置き換えたテスト用の環境を別途用意してください。
テスト実施のフロー
以下の流れで、正式版反映直前のRC版に対してテストを実行し、APIレスポンスに変化がないかを事前に確認します。
- 正式版環境のAPIが返すレスポンスデータをすべて取得・保存する
- RC版にバージョンを切り替える
- 各APIに対してリクエストし、1の時点で保存していたAPIレスポンスと比較する
事前準備
まずは以下のURLからPostmanに登録します。
登録ができたらPostmanでワークスペースの作成します。
[ワークスペースの作成]をクリックします。
[空のワークスペース]を選択し、次へ進みます。
プロジェクト名を入力し、Internal (非公開) が選択された状態で、ワークスペースを新規作成します。
以降は、以下のURLからPostmanのアプリケーションをダウンロードしてデスクトップ版のPostmanを使用します。
ブラウザ版で進めることもできますが、その場合はCORSポリシーに従う必要があるため、Kuroco側のCORS設定に以下の追加が必要です。
CORS_ALLOW_ORIGINS
にhttps://プロジェクト名.postman.co
を追加CORS_ALLOW_HEADERS
に以下を追加- X-RCMS-API-ACCESS-TOKEN
- User-Agent
- Cache-Control
- Postman-Token
テスト作成方法
KurocoのAPIをOpenAPI形式でエクスポート
Kurocoの管理画面でテスト実行対象APIのエンドポイント一覧画面を開き、[OpenAPIエクスポートする] を選択します。
出力形式に [JSON] を選択し、openapi.json
(APIの定義ファイル) をダウンロードします。
Postmanコレクションファイルの作成
エクスポートしたAPIの定義を利用して、Postmanのコレクションファイル(実行するテストをまとめたファイル)を作成します。
API定義からPostmanコレクションファイルを作成するためのスクリプトを準備していますので、
Node.jsスクリプトを実行できる環境で、openapi-to-postmanv2@^5.0.0
のをインストールし、以下のスクリプトを実行してください。
https://gist.github.com/sakaguchi-diverta/2fbedcc430366126fea46d0f5a127a23
スクリプトの内容や配置先は今後変更する可能性があります。
スクリプト実行の詳細説明は省略します。
AIエージェントに作業や解説を依頼しても構いません。
弊社ではDevinに実行を依頼することでPostmanコレクションファイルを生成しました。
実行が完了すると、Postmanのコレクションファイルpostman_collection.json
が出力されます。
Postmanコレクションのインポートと調整
Postmanのワークスペースに戻り、[インポート]を選択し、先ほど出力したpostman_collection.json
をアップロードします。
インポートが完了すると、以下のように「サンプル保存」と「テスト」に分かれたフォルダ内に、各エンドポイントへのリクエスト情報が保存されます。
「サンプル保存」のフォルダで正式版のレスポンスを取得・保存し、「テスト」のフォルダでRC版のレスポンスを取得して正式版のレスポンスと比較しますので、 テスト実行対象から除外したいエンドポイントがある場合は、「テスト」フォルダから削除します。
詳細取得用のエンドポイント (details) の場合、ID/Slugの指定箇所が変数になっています。 以下のようにパス変数の箇所をテスト実行対象のIDに置き換えて、保存し直します。(サンプル保存のフォルダ、テストのフォルダの両方)
テスト実行時に比較対象から無視したい項目がある場合は、テストファイルのエンドポイントを選択し、[スクリプト]タブの ignore_keysに対象の項目名 (APIレスポンスのキー) を追記し、保存ます。
例:
const ignore_keys = [
"update_ymdhi",
"ymd"
];
アクセストークンの保存
最後にAPIのアクセストークンを保存します。保存先としてPostman Vault(機密情報をローカル環境で管理するための領域)を利用します。
Postmanのフッターメニューから [Vault]を選択し、APIの静的アクセストークンをRCMS_API_STATIC_TOKEN
として保存します。
X-RCMS-API-ACCESS-TOKEN
ではないのでご注意ください。
テスト実行方法
Kuroco正式版のサンプル保存
テスト実行対象のKurocoサイトを正式版に切り替えます。
Psotmanで、[サンプル保存] のフォルダを選択し[実行] をクリックします。
続けて、オレンジ色の実行ボタンをクリックし、サンプル保存リクエストを実行します。
リクエストが実行され、200のレスポンスが返ってきていることを確認します。
実行完了後にコレクションの最上位のフォルダを選択し、[変数] タブを選択すると、先ほど取得したAPIレスポンスが変数内に保存されていることを確認できます。
KurocoRC版のサンプル保存
テスト実行対象のサイトをRC版に切り替えます。
サンプル保存時と同様に、[テスト] フォルダを選択してリクエストを実行します。
実行完了後、結果を確認します。レスポンスに変化があった場合はFAILが、変化がなかった場合はPASSが出力されます。
FAILになった項目は正式版のレスポンスと比較します。
今回の場合は画像に付く一時トークンの値が異なるためFAILになっていることが分かりました。
Postmanを利用した正式版反映前のリグレッションテストの説明は以上になります。
サポート
お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。