このページの本文へ

DevOpsのためのテスト自動化プラットフォーム「mabl」入門 第4回

APIのテストもブラウザからの操作で簡単に自動化できる、その手順

mablで簡単に実現するローコードなAPIテスト自動化

2023年07月18日 09時00分更新

文● odasho(おだしょー)/mabl 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷
mablで簡単に実現するローコードなAPIテスト自動化

 皆さま、こんにちは。mabl(めいぶる)のodasho(おだしょー)です! 前回はmablの主要サービスの1つであるE2Eテストの自動化について、具体的な手順と共に学びました。4回目となる本記事では「mablで簡単に実現するローコードなAPIテスト自動化」と題して、mablが提供するもう1つの主要サービスであるAPIテストを自動化する方法について解説します。

 なお、mablでは2週間の無料トライアルを提供しているので、前々回の記事を参考にお手元でテスト環境を準備し、テスト環境を実際に操作しながら本記事をご覧いただくと、よりご理解いただけると思います。

1.そもそもAPIとは?

 API(Application Programming Interface)とは、コンピュータプログラムやオンラインサービスが他のプログラムやサービスと「会話」するための方法を定義したものです。これにより、ソフトウェア間の情報交換が可能になります。

 わかりやすいように具体的な例を挙げましょう。たとえば、天気予報のアプリを開いたとします。そのアプリは現在地の最新の天気予報を表示しますが、アプリ自体が天気を予測しているわけではありません。アプリが天気予報サービスのAPIにデータ送信のリクエストを送り、APIからのレスポンスである天気予報のデータを受け取って、画面に天気予報を表示しているのです。つまりAPIは、アプリと天気予報サービスとの間で情報をやり取りするための「通信路」の役割を果たします。

 このように、APIはソフトウェアの世界を連携させ、さまざまなサービスや機能を可能にする存在と言えます。

2.「APIをテストする」とは?

 それではこのAPIをテストするとは、どういうことなのでしょうか。それを理解するために、もう一度、天気予報アプリの例で考えてみましょう。

 アプリは、天気予報のデータを得るために特定のAPIにリクエストを送ります。そして、そのAPIから正しいデータ(たとえば今日の天気、気温、湿度など)を返してもらうことを期待しています。ここで、アプリがAPIに「今日の天気を教えて」とリクエストを送ったにもかかわらず、APIが何も返さない、あるいは明日の天気予報を返すなどの想定外の動きをしたら、APIが正しく動作していないことになります。

 そこで登場するのがAPIテストです。このテストを行うことで、APIがリクエストに対して適切なレスポンスを返すか、また想定外の状況(たとえばリクエスト内容の誤りなど)にも適切に対応できるかを確認することができます。APIテストでは通常、APIのリクエストとレスポンスのフォーマット、パフォーマンス、セキュリティ、エラーハンドリングなどがチェックされます。

 クラウドサービスのAPIでは、何百、何千ものリクエストに対して、常に的確なレスポンスを返すことが求められます。したがって、開発環境におけるAPIテストは極めて重要です。APIテストは手動で行うことも可能ですが、自動化ツールを使用することで時間と労力を節約し、より高い一貫性と精度を担保できます。

3.mablが提供するAPIテスト自動化とは?

 mablは、人間が手動でAPIテストを行う代わりに、コンピュータが自動的にテストを行うように設計されたツールです。

 たとえば、お店のWebサイトを運営していて、お客様が商品をカートに追加するというAPIを持っているとします。mablを使うことで、このAPIが正しく動いていることを確認するために手動で何度もテストを行う必要がなくなります。mablにリクエスト内容と、レスポンスの期待値を設定するだけで、mablが自動でテストを行ってくれます。加えて、テストが失敗した場合には、問題の内容と改善のためのインサイトも提供します。

 このように、mablはAPIテストの自動化を通じて、開発チームが品質の高いソフトウェアを提供することを支援します。

4.mabl APIテストの実行方法

 それでは、mablでAPIテストを行う具体的な手順を説明していきましょう。

 今回のテストでは、テスト用APIを無料で提供しているReqresを使います。Reqresでは、たとえばユーザーのリストを取得する、新しいユーザーを作成するといった、一般的なAPIを模倣した複数のAPIが用意されており、実際にリクエストを送信してレスポンスを受信できます。

mablで簡単に実現するローコードなAPIテスト自動化

Reqresはテスト用APIを提供するサービス。左のリストからどのリクエストを送信するかを選択すると、リクエストの内容(上)やレスポンスコード(右上)、レスポンスのJSONデータ(右)が確認できる(出典:https://reqres.in/

mablで簡単に実現するローコードなAPIテスト自動化

一般的なブラウザで「https://reqres.in/api/users?page=2」を入力してAPIにリクエストを送った際のレスポンス。未整形のJSONで可読性が低いが、データの内容はサイト上と同じ

●ステップ1:アプリケーションの設定

 まずはmablにログインして「テスト環境設定」を選択します。「アプリケーション」タブが選択されていることを確認したうえで、「新規アプリケーション」ボタンを押します。

 次の画面では、テスト対象とするAPIを設定します。「Application name」には、わかりやすいアプリケーション名(API名、筆者は「Reqres.in」としました)を入力します。「WebアプリケーションのURL」では、プロトコルを「https://」、ベースURLを「reqres.in」と入力します。

 APIテストの場合は、次の「API URL」にテスト対象とするAPIの情報を入力します。今回はプロトコルを「https://」、ベースURLは「reqres.in/api」としてください。ちなみにこうしたAPIのURLは「APIエンドポイント」とも呼ばれます。

 API URL入力時の注意事項ですが、ベースURLの末尾に「/」を入れないようにしましょう。これは、APIテストエディター(後述)でリクエストを扱う際に可読性を向上させるためです。

 「環境名」はこの画面で新たに設定できます。未作成の場合は「QA環境」や「ステージング環境」といった名前で作成してください(筆者は「Sandbox」としました)。

 最後に「保存」ボタンを押してアプリケーション作成を完了します。

mablで簡単に実現するローコードなAPIテスト自動化

新規アプリケーションの設定画面。なお、まれにこの画面のようなエラーが表示されますが問題ありません

●ステップ2:新規APIテスト画面の初期設定

 次に「テスト作成」を選択して、ポップアップされた一覧から「APIテスト」をクリックし、基本設定の入力画面に遷移します。なお今回は触れませんが、mablではAPIパフォーマンス(ロード)テスト機能も提供しています(現在は早期アクセスリリース)。

mablで簡単に実現するローコードなAPIテスト自動化

新規テスト作成で「APIテスト」をクリックする

 APIテストの設定画面では、任意の「テスト名」を入力(筆者は「Try API Test」としました)したうえで、プランの選択肢から「プランなし」を選択、次に「アプリケーション」のドロップダウンリストから、先ほど作成したテスト対象のアプリケーション名(筆者の場合「Reqres.in」)を選択します。

mablで簡単に実現するローコードなAPIテスト自動化

APIテストの設定画面。「プランなし」を選択し、先ほど作成したアプリケーション名を選択

 最後に「作成」ボタンを押下すると、今設定したAPIテストのエディタが別ウインドウで出現します。

mablで簡単に実現するローコードなAPIテスト自動化

APIテスト作成の初期画面。Postmanのインポート/エクスポートにも対応。ブランチを切ることも可能

●ステップ3:APIテストの実行設定

 APIテストのエディタ画面で紫色の「+」ボタンをクリックすると、APIに送信するリクエストの詳細設定項目が右側に表示されます。

 まず「Request name」には任意のリクエスト名を設定します(今回はユーザーの一覧データを取得するリクエストを送信するので「UserData」としました)。

 リクエストのHTTPメソッドやURLは、API側の仕様に合わせて設定します。今回はreqres.inの情報に沿って、「Method」は「GET」を選択し、「URL」には「{{@api.url}}/users?page=2」と入力します。なお「{{@api.url}}」の部分は、先に設定したAPIのベースURL(https://reqres.in/api)に置き換えられて実行されます。

 APIアクセスにユーザー認証が必要な場合は、下の「AUTH」タブで設定します。今回のAPIは認証不要ですので、「Authentication」のドロップダウンリストから「No Auth」を選択します。

mablで簡単に実現するローコードなAPIテスト自動化

APIリクエストの詳細設定

 以上の設定だけでもAPIテストは実行可能ですが、前回のE2Eテストと同様に、返ってきた値をアサートする(期待どおりの値かどうかチェックする)ところまであわせて試してみましょう。

 「Add」ボタンをクリックして項目を追加し、Target(チェック対象)で「JSON Body」を選択して、JSONデータの「data[0].email」の値に「reqres.in」が含まれている(Contains)こともアサートするよう設定します。

mablで簡単に実現するローコードなAPIテスト自動化

「Assertions(アサーション)」の設定で、デフォルトで設定されている「HTTPステータス(Status)=200」に加えて、レスポンスであるJSONデータの「email」に「reqres.in」が含まれていることのチェックも追加

 最後に「Save」ボタンをクリックして設定内容を保存します。

●ステップ4:実行結果の確認

 設定したAPIテストは「Send」ボタンをクリックすれば実行できます。「Results(結果)」の表示で、テストの実行結果(レスポンスの内容)を確認できます。「4.mabl APIテストの実行方法」で確認したものと同一のJSONデータ、レスポンスコードが表示されるはずです。

mablで簡単に実現するローコードなAPIテスト自動化

テスト実行後の結果表示

mablで簡単に実現するローコードなAPIテスト自動化

「Assertions」タブでアサーション結果も確認。すべて問題なくパスしている

●ステップ4.5:実行結果の確認(ローカル実行/クラウド実行)

 ここまでで作成し、保存したテストは、前回紹介したE2Eテストと同じようにmablのデスクトップアプリから実行できるようになっています。「ローカル実行」と「クラウド実行」が選べますので、それぞれ試してみましょう。

mablで簡単に実現するローコードなAPIテスト自動化
mablで簡単に実現するローコードなAPIテスト自動化

ローカル実行を選択した画面。E2Eテストと同じく、実行するとコンソールにはログだけが出力される

mablで簡単に実現するローコードなAPIテスト自動化
mablで簡単に実現するローコードなAPIテスト自動化

クラウド実行を選択した画面。こちらはレスポンスの詳細やアサート結果が確認できる

 以上がmablのAPIテストの実行方法です。初めての方もこちらを参考に、ぜひ一度APIテストを実行してみてください。

5.高度な機能(一部)

 mablでは、今回紹介した基本機能に加えて、高度なAPIテスト機能も数多く提供しています。以下ではその一部をご紹介します。興味がある方はぜひ日本語のヘルプドキュメントをご覧ください。またmabl Universityでも学習できます。

・APIステップ:E2Eブラウザのテスト内でAPIリクエストを送信できます。
・変数(Variables):ランダム値を生成したり、データ駆動型テストを行ったり、動的データを扱う必要のあるシナリオをテストできます。
・認証(Authentication):APIキー、Basic認証、ベアラートークン、OAuth 1.0がサポートされています。
・PARAMS:クエリパラメーターをキーと値のペアの形式で指定できます。このパラメーターはAPI URLに追加されます。
・HEADERS:リクエストヘッダーをキー名(Key)と値(Value)のペアの形式で入力できます。
・BODY:リクエストに対してデータの追加や更新を行うために使用します。サポートされる形式には、rawテキスト(テキスト、JSON、XML、HTML)、formdata、x-www-form-urlencoded、バイナリ、GraphQLがあります。リクエストタイプが formdata またはバイナリの場合は、ファイルのアップロードがサポートされています。
・PRE-REQUEST:HTTPリクエストを行う前に実行されるJavaScriptのコードです。Postmanで利用できるJavaScriptの関数やライブラリのサポートも含まれます。JavaScriptを使用すると、複雑なAPIのテストとトラブルシューティングシナリオに対処できるようになります。
・SETTINGS:HTTPリクエストに適用されるキー名(Key)と値(Value)のペアの設定です。
・フローレベルスクリプト:APIテストのすべてのリクエストに適用可能です。事前リクエストスクリプトと事後リクエストスクリプトの両方のオプションが含まれます。
・Postman インテグレーション:既存のPostmanコレクションをmabl APIテストに変換したり、 Postmanのコレクションをmabl APIテストに変換することができます。
・機密データのマスキング:誤って機密情報が公開されるのを防ぐため、機密性の高いプロパティやヘッダーの値は「*****」の記号で置き換え可能です。

 これらの高度な機能を活用することで、mablはAPIテストの自動化を更に効率的で効果的に行うことを可能にします。このテスト自動化ツールを活用して、品質保証のプロセスをよりスムーズに進めましょう。

6. まとめ

 本記事では、mablでのAPIテスト自動化の手順と、APIテストに使えるさまざまな機能について解説しました。mablにより、手軽にAPIテストを自動化し、APIステップを用いてE2Eテストとも連動させ、システムの全体的な動作を確認できます。ぜひお手元の環境でも試してみてください。次回の記事では、アクセシビリティテストの自動化について解説します。

 操作に慣れたら、ぜひ認定資格試験(mabl Skills Certification)にチャレンジしてみましょう。より深く学習するにはmablのユーザーコミュニティ(mablers_jp)や、定期開催しているmabl Webinarに参加することもお勧めです。最新情報や活用方法をキャッチアップしましょう。

■関連サイト

カテゴリートップへ

この連載の記事