異なるサービスやシステム同士が連携するうえで「API(Application Programming Interface)」は欠かせないものです。
そのAPIが期待どおりに動作するかを検証するのが「APIテスト」です。
本稿ではAPIテストについて、やり方や確認すべき観点、ポイントといった基本事項をまとめてお伝えします。これからAPIテストに携わる方はもちろん、ソフトウェアテストを学習中の方も、ぜひ参考にしてください。
- もくじ
1. APIテストとは
APIテストとは、ソフトウェア同士の連携を担うAPIの動作を検証するテスト手法です。
そもそもAPIは、自らのサービスやシステムが持つ機能やデータを外部に公開し、別のサービスやシステムから利用可能にする窓口です。外部からAPIに送られたリクエスト(要求)に応じて機能を実行したり、データをレスポンス(応答)として返したりします。
たとえば、主要なSNSが提供するシェア機能は、APIを介して外部から投稿内容やURLを受け取り、それに応じて投稿を行います。こうしたAPIの振る舞いが期待どおりに行われるかどうか、実際にリクエストを送って挙動を検証するのがAPIテストです。
サービスやシステムが連携機能を提供するうえで、APIの存在は欠かせません。APIテストは、APIの品質を保証し、利便性と信頼性を両立するための必須作業といえます。
2. APIテストの観点
APIテストを適切に実施するためには、さまざまな観点からの検証が必要です。ここでは、APIテストの主な観点を機能面・非機能面に分けて簡単に紹介します。
2-1. 機能面の観点
APIが仕様どおりに正しく動作するかを確認するための基本的な観点です。具体的には、次の4つが代表的な観点として挙げられます。
観点 | 説明 |
---|---|
リクエスト・レスポンスの整合性 | リクエストに対して、返されるレスポンスの形式や内容がかみ合っているかを検証します。データの型、構造、値などがAPI仕様と一致していることが必須条件です。 |
パラメータの境界値 | リクエストに上限値や下限値などの境界値を含めて送信し、仕様どおりに処理されるかを検証します。 |
エラー処理 | 不正なリクエストやシステム異常時に、適切なステータスコードやエラーメッセージが返るかを検証します。 |
状態遷移 | 一連のリクエストによって、データやシステムの状態が仕様どおりに変化するかを検証します。たとえば、注文APIに対して注文リクエストを送信した際、注文データが正しく登録され、在庫数が適切に減少し、注文ステータスが「受付済み」に更新されるか、などを確認します。 |
2-2. 非機能面の観点
APIの品質を担保するためには、機能面だけでなく非機能面の観点も検証が欠かせません。明示的なAPIの機能ではありませんが、APIの品質を左右する重要な観点です。特に、次の2つはAPIテストにおいて重要な観点といえます。
観点 | 説明 |
---|---|
パフォーマンス | APIの応答速度や同時アクセス時の処理能力などを検証します。たとえば、大量のリクエストが集中した際にもレスポンスの著しい遅延やシステム障害が発生しないか、などが主な評価項目です。 |
セキュリティ | システム乗っ取りや情報漏えいといったセキュリティリスクに対処できるかを検証します。認証・認可の正当性や入力値の検証、不正アクセス防止、データの暗号化などが主な評価項目です。 |
3. APIテストの大まかなやり方【4ステップ】
APIテストを成功させるためには、正しい手順に沿って進めていくことが大切です。ここでは、APIテストを効率的に進めるための大まかな4つのステップを紹介します。
- テスト対象APIの仕様を把握する
- テストケースを設計する
- テストを実行する
- テスト結果を分析する
3-1. テスト対象APIの仕様を把握する
まずは、テスト対象となるAPIの仕様を把握しましょう。APIテストは、API仕様書の記載内容に沿って進めていくことが基本です。そのためAPI仕様書を参照し、どのような仕様になっているかを把握する必要があります。
特に次の項目は、APIテストの前提となる基本情報として確認が必須です。仕様書から漏れなく読み取っておきましょう。
項目 | 説明 |
---|---|
エンドポイント | APIが提供するURLのパス。アクセスする機能やデータを特定するために不可欠。 |
リクエストメソッド | 使用されるリクエストの種類。GET(取得)、POST(新規作成)、PUT(更新)、DELETE(削除)など、操作の種類を表す。 |
パスパラメータ | URLのパスに埋め込まれる変数データ。機能やデータの特定に使われる。たとえば、特定ユーザーIDのデータにアクセスする場合、/users/{userId}のような指定が可能。 |
クエリパラメータ | URLの末尾に、「?」に続けて付加されるパラメータ。データの検索や並べ替え、フィルタリングなどに使われる。たとえば、/products?category=bookのような指定が可能。 |
ヘッダー情報 | リクエストやレスポンスに関する追加情報。認証用のトークンやコンテンツタイプ(データ形式)など。 |
リクエストボディ | POSTやPUTなどのリクエストで、サーバーに送信するデータ本体。JSONやXMLなどの形式で記述されることが一般的。 |
レスポンスボディ | レスポンスとして返されるデータ本体。データ構造やフィールド名、値の型などを確認する。 |
ステータスコード | リクエストの処理結果を表す3桁のコード。成功(200系)、クライアントエラー(400系)、サーバーエラー(500系)などがある。 |
認証・認可 | APIへのアクセスを制限・保護するための仕組み。APIキーの利用方法や認証方式などを確認する。 |
3-2. テストケースを設計する
次に、APIの仕様を踏まえて具体的なテストケースを設計します。APIテストにおけるテストケースには、次の情報が必要です。
リクエストメソッドやパラメータ、ステータスコードなど、ステップ1で確認した各仕様項目をテストケースに落とし込みましょう。
項目 | 説明 |
---|---|
テストの観点 | どの機能や品質を検証するか(例:認証の動作確認、異常系レスポンスの検証など) |
前提条件 | テスト実行前に整えておくべき条件(例:特定のユーザーが事前に登録されていること) |
テスト手順 | リクエストの送信からレスポンス確認までの具体的な流れ |
入力(リクエスト) | リクエストにおけるリクエストメソッド、エンドポイント、パラメータ、ヘッダー、ボディなどを設定 |
期待値(レスポンスやシステムの動作) | 期待されるレスポンスのステータスコードやヘッダー、ボディ、および期待されるシステムの動作(登録処理など)を設定 |
例として、次のようなテストケースが考えられます。
- 正常なIDを指定してリクエストを送信し、対応するデータが「200 OK」で返されることを確認
- 存在しないIDを指定してリクエストを送信し、「404 Not Found」が返されることを確認
- 送信元と受信先で、同じ形式(フォーマット)のデータが正しく送受信できていることを確認
- 本番環境(またはそれに近いテスト環境)で、送信側のシステムからリクエストを送信し、必要なデータが正しく受信できることを確認
実際には正常パターンだけでなく、境界値やエラー処理など、さまざまなパターンのテストケースを盛り込みましょう。
3-3. テストを実行する
続いて、設計したテストケースに従い、テストを実行しましょう。APIに対してリクエストを送信し、その際のレスポンスやシステムの動作が期待値と一致するかを確認するのが基本的な流れです。
なお、APIにリクエストを送る際、Windowsの「コマンドプロンプト」、MacやLinuxの「ターミナル」などからコマンドを送る方法もあります。
しかし、操作が煩雑になりやすいため、後ほど紹介する「Postman」などのAPIテストツールを活用するのが有効です。
3-4. テスト結果を分析する
テストケースをひと通り実行した後は、テスト結果を分析しましょう。
エラーや想定外の挙動が見つかった場合は事実確認や原因分析を行い、必要に応じて本格的な調査を行います。そのうえで、仕様との不整合や不具合の有無を判断しましょう。
不具合が判明した際には開発担当者へ速やかに報告し、修正内容を反映したうえで再テストを実施します。すべてのテストケースが期待どおりの結果となれば、APIの品質は一定の水準を満たしていると判断できます。
4. APIテストを成功させるポイント
APIテストを成功させるためのポイントは、次の3つです。
4-1. 適切なテスト環境を構築する
APIテストは、適切に構築されたテスト環境で行うことが大前提です。
誤った設定や本番環境と異なる条件で実行した場合、正確な結果が得られず、テスト自体が無意味になりかねません。意味のあるAPIテストを行うために、テスト環境は可能な限り本番環境に近い構成で用意することが大切です。
4-2. テストカバレッジを可視化・管理する
APIテストの品質を担保するためには、テストカバレッジ(テストの網羅性)を可視化・管理できる仕組みが必要です。
管理が不十分な場合、どこまでテストを実施できているかを把握しづらいため、テストケースの実行漏れや重複実行が発生しやすくなります。
テストカバレッジを可視化・管理するためには、専用のテスト管理ツールを活用するのが効果的です。たとえば、弊社のテスト管理ツール「QualityTracker」を活用すると、テスト実行時の進捗やテストケースの内容をWeb上で一元管理できます。APIテストの状況を可視化・管理し、テスト品質を向上させたい方は、ぜひご活用ください。
4-3. 適切なテストツールを選定・活用する
前述のとおり、APIテストの実行には専用のAPIテストツールを活用するのが効果的です。
ブラウザから視覚的に送信するリクエストの内容を設定し、手軽に送信できます。コマンドを使うよりもシンプルで作業しやすく、人的ミスも抑制することができます。
おすすめのAPIテストツールは、次の2つです。いずれのツールもAPIテストだけでなく、API設計やAPIドキュメント作成といった幅広い工程をサポートしています。
まとめ
APIテストとは、ソフトウェア同士の連携を担うAPIの動作を検証するテスト手法です。
APIテストを成功させるためには、仕様の正確な把握からテストケース設計、実行、結果分析まで、正しい手順で進めることが大切です。また、適切なテスト環境やテストツール、テスト管理の体制を整えることで、品質と効率の両立が可能となります。
これからAPIテストを実施する方は、今回の内容をぜひ参考にしてください。