Web サービス テストのチュートリアル: テスト方法例で学ぶ

Webサービスとは何ですか?

Web サービスは、2 つのアプリケーション/マシンが下線に関係なくデータを交換するメカニズムまたは通信媒体です。 archi構造もテクノロジーも。

Webサービステストとは何ですか?

Webサービスのテスト Web サービスを検証するソフトウェア テストの一種です。 Web サービス テストの目的は、API (Application Program Interface) の機能、信頼性、パフォーマンス、セキュリティをチェックすることです。 Web サービスのテストは、場合によっては単体テストに似ています。 Web サービスを手動でテストすることも、独自の自動化コードを作成することも、Postman などの既製の自動化ツールを使用することもできます。

なぜWebサービスが必要なのでしょうか?

一般に、ソフトウェア アプリケーションは人間が使用するように開発され、人間がソフトウェア サービスにリクエストを送信すると、ソフトウェア サービスは人間が読める形式で応答を返します。

テクノロジーの現代では、ソフトウェア アプリケーションを構築する場合、すべてを最初から構築する必要はありません。 アプリケーションにプラグインできる既製のサービスが多数あり、アプリケーション内でそれらのサービスの提供を開始できます。

たとえば、アプリケーションでデータを収集、処理、レンダリングする必要のない天気予報情報を表示したいとします。 このような種類のデータの処理と公開にすでに定評のある人々からサービスを購入できます。

Web サービスを使用すると、このような実装が可能になります。

例として、次のことを考えてみましょうwing ウェブサービス

http://www.webservicex.net/stockquote.asmx?op=GetQuote

それは企業の株式価値を与えます。

Googleの株価を調べてみましょう(シンボル:GOOG)

Webサービスのテスト

応答 XML で株価が得られます。

Webサービスのテスト

この WebService は、SOAP または HTTP プロトコルを使用してソフトウェア アプリケーションから呼び出すことができます。

Webサービスプロトコル

Web サービスはさまざまな方法で実装できますが、次のとおりです。wing XNUMX つは一般的な実装アプローチです。

  1. SOAP(シンプルオブジェクトアクセスプロトコル)
  2. REST (表現状態転送) archi構造)

石鹸

SOAP は、Web サービスの要求と応答を送受信するために W3C 標準によって定義された標準プロトコルです。

SOAP では、 リクエストを送受信するためのXML形式 したがって、データはプラットフォームに依存しないデータです。 SOAP メッセージは、プロバイダー アプリケーションと受信側アプリケーションの間で SOAP エンベロープ内で交換されます。

SOAP は単純な http トランスポート プロトコルを使用するため、そのメッセージはファイアウォールによってブロックされません。

REST

REST は REpresentational State Transfer を意味します。それは archi通常は HTTP 上で実行される構造です。 REST スタイルは、クライアントとサービスの間の対話を重視しており、操作の数を制限することで対話が強化されます。 REST は SOAP (Simple Object Access Protocol) の代替手段であり、リクエストに XML を使用する代わりに、場合によっては単純な URL を使用します。 SOAP とは異なり、RESTFUL アプリケーションは HTTP 組み込みヘッダーを使用してメタ情報を伝達します。

ユーザーが API にアクセスできるかどうかを判断するために REST が使用するさまざまなコードがあります。たとえば、コード 200 または 201 は応答本文との対話が成功したことを示し、コード 400 は不正なリクエストまたはリクエスト URI がシステム内の API と一致しないことを示します。 すべての API リクエスト パラメータとメソッド パラメータは、次のいずれかを介して送信できます。 POST or GET 変数。

Rest API は、WebServices API テスト用に XML 形式と JSON 形式の両方をサポートしています。 通常は次のような場合に好まれます。 モバイル アプリの動作がより高速かつスムーズになるため、Web アプリも可能になります

wsdl

WSDL (Web サービス記述言語) は、Web サービスによって提供されるサービスを記述するために使用される XML ベースの言語です。

WSDL は、特定の Web サービスによって提供されるすべての操作を XML 形式で記述します。 また、サービスを呼び出す方法、つまり提供する必要がある入力値と、サービスの種類ごとに生成される応答の形式も定義します。

Web サービスをテストするにはどうすればよいですか?

Web サービスをテストするには、次のことができます。

  1. 手動でテストする
  2. 独自の自動化コードを作成する
  3. SoapUI などの既製の自動化ツールを使用します。

Web サービス自動化テストには以下が含まれますwing ステップ–

  1. WSDLファイルを理解する
  2. 特定の Web サービスが提供する操作を決定する
  3. 送信する必要がある XML リクエスト形式を決定する
  4. 応答の XML 形式を決定する
  5. ツールを使用するかコードを作成してリクエストを送信し、レスポンスを検証する

通貨変換機能を提供する Web サービスをテストしたいとします。 さまざまな国の通貨間の現在の換算レートになります。 このサービスは、ある通貨から別の通貨に値を変換するためにアプリケーションで使用できます。

上記の手順を見てみましょう

ステップ 1 ~ 4: WSDL を理解し、操作と XML 形式を決定する

通貨 Convertor WSDL ファイルが表示されます @ (http://www.webservicex.net/CurrencyConvertor.asmx?wsdl) 通貨に関する情報が得られます Convertor サポートする Web サービスのメソッド、渡す必要があるパラメータ、パラメータのタイプなど。

WSDL と操作と XML 形式の決定

WSDL と操作と XML 形式の決定

ステップ 5: ツールを使用するかコードを作成してリクエストを送信し、レスポンスを検証する

SOAP Web サービスをテストするために使用できる WebService テスト ツールが多数あります。 SoapUI は人気のあるものの XNUMX つです APIツール これは、SOAP Web サービスをテストするのに役立ちます。 実際、http 経由で Web サービス プロバイダー アプリケーションに XML リクエストを送信でき、期待される結果に対して応答 XML を解析して検証できる任意のプログラミング言語を使用できます。 この Web サービス テスト チュートリアルでは、WebService をテストします。

  1. Javaの使用
  2. SoapUI の使用

パート 1) Apache Axis2 API (Java) を使用した Web サービスのテスト。

通常、Web サービスはリクエストを受け取り、XML 形式でレスポンスを送信します。

Apache Axis2 API プロジェクトは、 Java 実装 API。サーバー側 (サービス プロバイダー) とクライアント側 (サービス コンシューマー) の両方の Web サービスを作成するために使用されます。

Axis2 は SOAP メッセージを送信でき、SOAP メッセージを受信して​​処理します。 API を使用して小さな Java プログラムを作成し、Web サービスを作成できます。 Axis2 は、Web サービスによって提供されるサービスの通信に使用される Java プログラムから WSDL を生成します。 同じ Axis2 を使用して、WSDL ファイルから Java クラス (スタブ) を生成できます。これをクライアント プログラムとして使用して、Web サービス リクエストを生成し、サービス エンド ポイントにリクエストを送信し、応答を処理します。

  1. 基本的には、スタブ クラスをインスタンス化する単純な Java プログラムを作成します。
  2. スタブを使用して、必要な情報をすべて渡してリクエスト メソッドを呼び出します。
  3. スタブ プログラムはそのリクエストを XML リクエスト形式に変換し、サービス エンド ポイントに送信します。サービス エンド ポイントはリクエストを読み取って処理し、XML 形式で応答を送信します。
  4. XML 応答はスタブによって Java クラスに変換され、実際のプログラムに返されます。

上記の手順を詳しく見てみましょう

ステップ a) axis2 API をダウンロードします @ https://axis.apache.org/axis2/Java/core/download.cgi 環境変数「AXIS2_HOME」を設定する(&)

Apache Axis2 API (Java) を使用した Web サービスのテスト

ステップ b) 生成されたすべてのアーティファクトを保存するフォルダーを作成します。

例: C:\Axis\Projects\CurrencyConverter

ステップ c) コマンド プロンプトを開き、アーティファクトを生成するフォルダー構造に移動し、次の手順を実行します。wing スタブを生成するコマンド

%AXIS2_HOME%\bin\WSDL2Java -uri http://www.webservicex.net/CurrencyConvertor.asmx?wsdl -p org.apache.axis2.currencyconvertor -d adb –s

Apache Axis2 API (Java) を使用した Web サービスのテスト

ステップ d) コマンドが正常に実行されると、必要なファイルが含まれるフォルダーが表示されます。

Apache Axis2 API (Java) を使用した Web サービスのテスト

ステップ e) この Web サービス テスト チュートリアルの次のステップでは、生成されたスタブを使用して実際のリクエストを送信するクライアント プログラムを作成する必要があります。を開きます。 eclipse 新しい Java プロジェクトを作成し、上で作成したフォルダーを選択します。

Apache Axis2 API (Java) を使用した Web サービスのテスト

ステップ f) すべての axis2 関連の jar をプロジェクトのビルド パスに追加します。これは、axis2 ソフトウェア フォルダーの lib フォルダーにあります。

(例: C:\Axis\axis2-1.6.2\lib)

Apache Axis2 API (Java) を使用した Web サービスのテスト

ステップ g) 新しい Java クラス (例: Client.Java) を作成し、スタブ オブジェクトをインスタンス化します。 スタブ オブジェクトを使用すると、特定の WebService でサポートされているすべてのメソッドを呼び出すことができます。

Apache Axis2 API (Java) を使用した Web サービスのテスト

Client.Java Program
package org.apache.axis2.currencyconvertor;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRate;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.ConversionRateResponse;
import org.apache.axis2.currencyconvertor.CurrencyConvertorStub.Currency;

public class Client {
 public static void main(Java.lang.String args[]) {

  try {

       //Create the stub object by passing the service end point url
       CurrencyConvertorStub stub = new CurrencyConvertorStub("http://www.webservicex.net/CurrencyConvertor.asmx");
       //ConversionRate is the class which we have to use mention the from and to currency
       //ConversionRate object will be the parameter for the conversionRate operation
       ConversionRate conversionRate = new ConversionRate();
       conversionRate.setFromCurrency(Currency.USD);
       conversionRate.setToCurrency(Currency.INR);

       //Create the ConversionRateResponse object, which is going to be used to catch the response
       //call the conversionRate service using the stub object
       ConversionRateResponse conversionRateResponse = stub.conversionRate(conversionRate);

       //We can use the conversionRateResponse object to retrieve the response of the ConversionRate Service
       System.out.println("Conversion Rate from INR to USD : " + conversionRateResponse.getConversionRateResult());

       } catch (Exception e) {
       e.printStackTrace();
      }
    }
}

パート 2) SoapUI Web サービスを使用してテストする方法

SoapUI 内

  1. [ファイル] > [新しい Soap プロジェクト] に移動します。
  2. プロジェクト名と WSDL URI の場所を入力します。
  3. [OK]をクリックします。

SoapUI Web サービスを使用したテスト

  1. 最初のリクエストを展開し、 double 「リクエスト1」をクリックします。 SOAPリクエストをXML形式で表示します。
  2. 開始通貨と終了通貨を入力します
  3. 送信ボタンをクリックします
  4. 応答 XML が右側のペインに表示されます。

SoapUI Web サービスを使用したテスト

結論として、SoapUI などの Web サービス テスト ツールを使用すると、Web サービス自動化テストの作業が迅速化されます。 したがって、後続のチュートリアルでは SoapUi が学習の焦点となります。

まとめ

  • ソフトウェア アプリケーションは、WebService を使用して相互に通信し、データを交換します。
  • SOAP と REST は、WebService を作成するための 2 つの一般的なプロトコルです
  • SOAP は XML ベースのデータ交換をサポートします
  • REST は、Web サービス API テスト用の XML、Json、または単純な URL でのデータ交換をサポートします。
  • WSDL は、Web サービスによって提供されるサービスを記述するために使用される XML ベースの言語です。 SOAP は WSDL を使用して定義されます。
  • WebService をテストするには、次のことができます
    • 独自のコードを作成します。 たとえば、Java 用の Axis2 API を使用します。
    • SoapUI などの WebService テスト自動化ツールを使用する
  • SoapUI などの自動化ツールは、Web サービス自動テストの取り組みを活性化し、Axis2 API を使用して独自のコードを作成する場合に比べてコーディングの手間が少なくなります。

よくある質問

ウェブサービス Web API
W3C によって定義され、すべての通信とデータ交換は XML に基づいています Web API通信とデータ交換はXML、JSON、またはプレーンデータの可能性があります
定義された標準があります – WSDL 定義された基準なし
データを圧縮することはできませんが、HTML リクエストは圧縮できます データを圧縮できます
例: 石鹸 例: REST

詳細については、こちらから Web APIテスト

この Web サービス テスト チュートリアルは、Narender Reddy Nukala 氏の貢献によって可能になりました。