【負荷テスト】 【JMeter】JMeter ~ Webサービス / SOAP 編 ~

■ 前提条件

 * JMeterがインストールされていること
 * 環境構築については、以下の関連記事を参照のこと。
https://blogs.yahoo.co.jp/dk521123/37280266.html

■ 実行環境

 * 実行環境は以下の通り 

JMeter実行環境

 + OS : Windows10

Webサービス環境

 + OS : Windows10
 + JDK : Java8
 + Tomcat : Tomcat8.5

■ テスト手順:Webサービス / SOAP

使用するWebサービス

 * 以下の関連記事で構築したWebサービスを使用する
https://blogs.yahoo.co.jp/dk521123/36139336.html
URL
[[http://localhost:8080/SampleWebService/services/SampleWebService.ws?wsdl]]

概要

 * 以下を見ながらやってみるのもいいかも...
http://jmeter.apache.org/usermanual/build-ws-test-plan.html
 * 以下、大まかな手順。

[1] テンプレートファイルからSOAP Web Service用のテストプランを作成する
[2] 設定値をセッティングする
[3] テスト実行

[1] SOAP Web Service用テストプランを作成する

[1-1] JMeterGUIで起動する
[1-2] [ファイル]-[Templates]を選択する(※ アイコンからもできる)
[1-3] 「Select Template」プルダウンで「Building a SOAP WebService Test Plan」を選択し、
      「Create」ボタン押下する

 【テンプレート構成】

   [TestPlan]
     + [User Defined Variables] (ユーザー定義変数) ... [2-1]を参照
     + [HTTP Request Defaults](HTTPリクエスト初期値設定) ... [2-2]を参照
     + [Number of Users](スレッドグループ) ... [2-3]を参照
     |   + [Soap Request] (HTTPリクエスト) ... [2-4]を参照
     |      + [HTTP Header Manager] (HTTPヘッダマネージャ) ... [2-5]を参照
     |      + [Response Assertion] (アサーション) ... レスポンス結果の正当性を設定できる。[2-6]を参照
     + [View Results Tree] (結果をツリーで表示) ... 初期は非活性(グレーアウト)[2-7]を参照
     + [Aggregate Graph] ... [2-8]を参照
   [ワークベンチ]

[2] 設定値をセッティングする

[2-1] [User Defined Variables] を開き、以下を設定する
      (新規項目#2 #3は、「追加」ボタンで新規入力欄が追加できる)
`#`名前`値`Discription備考
1hostlocalhost任意の文字列もともとある項目
2port8080任意の文字列新規作成
3wsdl_path/SampleWebService/services/SampleWebService.ws?wsdl任意の文字列新規作成。※1

※1 SSLの場合、「https」から始めればいい
[[https://SampleWebService/services/SampleWebService.ws?wsdl]]

[2-2] [HTTP Request Defaults]を開き、「Basic」タブで以下を設定する
`#`項目`値`備考
1サーバ名またはIP${host}-
2ポート番号${port}-
3パス${wsdl_path}-

[2-3] [Number of Users]を開き、以下を設定する
`#`項目`値`備考
1スレッド数任意の正の整数(デフォルト5)同時接続数と思っていい
2ループ回数任意の正の整数(デフォルト2)無限に行いたければ「無限ループ」にチェック

[2-4] [Soap Request]を開き、「Basic」タブで以下を設定する
`#`項目`値`備考
1サーバ名またはIP${host}-
2ポート番号${port}-
3パス${wsdl_path}-
4「Body Data」タブ送信するSOAPデータ(以下の「Body Data(サンプル)」を参照)-
Body Data(サンプル)
<?xml version="1.0" standalone="no"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/";>
<S:Body>
<ns2:sayYourAge xmlns:ns2="http://webservice.sample.com/";>
<name>Ken</name>
<age>11</age>
</ns2:sayYourAge>
</S:Body>
</S:Envelope>

[2-5] [HTTP Header Manager]を開き、以下を設定する
`#`項目`値`備考
1Content-Typetext/xml; charset=utf-8★超重要★
2SOAPAction[設定値なし]-

★超重要★「Content-Type:text/xml; charset=utf-8」について
* 「Content-Type:text/xml; charset=utf-8」の指定がない場合、エラーになる
=> 指定しないと「Content-Type:application/x-www-form-urlencoded」が指定される

[2-6] [Response Assertion]を開き、以下を設定する

※ここで、結果の整合性を確認できる(以下はその一例)
`#`項目`値`備考
1マッチングルール含む-
2テストパターンKen's age is 11.-

[2-7] [View Results Tree]を右クリックし、「有効」を選択し、「HTML Source Formatted」を選択する

[3] テスト実行

[3-1] [実行]-[開始]を選択し、テスト開始

■ 補足

以下の事項は、長くなったので、以下の関連記事に記載する
 [a] リクエストを追加したい場合
 [b] セッション維持させたい場合
https://blogs.yahoo.co.jp/dk521123/36910281.html
 [z]  CSV読み込ませたい場合
https://blogs.yahoo.co.jp/dk521123/36912021.html


関連記事

【負荷テスト】 【JMeterJMeter ~ 基礎知識編 ~

https://blogs.yahoo.co.jp/dk521123/37336527.html

【負荷テスト】 【JMeterJMeterWindows環境構築編 ~

https://blogs.yahoo.co.jp/dk521123/37280266.html

Webサービス / Metro [1] ~入門編 / サーバサイドの構築 ~

https://blogs.yahoo.co.jp/dk521123/36139336.html