メインコンテンツまでスキップ

Postmanを利用した正式版反映前のリグレッションテスト

概要

正式版の反映前後でAPIレスポンスが変化していないかを確認するため、Postmanを利用してリグレッションテストを行う方法を説明します。
APIのレスポンスが変わる場合はSlackコミュニティ等でお知らせがされますが、対象のエンドポイントや使い方をしている箇所がないか確認するのにご活用ください。

前提条件

  • 主にProject Managerを対象としています。クライアント案件サイトのAPIレスポンスが以前と変化していないことを最低限確認するためのテストです。
  • Postmanのアプリケーションを利用して、ローカル環境から手動でテストを実行します。
  • 静的アクセストークンのAPI (GETメソッド) のみを対象としています。
注意
  • Postmanはテスト用のコレクションファイルや実行ログを日本国外(USまたはEU)に保管します。テスト実施可否を事前にクライアントへ確認し、必ず許可を得てください。
  • 機密情報や個人情報を含むサイトは絶対に対象としないでください。必要な場合は、それらを全てダミーデータに置き換えたテスト用の環境を別途用意してください。

テスト実施のフロー

以下の流れで、正式版反映直前のRC版に対してテストを実行し、APIレスポンスに変化がないかを事前に確認します。

  1. 正式版環境のAPIが返すレスポンスデータをすべて取得・保存する
  2. RC版にバージョンを切り替える
  3. 各APIに対してリクエストし、1の時点で保存していたAPIレスポンスと比較する

事前準備

まずは以下のURLからPostmanに登録します。

Image from Gyazo

登録ができたらPostmanでワークスペースの作成します。
[ワークスペースの作成]をクリックします。

Image from Gyazo

[空のワークスペース]を選択し、次へ進みます。

Image from Gyazo

プロジェクト名を入力し、Internal (非公開) が選択された状態で、ワークスペースを新規作成します。

Image from Gyazo

以降は、以下のURLからPostmanのアプリケーションをダウンロードしてデスクトップ版のPostmanを使用します。

ヒント

ブラウザ版で進めることもできますが、その場合はCORSポリシーに従う必要があるため、Kuroco側のCORS設定に以下の追加が必要です。

  • CORS_ALLOW_ORIGINShttps://プロジェクト名.postman.coを追加
  • CORS_ALLOW_HEADERSに以下を追加
    • X-RCMS-API-ACCESS-TOKEN
    • User-Agent
    • Cache-Control
    • Postman-Token

テスト作成方法

KurocoのAPIをOpenAPI形式でエクスポート

Kurocoの管理画面でテスト実行対象APIのエンドポイント一覧画面を開き、[OpenAPIエクスポートする] を選択します。

Image from Gyazo

出力形式に [JSON] を選択し、openapi.json (APIの定義ファイル) をダウンロードします。

Image from Gyazo

Postmanコレクションファイルの作成

エクスポートしたAPIの定義を利用して、Postmanのコレクションファイル(実行するテストをまとめたファイル)を作成します。

API定義からPostmanコレクションファイルを作成するためのスクリプトを準備していますので、 Node.jsスクリプトを実行できる環境で、openapi-to-postmanv2@^5.0.0のをインストールし、以下のスクリプトを実行してください。
https://gist.github.com/sakaguchi-diverta/2fbedcc430366126fea46d0f5a127a23

注意

スクリプトの内容や配置先は今後変更する可能性があります。

スクリプト実行の詳細説明は省略します。
AIエージェントに作業や解説を依頼しても構いません。
弊社ではDevinに実行を依頼することでPostmanコレクションファイルを生成しました。

Image from Gyazo

実行が完了すると、Postmanのコレクションファイルpostman_collection.jsonが出力されます。

Postmanコレクションのインポートと調整

Postmanのワークスペースに戻り、[インポート]を選択し、先ほど出力したpostman_collection.jsonをアップロードします。

Image from Gyazo

インポートが完了すると、以下のように「サンプル保存」と「テスト」に分かれたフォルダ内に、各エンドポイントへのリクエスト情報が保存されます。

「サンプル保存」のフォルダで正式版のレスポンスを取得・保存し、「テスト」のフォルダでRC版のレスポンスを取得して正式版のレスポンスと比較しますので、 テスト実行対象から除外したいエンドポイントがある場合は、「テスト」フォルダから削除します。

Image from Gyazo

詳細取得用のエンドポイント (details) の場合、ID/Slugの指定箇所が変数になっています。 以下のようにパス変数の箇所をテスト実行対象のIDに置き換えて、保存し直します。(サンプル保存のフォルダ、テストのフォルダの両方)

Image from Gyazo

テスト実行時に比較対象から無視したい項目がある場合は、テストファイルのエンドポイントを選択し、[スクリプト]タブの ignore_keysに対象の項目名 (APIレスポンスのキー) を追記し、保存ます。

例:

const ignore_keys = [
"update_ymdhi",
"ymd"
];

Image from Gyazo

アクセストークンの保存

最後にAPIのアクセストークンを保存します。保存先としてPostman Vault(機密情報をローカル環境で管理するための領域)を利用します。

Postmanのフッターメニューから [Vault]を選択し、APIの静的アクセストークンをRCMS_API_STATIC_TOKENとして保存します。

注記

X-RCMS-API-ACCESS-TOKENではないのでご注意ください。

Image from Gyazo

テスト実行方法

Kuroco正式版のサンプル保存

テスト実行対象のKurocoサイトを正式版に切り替えます。

Image from Gyazo

Psotmanで、[サンプル保存] のフォルダを選択し[実行] をクリックします。

Image from Gyazo

続けて、オレンジ色の実行ボタンをクリックし、サンプル保存リクエストを実行します。

Image from Gyazo

リクエストが実行され、200のレスポンスが返ってきていることを確認します。

Image from Gyazo

実行完了後にコレクションの最上位のフォルダを選択し、[変数] タブを選択すると、先ほど取得したAPIレスポンスが変数内に保存されていることを確認できます。

Image from Gyazo

KurocoRC版のサンプル保存

テスト実行対象のサイトをRC版に切り替えます。

Image from Gyazo

サンプル保存時と同様に、[テスト] フォルダを選択してリクエストを実行します。

Image from Gyazo

実行完了後、結果を確認します。レスポンスに変化があった場合はFAILが、変化がなかった場合はPASSが出力されます。

Image from Gyazo

FAILになった項目は正式版のレスポンスと比較します。
今回の場合は画像に付く一時トークンの値が異なるためFAILになっていることが分かりました。

Image from Gyazo

Postmanを利用した正式版反映前のリグレッションテストの説明は以上になります。


サポート

お探しのページは見つかりましたか?解決しない場合は、問い合わせフォームからお問い合わせいただくか、Slackコミュニティにご参加ください。