このブログについて

ソフトウェア開発におけるエラーの予防やプロジェクト管理、品質管理を支援するParasoft製品のTIPSなどを、国内総販売代理店テクマトリックスのサポートスタッフが紹介しています。

2013年1月4日金曜日

第1回:REST API テスト効率化 - テスト作成/実行

Web API 開発時における課題は、やはりテストの効率化です。Web APIのテストには、テスト クライアントが必須であり、そのため、テスト クライアントの開発、および開発したテスト クライアントのテストが必要になります。これらの作業は、素早くサービスを提供する本来の目的から遠ざけるだけでなく、単純に工数の増加を意味します。
テスト クライアントを開発する場合は、個々のテストの属人性が高くなるだけでなく、開発・改修するWeb APIの数やバージョンの増加に伴い、工数が益々増加してしまいます。

Parasoft SOAtestは、ツールのGUI より、Web API のテストに必要なテスト データを設定するだけで、直ぐにテストできます。そのため、テスト クライアントの準備にかかる工数を大幅に削減し、テストのスピードを加速します。

さらに、Parasoft SOAtestは、個々のテストクライアントのテスト結果に対して期待値を設定できます。そのため、テストの自動実行により得られた結果と期待値の検証を完全に自動化でき、目視検証を行う必要がなくなります。また、これにより工数を大幅に削減できます。検証結果はエビデンスレポートとして外部保存できます。



■目的
Parasoft SOAtest を使用して、REST API のテストを即座に実行する方法をピックアップして紹介します。

・テストクライアントの生成
・テストクライアントのテストデータ設定
・テスト実行

テスト概要
郵便番号検索APIを開発していると仮定し、この機能のテストを Parasoft SOAtest を使用して行います。今回は、例として、Yahoo Japan 様が公開している REST API (郵便番号検索API)を使用します。

郵便番号 '108-8588' で検索し、結果の検証を行います。
期待する結果は、弊社(テクマトリックス 株式会社)の住所などの情報です。

■いますぐ Parasoft SOAtest で REST API をテスト!

1. SOAtest の起動

 1-1. SOAtest を起動します。

2.プロジェクトの作成

 2-1. 新規プロジェクトを作成するため、ドロップダウンメニューより、[プロジェクト] を選択します。

 2-2. ダイアログより、 [SOAtest] -> [空のプロジェクト] を選択し、[次へ] をクリックします。

 2-3. プロジェクト名を [REST API Tests] と設定し、[終了] をクリックします。

  2-4. ここまでの操作でプロジェクト(REST API Tests)の作成が完了しました。プロジェクト内には、テストファイル(.tst)が1つ生成されています。※プロジェクト内に生成可能なテストファイルに上限はありません。

3. REST テストクライアントの作成

 3-1. テストファイル(REST API Tests.tst)のテストスイートに、REST テストクライアントを生成します。[テストスイート:テストスイート] を右クリックし、シュートカットメニューより [新規追加] -> [テスト] を選択します。

 3-2. ダイアログより、[REST Client] テストツールを選択し、[終了] をクリックします。

 3-3. ここまでの操作で、テストスイートに、REST Client を追加しました。

4. REST テストクライアントの設定
今回は。。
・固定値のテストデータのみを使用した設定方法を紹介します。
・GETメソッドでのテストを紹介します。

 4-1. 作成したテストクライアント(Test 1: REST Client) をダブルクリックし、テストデータの設定画面(エディター ビュー)を開きます。

 4-2. はじめに、テストクライアントのリクエスト送信先ホストを設定します。
  ここには、Yahoo Japan様が公開している情報を設定します。


  [ホスト] に 'search.olp.yahooapis.jp' を設定します。

4-3. 次に、リクエスト送信先パスを設定します。
次の手順で、[パス] に 'OpenLocalPlatform/V1/zipCodeSearch' を設定します。
[パス] のタブより [追加] ボタンをクリックします。

ダイアログより、'OpenLocalPlatform/V1/zipCodeSearch' を設定し、[OK] をクリックします。
 
[リソース] に 'http://search.olp.yahooapis.jp/'OpenLocalPlatform/V1/zipCodeSearch' と表示されていることを確認します。ここまでの操作で、ホストとパスの設定は完了です。















4-4. 最後にリクエストのパラメーター情報を設定します。
Yahoo Japan様が公開している仕様に従い、パラメーターを設定します。

今回は、パラメーターに 'appid'、'query'、'output' の3つを設定します。[クエリー] タブを選択し、 [追加] ボタンをクリックして設定を行います。


ダイアログより、[名前] に 'appid' を設定し、[値] に任意の値(Yahoo Japan様より提供されたConsumer Key)を設定し、[OK] をクリックします。

上記の手順を繰り返し、クエリーに 'query'、'output' の2つも追加します。
・'query' には郵便番号として、'108-8588' を設定
・'output' にはレスポンス値として、'json' を指定

以上でテストデータの設定は完了です。

5. テストの実施と結果検証

 5-1. REST テストクライアント(Test 1: REST Client)を選択し、[テストの実行] ボタンをクリックします。この操作で、テストを実行しました。











5-2. しばらく待ち、GUI の下部の [Example Configuration] ビューより、テストが成功したことを確認します(「1/1テストが成功」と表示されます)。


5-3. 実際にどのようなやり取りが行われたのか、トラフィックを見て確認します。
テストクライアント(REST Client)作成時に自動的に生成された [トラフィックオブジェクト -> Traffic Viewer] をダブルクリックで開き、テスト時に送受信された情報を確認します。

Traffic Viewer の [リクエスト] タブを選択し、テスト時のリクエスト情報を確認します。
次に、[レスポンス] タブを選択し、Yahoo Japan 様の Web API サーバーからのレスポンスを確認します。レスポンス情報のボディは、リテラルおよびツリー表示できます。

・リテラルで表示



・ツリーで表示
 レスポンス値 'PostalName' には、'テクマトリックス 株式会社' が設定されていることを確認します。
 

 レスポンス値 'Address' には、'東京都港区高輪4丁目10-8京急第7ビル' が設定されていることを確認します。


以上

■まとめ
今回は、Yahoo Japan 様のREST API (郵便番号検索API)を使用し、郵便番号 '108-8588' で検索するテストを Parasoft SOAtest を使用して行いました。また、そのテスト結果が弊社(テクマトリックス 株式会社)の住所などに関する情報であることを、トラフィックを参照して検証しました。

■次回予告
次回は、REST テストクライアントのテスト結果を、サブツールを使用して自動検証する方法について紹介します。

■体験版ダウンロード
http://www.techmatrix.co.jp/quality/download/index.html#soatest





■製品評価について
Parasoft 製品を貴社環境に適用させるための導入支援サービスも行っております。
ぜひ右の問合せ先までお問い合わせください。