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

APIテストとは何ですか?

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

APIテストイメージ

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

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

API 自動化 テストには、API を介して対話できるアプリケーションが必要です。 API をテストするには、次のことを行う必要があります。

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

いくつかの注意点

  • API テストは、GUI が利用できないため、他のソフトウェア テスト タイプとは異なりますが、必要なパラメーターのセットを使用して API を呼び出す初期環境を設定し、最終的にテスト結果を確認する必要があります。
  • したがって、API 自動テスト用のテスト環境の設定は少し複雑に思えます。
  • データベースとサーバーはアプリケーションの要件に従って構成する必要があります。
  • インストールが完了したら、API 関数を呼び出して、その API が動作しているかどうかを確認する必要があります。

API の出力の種類

API の出力は次のようになります。

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

この API テスト チュートリアルで、上記の各タイプの例を見てみましょう。

あらゆる種類のデータ

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

Long add(int a, int b)

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

次のような通話を行う必要があります

add (1234, 5656)

数値が整数の制限を超えている場合は、例外を処理する必要があります。

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

以下の API 関数を考えてみましょう –

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

これらは、出力として True (成功の場合) または False (エラーの場合) などの値を返します。

より正確な テストケース つまり、任意のスクリプト内の関数を呼び出して、後でデータベースまたはアプリケーション GUI の変更をチェックすることができます。

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

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

この場合、API 関数の XNUMX つを呼び出し、その API 関数が別の関数を呼び出します。

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

API テストのテスト ケース:

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

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

API テストのアプローチ

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

次の点は、ユーザーが API テスト アプローチを実行するのに役立ちます。

API テストのアプローチ

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

APIテストと単体テストの違い

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

APIをテストする方法

API自動化テストでは、通常のSDLCプロセスとは別に、少なくとも以下のテスト方法をカバーする必要があります。

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

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

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

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

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

APIテストの自動化を行う方法

1) ReadyAPI

ReadyAPI は、RESTful、SOAP、GraphQL、およびその他の Web サービスの機能、セキュリティ、負荷テストのための主要なツールです。 XNUMX つの直感的なプラットフォームで、ReadyAPI Test、ReadyAPI Performance、ReadyAPI Virtualization の XNUMX つの強力なツールを利用できます。 これらのツールを使用すると、機能、セキュリティ、パフォーマンス/負荷のテストを実行できます。 堅牢な仮想化ツールを使用して、API および Web サービスをモックすることもできます。 さらに、簡単に統合できます。 CI / CDパイプライン 毎回のビルド中に。

ReadyAPI

主な機能

  • ReadyAPI はあらゆる環境に統合できます。
  • スマート アサーション機能を備えており、数百のエンドポイントに対して一括アサーションを迅速に作成できます。
  • Git、Docker、Jenkinsのネイティブサポート Azure, etc.
  • 自動テストのためのコマンドラインをサポートします。
  • 機能テストとジョブ キューイングの並列実行をサポートします。
  • Promotes コードの再利用
  • テストおよび開発中に依存関係を削除します。

ReadyAPI にアクセス >>

14 日間の無料トライアル (クレジット カードは必要ありません)

次のチュートリアルでは、API テストを自動化するための詳細なガイドを提供します。

さらに、API テスト用のツールは他にもあります。 チェックしてください こちら

API テストの課題

API テストの課題には次のようなものがあります。

  • Web API テストにおける主な課題は次のとおりです。 パラメータの組み合わせ、パラメータの選択、呼び出し順序
  • 利用可能な GUI はありません アプリケーションをテストします。 入力値を与えるのが難しい
  • 別のシステムでの出力の検証と検証は、テスターに​​とって少し難しいです
  • パラメータの選択と分類はテスターに​​周知する必要があります
  • 例外処理関数 テストする必要があります
  • テスターに​​はコーディングの知識が必要です

まとめ

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