API テストのチュートリアル: API テストの自動化とは何ですか?

⚡ スマートサマリー

APIテストは、GUI操作ではなくコードベースの呼び出しを使用して、アプリケーションプログラミングインターフェースの機能性、信頼性、パフォーマンス、およびセキュリティを検証します。

  • コアフォーカス: 直接API呼び出しによってビジネスロジック層を検証します。
  • 環境設定: 設定済みのデータベースとパラメータ化されたテスト環境が必要です。
  • テスト設計: 戻り値、ステータスコード、およびリソースの変更について説明します。
  • 試験方法: 発見性、ユーザビリティ、セキュリティ、および自動テスト。
  • AI 統合: 機械学習は、テスト生成と脆弱性検出を自動化する。

APIテスト

APIテストとは何ですか?

APIテスト アプリケーション プログラミング インターフェイス (API) を検証するソフトウェア テストの種類です。API テストの目的は、プログラミング インターフェイスの機能、信頼性、パフォーマンス、およびセキュリティを確認することです。API テストでは、標準のユーザー入力 (キーボード) と出力を使用する代わりに、ソフトウェアを使用して API に呼び出しを送信し、出力を取得し、システムの応答を記録します。API テストは GUI テストとは大きく異なり、アプリケーションの外観と操作性に焦点を当てません。主にソフトウェア アーキテクチャのビジネス ロジック層に焦点を当てます。

APIテスト

背景については、 API(アプリケーションプログラミングインタフェース) は、XNUMX つの別個のソフトウェア システム間の通信とデータ交換を可能にするコンピューティング インターフェイスです。 API を実行するソフトウェア システムには、別のソフトウェア システムが実行できるいくつかの関数/サブルーチンが含まれています。 APIは、XNUMXつのソフトウェアシステム間で実行できるリクエスト、リクエストの方法、使用できるデータ形式などを定義します。

APIテスト自動化環境の構築

APIの自動化テストには、APIを介して操作可能なアプリケーションが必要です。APIをテストするには、以下の手順が必要です。

  • テストツールを使用してAPIを駆動する
  • 独自のコードを記述して API をテストする

いくつか注意すべき点があります。

  • APIテストは、GUIが利用できないため、他のテストタイプとは異なります。必要なパラメータを指定してAPIを呼び出し、テスト結果を検証する環境を自分で構築する必要があります。
  • API自動化テストのためのテスト環境を構築するのは、少々複雑に思える。
  • データベースとサーバーは、アプリケーションの要件に従って構成する必要があります。
  • インストールが完了したら、API関数を呼び出して、そのAPIが正しく動作しているかどうかを確認する必要があります。

API の出力の種類

APIの出力例は以下のとおりです。

  1. あらゆる種類のデータ
  2. ステータス (合格または不合格と言う)
  3. 別の API 関数を呼び出します。

あらゆる種類のデータ

例: 2 つの整数を加算する API 関数があります。

Long add(int a, int b)

数値は入力パラメータとして指定する必要があります。出力は 2 つの整数の合計である必要があります。この出力は、予想される結果で検証する必要があります。

add (1234, 5656)

数値が整数の上限を超えた場合は、例外処理を行う必要があります。

ステータス(合格または不合格)

以下のAPI関数を検討してください。

  1. ロック()
  2. Unlock()
  3. 削除()

出力として、True(成功の場合)またはFalse(エラーの場合)などの値を返します。より正確な テストケース いずれかのスクリプト内の関数を呼び出し、その後、データベースまたはアプリケーションのGUIの変更を確認します。

別のAPI/イベントの呼び出し

別のAPI/イベントの呼び出し

この場合、API関数の一つを呼び出し、その関数がさらに別の関数を呼び出します。例えば、最初のAPI関数はテーブル内の指定されたレコードを削除するために使用でき、この関数はさらに別の関数を呼び出してデータベースを更新します。

APIテストのテストケース

APIテストのテストケースは以下に基づいています。

  • 入力条件に基づいた戻り値: 入力を定義し、結果を認証できるため、テストは比較的簡単です。
  • 何も返しません: 戻り値がない場合はシステム上のAPIの動作を確認する
  • 他の API/イベント/割り込みをトリガーします。 API の出力が何らかのイベントや割り込みをトリガーする場合、それらのイベントおよび割り込みリスナーは tracケード
  • データ構造を更新します。 データ構造の更新はシステムに何らかの結果または影響を与えるため、それを認証する必要があります
  • 特定のリソースを変更します。 API 呼び出しによって一部のリソースが変更される場合は、それぞれのリソースにアクセスして検証する必要があります。

API テストのアプローチ

APIテストアプローチとは、ビルド完了後にQAチームがAPIテストを実施するために用いる、事前に定義された戦略または手法のことです。このテストにはソースコードは含まれません。APIテストアプローチは、機能、テスト手法、入力パラメータ、およびテストケースの実行方法をより深く理解するのに役立ちます。

API テストのアプローチ

以下の点は、APIテストのアプローチを導く上で役立ちます。

  1. API プログラムの機能を理解し、プログラムの範囲を明確に定義する
  2. 等価クラス、境界値分析、エラー推測などのテスト手法を適用し、API のテスト ケースを作成します。
  3. APIへの入力パラメータは適切に計画・定義する必要がある。
  4. テスト ケースを実行し、予想される結果と実際の結果を比較します。

APIをテストする方法

API自動化テストは、通常のSDLCプロセスに加えて、少なくとも以下のテスト方法を網羅する必要があります。

  • 発見テスト: テスト グループは、API で公開されている特定のリソースが必要に応じて一覧表示、作成、削除できることを確認するなど、API に文書化された一連の呼び出しを手動で実行する必要があります。
  • ユーザビリティテスト: このテストでは、API が機能的でユーザーフレンドリーであるかどうかを検証します。 また、API は別のプラットフォームとも適切に統合されますか?
  • セキュリティテスト: このテストには、どのような種類の認証が必要か、機密データが HTTP 経由で暗号化されるか、またはその両方が行われるかどうかが含まれます。
  • 自動テスト: API テストは、API を定期的に実行するために使用できる一連のスクリプトまたはツールの作成で最終的に完了する必要があります。
  • ドキュメント: テスト チームは、ドキュメントが適切であり、API を操作するために十分な情報が提供されていることを確認する必要があります。 ドキュメントは最終成果物の一部である必要があります

APIテストとユニットテストの違い

単体テスト APIテスト
開発者が実行します テスターが実行します
個別の機能がテストされます エンドツーエンドの機能がテストされている
開発者はソースコードにアクセスできます テスターはソースコードにアクセスできない
UIテストも含まれます API 関数のみがテストされます
基本的な機能のみがテストされます すべての機能上の問題がテストされています
範囲が限定されている より広い範囲
通常はチェックイン前に走る ビルド作成後のテスト実行

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

  • APIテストケースは、テストカテゴリごとにグループ化する必要があります。 TCSの面接質問 準備しやすいように、トピックごとに分類されています。
  • 各テストに加えて、呼び出されるAPIの宣言を含める必要があります。
  • パラメータの選択は、テストケース自体の中で明示的に記述されるべきである。
  • テスターがテストしやすいように、API関数の呼び出しに優先順位を付けてください。
  • 各テストケースは、可能な限り自己完結型で、依存関係から独立しているべきである。
  • 開発においては「テストチェーン」を避けてください。
  • Delete、CloseWindowなどの一度限りの呼び出し機能を扱う際には、特に注意が必要です。
  • 呼び出し順序は、綿密に計画して実施する必要がある。
  • 完全なテスト カバレッジを確保するには、API の考えられるすべての入力の組み合わせに対して API テスト ケースを作成します。

APIテストで検出されるバグの種類

  • エラー状態を適切に処理できない
  • 未使用のフラグ
  • 機能が欠落しているか重複している
  • APIへの接続や応答の取得が困難になるなど、信頼性の問題が発生する。
  • セキュリティの問題
  • マルチスレッドの問題
  • API応答時間が非常に長い場合のパフォーマンス上の問題
  • 呼び出し元に対する不適切なエラー/警告
  • 有効な引数値の不適切な処理
  • 応答データの構造が正しくありません(JSONまたはXML形式ではありません)。

APIテストの自動化方法

以下は、APIテストを自動化するための詳細なガイドです。

さらに、他にも APIテスト用のツール.

AIがAPIテストをどのように変革しているか

人工知能はping 手作業を自動化することでAPIテストを実現します。機械学習アルゴリズムは、API仕様を分析し、テストケースを生成し、人間のテスターが見落としがちなエッジケースを特定できます。

AI は脆弱性を検出することでセキュリティ テストも強化しますが、 APIテストに関する面接でよく聞かれる質問 QAエンジニアは、AIでは再現できない専門知識と人間の判断力を持っていることを忘れてはならない。

API テストの課題

  • Web APIテストにおける主な課題は、パラメータの組み合わせ、パラメータの選択、および呼び出し順序付けです。
  • アプリケーションをテストするためのGUIが用意されていないため、入力値を与えるのが困難です。
  • 別のシステムで出力を検証・確認することは、テスターに​​とって少々難しい。
  • パラメータの選択と分類については、試験担当者が把握しておく必要がある。
  • 例外処理機能をテストする必要があります。
  • テスターに​​はプログラミングの知識が必要です。

結論

API は、ビジネス ロジック層を表すクラス/関数/プロシージャのセットで構成されます。 API が適切にテストされていない場合、API アプリケーションだけでなく呼び出し元のアプリケーションにも問題が発生する可能性があります。 ソフトウェアエンジニアリングでは欠かせない試験です。

よくあるご質問

APIテストはコードベースの呼び出しを通じてビジネスロジックを検証する一方、GUIテストはキーボードとマウスの入力を使用してユーザーインターフェース要素をチェックします。APIテストは視覚的な表現よりもデータフローに重点を置いています。

はい。 Postman コーディング不要のGUIベースのインターフェースを提供するが、高度な自動化にはプログラミングスキルが役立つ。 Java or Python.

HTTPステータスコードは応答結果を示します。2xxは成功、4xxはクライアントエラー、5xxはサーバーエラーを表します。テストでは、すべてのリクエストタイプに対して正しいコードが返されることを確認する必要があります。

AIは、API仕様からテストケースを生成し、エッジケースを特定し、機械学習を用いて欠陥が発生しやすい領域を予測することで、テスト戦略を最適化します。

いいえ。AIには専門知識や創造的な問題解決能力が欠けています。最大限の効果を得るには、AIによる自動化と人間の監視を組み合わせるのが最善のアプローチです。

Postman コラボレーションによる無料プランを提供しています。 安心してください 無料のオープンソース Java フレームワーク。 SoapUIは、CURL, JMeter 無料機能も提供しています。