S.Kudoをフォローする

PostmanでAPIテスト

開発環境・ツール

弊社で作成するシステムは基本的にはMVCモデルのRepositoryパターンに則って行っています。データソースへのアクセスが抽象化されるため改修と既読性は良くなります。
ざっくり図化すると下記のようなイメージです。

MVCモデルで行う際、作成したAPIのテストは重要なものです(なお、弊社ではAPIはRESTアーキテクチャスタイルの制約に則った作成を心がけています)
フロントエンドの不具合なのか、バックエンドの不具合なのかの切り分けを行うためです。
また、最近では人も増えてきてフロントエンド、バックエンドに分かれての開発も多くなってきました。
分散開発も増えてきそうなのでAPI周りの標準化やテスト方法の整備が急がれます。
そこで、APIのテストではPostmanを利用し(始め)ています。

Postman概要

PostmanはWebAPI開発用のツールです。API 開発のためのコラボレーションプラットフォームと謳っています。
Requestの内容やTokenを設定し、APIに送ることでResponseが返ってきます。
なお、当方はクライアントツールをダウンロードして使っていますが、Webでも利用可能なようです。

Postman API Platform

Postmanには下記の機能があります。

API ClientREST、SOAP、および GraphQLのRequestを直接迅速かつ簡単にテストできます。
Automated Testing自動テスト機能を提供します。
Design & MockMock Server機能を提供し、エンドポイントとその応答をシミュレートし、API の予想される動作を伝えます。
DocumentationPostmanのAPI定義から自動的にAPIドキュメントを生成します。
Monitors定期的パフォーマンスと応答をにチェックし、APIのアップデートや変更のモニタリング機能を提供します。
Workspacesチーム間でAPIを共同開発機能を提供します。

Postmanインストール方法

ダウンロードページ(https://www.postman.com/downloads/)からダウンロードします。

インストール後起動するとアカウントの作成やGoogleアカウントでのサインインを迫られますが、下の赤枠の「Skip and go to the app」をクリックすることでサインインしないで利用することができます(2021/3時点)。なお、後述しますがサインインしないとWorkspase機能等が利用できなくなりますが、Request情報をエクスポートすることでチーム間で共有することは可能です。

Postman利用方法の例

ここではAPI Clientについて簡単に説明します。
Methodもそれぞれ設定することができ、認証後有効なAPIの場合はTokenを設定してResponseを確認することが可能です。
RequestパラメータもFormやJSON等指定して送ることが可能です。

もう一つ、テストを行うにあたり、Responseの値を予め設定しておくことでテストを行うことも可能です。
今回はGitHubにAPIがあったので、それを使って確認する手順をご紹介します。
下図はRailsのRepositoryのissueを取得するAPIです。

Requestで「Tests」を選択します。
Test Script入力の右側にいくつかサンプルがあり、クリックすることでTest Scriptに自動で入力されます。下図では「Status Code is 200」をクリックしています。
詳細は公式のTest script examples(https://learning.postman.com/docs/writing-scripts/script-references/test-examples/)を参照してください。
Postman側で用意されているJavaScriptAPIを使い、pmオブジェクトを操作することで様々なことが可能です。
取得したResponseを次のAPIのRequestパラメータに指定してシナリオテスト的なことも可能なようです。
テストされた結果はResponseの「Test Results」に表示されます。成功なら「PASS」、失敗なら「FAIL」です。

また、作成したRequestはExport、Importが可能です。
Collectionを選択してExportするとJSONファイルが作成されます。

ImportするにはScratch Padの右上にあるImportから行います。
これによって、チーム間でAPIテストの共有が可能です。
また、Responseはファイルに保存することが出来ます。APIテストのエビデンスとしても残せます。

まとめ

今回はPostmanを使ってAPIのテストを行う方法をご紹介しました。
弊社の開発はそれほど大規模ではないので、個々でAPIテストを行う程度にしかまだ活用は出来ていません。
しかし、今後のことを考えると自動テストは行えるように整備しておきたい!
ゆくゆくはRepository側はLaravelのUnitTestで、API側はPostmanを使ってとかやっていきたいと思っていますが、中々時間が取れない。
誰かこの辺やりたい!って方が入って来ないかなあ、とか。