API テスト

APIとは?APIテストの基本と実施方法

読み取り時間 : 約10分

トピック :

  • エンジニア

アプリケーションプログラミングインターフェイス (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 がサポートする統合の種類は?
  • テストの優先事項は?
  • テスト環境を設定する : API の要件に基づいて環境を設定し、アプリケーションの要件を満たすよう、データベースとサーバーを設定します。その後、テストの開始前に API コールを行い、設定が正しく、問題がないことを確認します。
  • API テストツールを選択する : すべてのテストを手動で行うのでなければ、テストケースの構造化と管理のための API テストツールが必要となります。
  • 実行する API テストを決める : テスト環境を整え、設定が正しいことを確認したら、API をテストする対象を決めます。

API テストの種類

テストしたい対象により、選ぶテストの種類が決まります。例えば、機能をテストしたい場合には機能テストを行うことになります。

API テストにはいくつかの種類があります。

  • 機能テスト : API の機能が計画された想定パラメータ内で動作することを確認するための特定のシナリオを通じ、コードベースのさまざまな機能をテストします。
  • 信頼性テスト : API が特定の環境下で一定の時間内に故障なく動作することを検証します。
  • 負荷テスト : 通常時とピーク時の API のパフォーマンスを監視します。
  • セキュリティテスト : 外部からの脅威に対して API が安全であることを確認するテストで、暗号化手法、API アクセス制御、ユーザー権限管理や認証の検証が含まれます。
  • UI テスト: API ではなく、API に関連するユーザーインターフェイスを対象に行うテストで、フロントエンドとバックエンドにおけるアプリの健全性とユーザビリティの概要を把握することができます。
  • ネガティブテスト : 無効な入力や意図せぬ入力があった場合にアプリがどう反応するかを確認するためのテストで、システムの障害につながる要素を見つけ出し、適切な対策を立てる上で役立ちます。例えば、数字のフィールドに文字を入力すると警告メッセージが表示されるものの、アプリが停止することはないといった内容を確認できます。
  • バリデーションテスト : API が適切に開発され、すべてが動作することを検証するために行います。

手動テストと自動テストの比較

手動のテストは非常に手のかかるプロセスで、QA 担当者がテストを1つ1つ実行します。テストケースの作成から実行までテスターがすべてのプロセスに関わり、自動化ツールを使わずに機能の検証、不具合の探求やエラーレポートの作成を行います。

手動テストには時間と手間がかかります。自動化することで、より多くのテストケースを実行し、テストカバレッジを向上させ、全般的に効率を改善することができます。

手動テストを使う理由とタイミング

手動テストでは、テストのプロセスに重点を置き、独自のテストを手動で作成して実行することで、テストのコントロールの精度を高めます。また、テストで偽陰性が発生するリスクも低いため、報告されたエラーの真偽の検証に追加作業を要する可能性が高くなります。

手動テストは以下のような種類のテストに適しています。

  • 探索的テスト
  • ユーザビリティテスト
  • UI テスト
  • アドホックテスト

手動テストは、小さな変更の確認にも適しています。自動テストの実行にはわずかな変更であっても新しいコード作成が必要となるため、手動テストの方が短時間で済むこともあります。

自動テストを使う理由とタイミング

API テストを自動化する最大のメリットは、短時間でより多くのテストを実行でき、生産性の向上とテストの効率化が図れる点です。テストサイクルが早くなれば、修正も早くでき、製品のリリースも早められます。

自動テストは以下のような種類のテストに適しています。

  • 機能テスト
  • ロードテスト
  • パフォーマンステスト
  • バリデーションテスト
  • ダイナミックテスト
  • データドリブン型のテスト
  • エラーテスト
  • 多言語テスト
  • 回帰テスト

API テストのベストプラクティス

探索的テストや UI テストは手動で行うべきですが、API テストの大半は自動化すべきものです。API テストを自動で行う場合には、以下のベストプラクティスを参考にしましょう。テストを効率化して多数のテストを短時間で実施し、コストの削減やより高品質な製品のリリースにつなげる上で役立ちます。

すべてを記録する

テストの成否は、事業面での要件とテストケースの定義の巧拙に左右されます。API の大半はフロントエンドの GUI を参照できないため、すべてのフィールドと関連するパラメータを明確に指定したドキュメントが不可欠となります。テスターはこのドキュメントを参照し、必要なユースケースがすべてカバーされていることを確認します。

また、テストが失敗した理由を詳しく記録した包括的なテストレポートを作成しておくことで、開発者が修正を要する箇所を特定しやすくなります。

DRY 原則に従う

コードの繰り返しを避けるため、DRY (Don't Repeat Yourself、反復を避ける) 原則に従うようにします。複数の API のコンポーネントやアクションに共通のコードがある場合は、そのコードが必要となるあらゆる箇所から簡単にアクセスできる共通のライブラリに入れておきます。

小さな API から始める

テストに慣れるには、ログイン API など、入力が1つか2つ程度の単純な API から始めてみましょう。小さなものから試してみることで、自信がつき、より規模の大きな API にも取り組めるテスト環境が整います。

API テスト

UML 図は API 内の情報の流れの視覚化に役立ちます。

詳細をチェック

Lucidchart

クラウドベースのインテリジェントな図作成アプリケーション、Lucidchart は、Lucid Software のビジュアルコラボレーションスイートのコアコンポーネントで、チームがリアルタイムで共同作業し、フローチャート、モックアップ、UML 図、カスタマージャーニーマップなどを作成できる直感的なクラウドベースのソリューションです。Lucidchart はチームが前進し、より迅速に将来を見据えて構築するための最高のツールとなります。Lucid は、Google、GE、NBC Universal などの顧客や、Fortune 500 企業の 99% を始めとする世界中の主要企業にサービスを提供しています。Lucid は、Google、Atlassian、Microsoft などの業界の主要企業と提携しており、創業以来、製品、事業内容と企業文化を称える各種の賞を多数受賞しています。詳細は lucidchart.com を参照してください。

Lucidchart で今すぐ作図を初めましょう。無料で使えます!

無料ではじめる

または以下の方法で続行

Google でサインインサインインMicrosoft でサインインサインインSlack でサインインサインイン

利用開始

  • 料金プラン
  • 個人向けプラン
  • チームプラン

  • 企業向けプラン
  • 営業担当に問い合わせる
プライバシー法的事項

© 2024 Lucid Software Inc.