アプリケーションプログラミングインターフェイス (API) とは、アプリケーションやサービスを相互連携、接続させ、さまざまなハードウェアやソフトウェアのシステム間でのデータやロジックの転送をしやすくするインターフェイスとして機能するソフトウェアを指します。
例えば、モバイルバンキングアプリでは、API を使って携帯電話のカメラにアクセスし、小切手の写真を撮影してリモートで口座に入金することができます。
日々パソコンやスマートフォン、テレビなどで活用されているシームレスなデジタルインタラクションは、こうした API がなければ実現できません。
この記事では、API テストとは何か?その基本とAPI テストを行うべき理由、テストの開始方法、自動テストと手動テストの違い、ベストプラクティスをご紹介します。
API テストとは?
API テストとは、対象の API が機能、性能、負荷、信頼性やセキュリティなどの点で期待水準を満たすかどうかを確認するテストのことですテストで不具合や予期せぬ動作を事前に発見しておくことで、ユーザーの元に不良品や安全性に欠ける製品がわたるリスクを減らせ、確実に採用されるよう、効率的かつ効果的に動作する API をリリースできるようになります。
ただ、API テストを実際に行うのはそう簡単ではありません。API には、異なるプラットフォーム、アプリケーションやシステム間での相互通信を可能にするため、普段はあまり馴染みのないプロトコルや規格が使用されています。したがって、テストでは API の機能だけでなく、パフォーマンス、 負荷、セキュリティや信頼性の高いインターフェイス実現のため、すべてのコンポーネントがどう連携するかを検証する必要があります。
API テストをすべき理由
API は、私たちが日々仕事をしたり、重要な情報を見つけたりするのに役立っています。Akamai の「State of the Internet」レポートによれば、API コールはウェブ上のトラフィックの 83% を占めています。API はユーザーの日常生活に欠かせない重要な要素です。そのテストは、以下のような理由から最優先事項のひとつとして取り組むべきです。
- 言語に依存しない : API は XML や JSON などのフォーマットでデータをやり取りするため、特定の言語に依存せず、どんな言語でもテストを自動化することができます。
- GUI に依存しない : API はユーザーインターフェイスなしでテストでき、アプリケーションのコア機能のチェックおよびエラーや不具合の発見に役立ちます。
- テストカバレッジの向上 : API にはカバレッジがより広い自動化スクリプトを作成する機能があります。
- テストのコスト削減 : API をテストすることで、GUI 内でのテストの前にコア機能の小さな不具合を見つけることができます。こうした小さな不具合が GUI テスト中に大きな問題となることもあるため、API テスト中に見つけて修正できれば、時間とコストを節約できます。
- 製品リリースの迅速化 : API テストは完全な UI 回帰テストの実行にかかる時間の数分の一の時間で完了できるため、エラーの発見と修正をより早く効率的に行え、新しいビルドのリリースまでの所要時間を短縮できます。
- API の適切な動作を判断 : テストを通じて API が想定通りに動作することを確認できます。
- API が負荷を処理できることを確認 : API が処理可能と想定されるトラフィック量でテストを行うことで複数のユーザーによるリクエストの同時送信をシミュレーションし、アプリケーションの堅牢性を確認することができます。
- 互換性のテスト : API がすべてのデバイス、ブラウザや OS で動作することを確認する必要があります。
- ユーザーエラーの予測 : テストを行うことで、ユーザーに問題が発生しそうな箇所を見つけ、ユーザーのエラーを予測し、設計の改善に役立てることができます。
API の開発についての詳細は「API の構築方法」が参考になります。
API テストの方法
技術関連のプロジェクトはみなそうですが、API テストも計画なしには始められません。計画の立案過程で目標とそれを達成するための方法を決めておくことが重要です。API テストのプロセスを開始する際には以下の点を参考にしましょう。
- 要件を理解する : 以下の質問への回答をまとめる形で API の要件を文書化します。
- API の目的は何か?
- ターゲットとなるオーディエンスは誰か?
- テストの対象となる問題はどんなものか?
- 目指すアウトプットは?
- API の特徴や機能はどのようなものか?
- アプリケーションワークフローはどのようなものか?
- API がサポートする統合の種類は?