DevOpsのためのテスト自動化プラットフォーム「mabl」入門 第4回
APIのテストもブラウザからの操作で簡単に自動化できる、その手順
mablで簡単に実現するローコードなAPIテスト自動化
2023年07月18日 09時00分更新
皆さま、こんにちは。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が用意されており、実際にリクエストを送信してレスポンスを受信できます。
●ステップ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」としました)。
最後に「保存」ボタンを押してアプリケーション作成を完了します。
●ステップ2:新規APIテスト画面の初期設定
次に「テスト作成」を選択して、ポップアップされた一覧から「APIテスト」をクリックし、基本設定の入力画面に遷移します。なお今回は触れませんが、mablではAPIパフォーマンス(ロード)テスト機能も提供しています(現在は早期アクセスリリース)。
APIテストの設定画面では、任意の「テスト名」を入力(筆者は「Try API Test」としました)したうえで、プランの選択肢から「プランなし」を選択、次に「アプリケーション」のドロップダウンリストから、先ほど作成したテスト対象のアプリケーション名(筆者の場合「Reqres.in」)を選択します。
最後に「作成」ボタンを押下すると、今設定したAPIテストのエディタが別ウインドウで出現します。
●ステップ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」を選択します。
以上の設定だけでもAPIテストは実行可能ですが、前回のE2Eテストと同様に、返ってきた値をアサートする(期待どおりの値かどうかチェックする)ところまであわせて試してみましょう。
「Add」ボタンをクリックして項目を追加し、Target(チェック対象)で「JSON Body」を選択して、JSONデータの「data[0].email」の値に「reqres.in」が含まれている(Contains)こともアサートするよう設定します。
最後に「Save」ボタンをクリックして設定内容を保存します。
●ステップ4:実行結果の確認
設定したAPIテストは「Send」ボタンをクリックすれば実行できます。「Results(結果)」の表示で、テストの実行結果(レスポンスの内容)を確認できます。「4.mabl APIテストの実行方法」で確認したものと同一のJSONデータ、レスポンスコードが表示されるはずです。
●ステップ4.5:実行結果の確認(ローカル実行/クラウド実行)
ここまでで作成し、保存したテストは、前回紹介したE2Eテストと同じようにmablのデスクトップアプリから実行できるようになっています。「ローカル実行」と「クラウド実行」が選べますので、それぞれ試してみましょう。
以上が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に参加することもお勧めです。最新情報や活用方法をキャッチアップしましょう。
この連載の記事
-
第6回
TECH
DevOpsツールと連携してもっと便利に! 最適なテスト自動化環境を構築する -
第5回
TECH
アクセシビリティテストをどう自動化する? ~アサート活用で簡単に!~ -
第3回
TECH
mablで手軽に始めるローコードなE2Eテスト自動化 -
第2回
TECH
mabl 101 ~これから始めるローコードテスト自動化!~ -
第1回
TECH
DevOps時代に欠かせない「テストの自動化」とは? - この連載の一覧へ