現在、機能拡張や開発効率向上などの原因によって、アプリ開発中にAPIを導入することは非常に普通なことになっています。そこで、APIが正確に動作することは、アプリが正確に動作する大前提になります。こういう背景の下に、API単体テストを行なって、API機能を個別にテストすることで、APIの正確の動作を確保することは非常に重要なことです。本文では、API単体テストの仕組みややり方などをみなさんに詳しく解説していきたいと思います。
API単体テストとは
API単体テストとは、ユニットテストとも呼ばれ、APIの機能を個別にテストする手法です。APIを呼び出してレスポンスを検証したり、APIに特定のリクエストを送信して想定通りの動作をするか確認したりすることができます。API単体テストは、一般的にはレスポンスのステータスコードや内容を検証したり、リクエストボディやヘッダーの値が正しく設定されているか確認することになります。
API単体テストのメリット
API単体テストはAPIの品質を保証する上で重要なテストの1つとして、たくさんのメリットが得られると考えられています。
- APIの機能を独立してテストできるため、APIの動作を網羅的に確認できる
- 実装の変更に対する影響を局所的にとどめることができる
- テストが単純になり保守がしやすい
- APIの仕様変更時の影響範囲が限定される
API単体テストは、API開発時にはできるだけ実装早期から導入し、APIの仕様変更時も迅速にテストコードを修正することが大切です。
API単体テストの利用シーン
それでは、API単体テストが必要となるシーンは何ですか?次は、API単体テストを利用する典型的なケースを皆さんに紹介します。
新しいAPIの実装時
- APIの仕様に沿って動作するかを確認する
APIの変更時
- 変更した部分が意図した通り動作するかを確認する
- 想定外の副作用がないかを確認する
リファクタリング時
- プロセスを維持したままコード品質を高められるか確認する
回帰テスト
- コード変更による予期せぬ動作変化がないか確認する
CI/CDパイプラインでの実行
- 自動ビルド時に品質基準を満たしているかチェックする
開発者による自己検証
- 実装前に仮のテストコードを作成し、仕様理解と設計を支援する
このように、APIの変更点を早期にキャッチしたり、信頼性を継続的に監視するために、API単体テストは有効な手段となります。
API単体テストの仕組み
それでは、API単体テストを行いたい場合は、その仕組みはどのようになっていますか?次は、典型的なAPI単体テストの仕組みを皆さんに紹介します。
- テスト対象のAPIエンドポイントを指定する。
- テストで使うリクエストの内容(HTTPメソッド、ヘッダ、パラメータ、ボディ等)を設定する。
- テスト実行フレームワークを使って、設定したリクエストをAPIに送信する。
- APIから返ってきたレスポンスの内容(ステータスコード、ヘッダ、ボディ等)を検証する。
- 検証ロジックを記述して、レスポンスが意図した内容かをチェックする。
- 期待した値との一致/不一致により、テスト成功/失敗を判定する。
- テスト結果をログやレポートにまとめる。
APIテストツールのApidogは、リクエストの送信と結果判定を自動化し、テストコードには検証ロジックを記述するだけで済む事ができます。
ApidogでAPI単体テストを簡単に実装
API単体テストを実装して、APIの正確動作を確保するには、APIテストツールのApidogを使用するのは一番簡単です。Apidogは、GET、POSTやPUTなどの全てのHTTPメソッドにも対応しており、直感的なUIでただの1クリックだけで、APIの単体テストを行う事ができます。また、Apidogで、受信データや送信データを保存して、継続的に単体テストを行うのも簡単になりますし、自動テスト機能を使って、単体テストを繰り返したりすることも簡単に実現されるので、非常に便利です。
API単体テストの実装手順
Apidogを使って、次のような手順を参照して、簡単にAPI単体テストを行う事ができます。
ステップ⒈Apidogを開き、「新しいAPI」をクリックして、単体テストを行うAPIを新規に作成します。
ステップ⒉APIが使用するHTTPメソッドを選択した上、エンドポイントのURLを入力します。
ステップ⒊APIの仕様書に記載されているように、必要なパラメータなどの情報を記入して送信ボタンをクリックして、APIのリクエストを送信して、レスポンスを取得します。
以上の手順を参照して、APIの単体テストを簡単に行う事ができます。また、Apidogにレスポンスの「自動検証」という機能も備えています。
この機能は、返されたレスポンスが事前に定義したステータスコードとデータ構造に一致しているかどうかをを自動的に判定することもできるので、テスト面から言うと、非常に便利です。
Apidogで単体テストを反復実行
また、特に大きなプロジェクトの中、APIの信頼性検証や再現性確認などの原因で、API単体テストを繰り返す必要もあります。ここで、Apidogの自動テスト機能を使って、同じAPIの単体テストを繰り返すこともできますし、異なるAPIをテストインスタンスに追加して、テストの自動化も実現されます。
ステップ⒈左側のメニューから「自動テスト」を選択して、「テストのシナリオを新規作成」して、「ステップを追加」をクリックすると、API呼び出しをテストステップとして追加することができます。
ステップ⒉このモジュールでは、ステップ数の上限がないので、呼び出したいAPIが何個あっても、ここに追加することができます。APIの呼び出しの追加が完了した後、「実行」ボタンをクリックして、各APIを追加順に従って呼び出すことができます。
テストステップの中に、特定のAPIの単体テストを複数回繰り返す必要がある場合、それを個別に繰り返す回数を設定することも可能です。
また、APIテストの自動化をより順調に実行するために、特定のテストステップを対象にして、グループ化にされたり、条件分岐を適用したりすることもできます。