jMeter-クイックガイド

JMeterの詳細に入る前に、アプリケーションのテストに関連するいくつかの専門用語を最初に理解しましょう。

  • Performance Test−このテストは、インフラストラクチャの特定の構成で可能な限り最高のパフォーマンス期待値を設定します。また、アプリケーションが本番環境に移行する前に変更を加える必要がある場合は、テストプロセスの早い段階で強調表示されます。

  • Load Test −このテストは基本的に、システムが動作するように設計された最高負荷の下でシステムをテストするために使用されます。

  • Stress Test −このテストは、リソースを圧倒することによってシステムを破壊する試みです。

JMeterとは何ですか?

JMeterは、さまざまなプロトコルまたはテクノロジで、負荷テスト、パフォーマンス指向のビジネス(機能)テスト、回帰テストなどを実行できるソフトウェアです。

Stefano MazzocchiApache Software Foundationのメンバーは、JMeterの最初の開発者でした。彼は主にApacheJServ(現在はApache Tomcatプロジェクトと呼ばれています)のパフォーマンスをテストするために作成しました。その後、ApacheはJMeterを再設計して、GUIを拡張し、機能テスト機能を追加しました。

JMeterは、SwingグラフィカルAPIを使用するグラフィカルインターフェイスを備えたJavaデスクトップアプリケーションです。したがって、Java仮想マシンを受け入れる任意の環境/ワークステーション(Windows、Linux、Macなど)で実行できます。

JMeterがサポートするプロトコルは次のとおりです。

  • Web-HTTP、HTTPSサイト 'web 1.0' web 2.0(ajax、flex、flex-ws-amf)

  • Webサービス-SOAP / XML-RPC

  • JDBCドライバーを介したデータベース

  • ディレクトリ-LDAP

  • JMSを介したメッセージング指向のサービス

  • サービス-POP3、IMAP、SMTP

  • FTPサービス

JMeterの機能

以下は、JMeterの機能の一部です-

  • オープンソースソフトウェアであるため、無料で入手できます。

  • シンプルで直感的なGUIを備えています。

  • JMeterは、Web-HTTP、HTTPS、SOAP、JDBC経由のデータベース、LDAP、JMS、メール-POP3など、さまざまな種類のサーバーの負荷とパフォーマンスのテストを実行できます。

  • これはプラットフォームに依存しないツールです。Linux / Unixでは、JMeterシェルスクリプトをクリックしてJMeterを呼び出すことができます。Windowsでは、jmeter.batファイルを起動することで呼び出すことができます。

  • Swingと軽量コンポーネントを完全にサポートしています(プリコンパイルされたJARはパッケージjavax.swing。*を使用します)。

  • JMeterは、テスト計画をXML形式で保存します。これは、テキストエディタを使用してテスト計画を生成できることを意味します。

  • その完全なマルチスレッドフレームワークにより、多くのスレッドによる同時サンプリングと、個別のスレッドグループによる異なる機能の同時サンプリングが可能になります。

  • それは非常に拡張性があります。

  • また、アプリケーションの自動化された機能テストを実行するためにも使用できます。

JMeterはどのように機能しますか?

JMeterは、ターゲットサーバーにリクエストを送信するユーザーのグループをシミュレートし、テーブルやグラフなどを介してターゲットサーバー/アプリケーションのパフォーマンス/機能を示す統計を返します。

JMeterがどのように機能するかを示す次の図を見てください-

JMeterはJavaのフレームワークであるため、最初の要件はJDKをマシンにインストールすることです。

システム要件

JDK 1.6以上。
記憶 最小要件はありません。
ディスクスペース 最小要件はありません。
オペレーティング・システム 最小要件はありません。

ステップ1:Javaのインストールを確認する

まず、システムにJavaがインストールされているかどうかを確認します。コンソールを開き、次のいずれかを実行しますjava 作業しているオペレーティングシステムに基づくコマンド。

OS 仕事 コマンド
ウィンドウズ コマンドコンソールを開く c:\> java -version
Linux コマンドターミナルを開く $ java -version
マック オープンターミナル マシン:〜joseph $ java -version

システムにJavaがインストールされている場合は、作業しているOSに基づいて適切な出力が得られます。

OS 出力
ウィンドウズ

Javaバージョン「1.7.0_25」

Java(TM)SEランタイム環境(ビルド1.7.0_25-b15)

Java HotSpot(TM)64ビットサーバーVM(ビルド23.25-b01、混合モード)

Linux

Javaバージョン「1.7.0_25」

Java(TM)SEランタイム環境(ビルド1.7.0_25-b15)

Java HotSpot(TM)64ビットサーバーVM(ビルド23.25-b01、混合モード)

マック

Javaバージョン「1.7.0_25」

Java(TM)SEランタイム環境(ビルド1.7.0_25-b15)

Java HotSpot(TM)64ビットサーバーVM(ビルド23.25-b01、混合モード)

Javaがインストールされていない場合は、www.oracle.com / technetwork / java / javase / downloads /index.htmlからJavaSoftware Development Kit(SDK)をインストールしてください。このチュートリアルのインストールバージョンとして、Java1.7.0_25を想定しています。

ステップ2:Java環境を設定する

をセットする JAVA_HOMEJavaがマシンにインストールされているベースディレクトリの場所を指す環境変数。例-

OS 出力
ウィンドウズ 環境変数JAVA_HOMEをC:\ Program Files \ Java \ jdk1.7.0_25に設定します
Linux エクスポートJAVA_HOME = / usr / local / java-current
マック エクスポートJAVA_HOME = / Library / Java / Home

Javaコンパイラの場所をシステムパスに追加します。

OS 出力
ウィンドウズ 文字列を追加します。C:\ Program Files \ Java \ jdk1.7.0_25 \ binからシステム変数Pathの末尾まで。
Linux export PATH = $ PATH:$ JAVA_HOME / bin /
マック 必要ありません

を使用してJavaのインストールを確認する java -version 上で説明したコマンド。

ステップ3:JMeterをダウンロードする

JMeterの最新バージョンをからダウンロードします https://jmeter.apache.org/download_jmeter.cgi。このチュートリアルでは、apache-jmeter-2.9をダウンロードして、C:\> JMeterフォルダーにコピーしました。

ディレクトリ構造は次のようになります-

  • apache-jmeter-2.9
  • apache-jmeter-2.9\bin
  • apache-jmeter-2.9\docs
  • apache-jmeter-2.9\extras
  • apache-jmeter-2.9\lib\
  • apache-jmeter-2.9\lib\ext
  • apache-jmeter-2.9\lib\junit
  • apache-jmeter-2.9\printable_docs

必要に応じて、親ディレクトリの名前を変更できます(つまり、apache-jmeter-2.9)が、サブディレクトリ名は変更しないでください。

ステップ4:JMeterを実行する

JMeterをダウンロードした後、binディレクトリに移動します。この場合、/home/manisha/apache-jmeter-2.9/bin。次に、次をクリックします-

OS 出力
ウィンドウズ jmeter.bat
Linux jmeter.sh
マック jmeter.sh

少し間を置くと、次のスクリーンショットに示すように、SwingアプリケーションであるJMeterGUIが表示されます。

これは、ツールのメインページとデフォルトページです。

テスト計画とは何ですか?

テスト計画は、テストを実行するためのコンテナーと見なすことができます。何をテストし、どのように実行するかを定義します。完全なテスト計画は、スレッドグループ、ロジックコントローラー、サンプル生成コントローラー、リスナー、タイマー、アサーション、構成要素などの1つ以上の要素で構成されます。テスト計画には、少なくとも1つのスレッドグループが必要です。

テスト計画の作成

以下の手順に従って、テスト計画を作成します-

ステップ1:JMeterウィンドウを開始します

クリックしてJMeterウィンドウを開きます /home/manisha/apache-jmeter-2.9/bin/jmeter.sh。JMeterウィンドウは次のように表示されます-

これは、追加の要素が追加されていない、プレーンで空白のJMeterウィンドウです。2つのノードが含まれています-

  • Test Plan node −実際のテスト計画が保持される場所です。

  • Workbench node−コピー/貼り付けの目的で、使用していないときにテスト要素を一時的に保存する場所を提供するだけです。テスト計画を保存すると、Workbenchアイテムは一緒に保存されません。

ステップ2:要素を追加/削除する

要素(次の章の「テスト計画要素」で説明します)は、「テスト計画」ノードを右クリックして「追加」リストから新しい要素を選択することにより、テスト計画に追加できます。

または、ファイルから要素をロードし、「マージ」または「開く」オプションを選択して追加することもできます。

たとえば、以下に示すように、スレッドグループ要素をテスト計画に追加しましょう。

要素を削除するには、要素が選択されていることを確認し、要素を右クリックして、[削除]オプションを選択します。

ステップ3:要素をロードして保存する

ファイルから要素をロードするには-

  • ロードされた要素を追加する既存のツリー要素を右クリックします。
  • [マージ]を選択します。
  • 要素を保存したファイルを選択します。
  • JMeterは要素をツリーにマージします。

デフォルトでは、JMeterは要素を保存しません。明示的に保存する必要があります。

ツリー要素を保存するには-

  • 要素を右クリックします。
  • [選択を名前を付けて保存...]オプションを選択します。

JMeterは、選択した要素とその下のすべての子要素を保存します。デフォルトでは、JMeterは要素を保存しません。前述のように、明示的に保存する必要があります。

ステップ4:ツリー要素を構成する

テスト計画の任意の要素は、JMeterの右側のフレームにあるコントロールを使用して構成できます。これらのコントロールを使用すると、その特定のテスト要素の動作を構成できます。たとえば、スレッドグループは、以下に示すように、多数のユーザー、ランプアップ期間などに対して構成できます。

ステップ5:テスト計画を保存する

いずれかを使用して、テスト計画全体を保存できます。 Save または "Save Test Plan As ..." [ファイル]メニューから。

ステップ6:テスト計画を実行する

クリックすると、テスト計画を実行できます Start(Control + r)から Runメニュー項目。JMeterが実行を開始すると、メニューバーのすぐ下のセクションの右端に小さな緑色のボックスが表示されます。

緑のボックスの左側の数字は、アクティブなスレッドの数/スレッドの総数です。これらは、ローカルで実行されるテストにのみ適用されます。クライアントサーバーモードを使用するときにリモートシステムで開始されるスレッドは含まれません。

ステップ7:テスト計画を停止する

2つの方法でテストを停止できます-

  • 使用する Stop(コントロール+ '。')。可能であれば、スレッドをすぐに停止します。

  • 使用する Shutdown(コントロール+ '、')。現在の作業の終了時にスレッドを停止するように要求します。

JMeterテスト計画は、以下で説明するテスト要素で構成されています。テスト計画は、少なくとも1つのスレッドグループで構成されます。各スレッドグループ内に、サンプラー、ロジックコントローラー、構成要素、リスナー、タイマーなど、1つ以上の他の要素の組み合わせを配置できます。各サンプラーの前には、1つ以上のプリプロセッサ要素があり、その後にポストプロセッサ要素やアサーション要素が続きます。これらの各要素を詳しく見てみましょう-

スレッドグループ

スレッドグループ要素は、テスト計画の開始点です。名前が示すように、スレッドグループ要素は、JMeterがテスト中に使用するスレッドの数を制御します。スレッドグループを介して以下を制御することもできます-

  • スレッド数の設定

  • ランプアップ時間の設定

  • テストの反復回数の設定

スレッドグループのコントロールパネルは次のようになります-

スレッドグループパネルには、次のコンポーネントがあります-

  • Action to be taken after a Sampler error −テストの実行中にエラーが発生した場合は、次のいずれかをテストできます。

    • Continue テストの次の要素に

    • Stop Thread 現在のスレッドを停止します。

    • Stop Test 完全に、実行を継続する前にエラーを検査したい場合に備えて。

  • Number of Threads −サーバーアプリケーションへのユーザーまたは接続の数をシミュレートします。

  • Ramp-Up Period JMeterがすべてのスレッドを実行するのにかかる時間を定義します。

  • Loop Count −テストを実行する回数を定義します。

  • Scheduler checkbox −選択すると、コントロールパネルの下部に[スケジューラの構成]セクションが表示されます。

  • Scheduler Configuration −テスト実行の開始時間と終了時間を設定できます。

コントローラー

JMeterには、サンプラーロジックコントローラーの2種類のコントローラーがあります

サンプラー

サンプラーを使用すると、JMeterは特定のタイプのリクエストをサーバーに送信できます。これらは、ターゲットサーバーからのページに対するユーザー要求をシミュレートします。たとえば、HTTPサービスでPOST、GET、またはDELETEを実行する必要がある場合は、HTTPリクエストサンプラーを追加できます。

いくつかの便利なサンプラーは次のとおりです。

  • HTTPリクエスト
  • FTPリクエスト
  • JDBCリクエスト
  • Javaリクエスト
  • SOAP / XMLリクエスト
  • RPCリクエスト

次のスクリーンショットは、HTTPリクエストサンプラーのコントロールパネルを示しています-

ロジックコントローラー

ロジックコントローラを使用すると、スレッド内のサンプラーの処理順序を制御できます。ロジックコントローラーは、子要素のいずれかからの要求の順序を変更できます。いくつかの例は、-ForEachコントローラー、Whileコントローラー、ループコントローラー、IFコントローラー、ランタイムコントローラー、インターリーブコントローラー、スループットコントローラー、およびRunOnceコントローラーです。

次のスクリーンショットは、ループコントローラーのコントロールパネルを示しています-

次のリストは、JMeterが提供するすべてのロジックコントローラーで構成されています-

  • シンプルなコントローラー
  • ループコントローラー
  • 一度だけのコントローラー
  • インターリーブコントローラー
  • ランダムコントローラー
  • ランダムオーダーコントローラー
  • スループットコントローラー
  • ランタイムコントローラー
  • コントローラーの場合
  • コントローラー中
  • スイッチコントローラー
  • ForEachコントローラー
  • モジュールコントローラー
  • コントローラを含める
  • トランザクションコントローラー
  • レコーディングコントローラー

テストフラグメント

テストフラグメントは、スレッドグループ要素と同じレベルに配置される特殊なタイプの要素です。モジュールコントローラーまたはInclude_Controllerのいずれかによって参照されない限り実行されないという点で、スレッドグループとは区別されます。この要素は、純粋にテスト計画内でコードを再利用するためのものです。

リスナー

リスナーを使用すると、サンプラーの結果を表、グラフ、ツリー、または一部のログファイルの単純なテキストの形式で表示できます。これらは、JMeterのSamplerコンポーネントが実行されるときに、テストケースに関してJMeterによって収集されたデータへの視覚的なアクセスを提供します。

リスナーは、テスト計画の直下を含め、テストのどこにでも追加できます。それらは、そのレベル以下の要素からのみデータを収集します。次のリストは、JMeterが提供するすべてのリスナーで構成されています-

  • サンプル結果保存構成
  • 完全な結果をグラフ化する
  • グラフの結果
  • スプラインビジュアライザー
  • アサーション結果
  • 結果ツリーを表示
  • 集計レポート
  • 結果を表に表示
  • シンプルなデータライター
  • 結果の監視
  • 分布グラフ(アルファ)
  • 集計グラフ
  • メーラービジュアライザー
  • BeanShellリスナー
  • 概略報告

タイマー

デフォルトでは、JMeterスレッドは各サンプラー間で一時停止せずにリクエストを送信します。これはあなたが望むものではないかもしれません。各リクエスト間で待機する期間を定義できるタイマー要素を追加できます。

次のリストは、JMeterが提供するすべてのタイマーを示しています-

  • コンスタントタイマー
  • ガウスランダムタイマー
  • 均一ランダムタイマー
  • 一定のスループットタイマー
  • 同期タイマー
  • JSR223時間
  • BeanShell時間
  • BSF時間
  • ポアソンランダム時間

次のスクリーンショットは、コンスタントタイマーコントロールパネルを示しています-

アサーション

アサーションを使用すると、サンプラーを使用して行われた要求の応答に検証テストを含めることができます。アサーションを使用すると、アプリケーションが正しいデータを返していることを証明できます。JMeterは、アサーションが失敗したときに強調表示します。

次のリストは、JMeterが提供するすべてのアサーションで構成されています-

  • Beanshellアサーション
  • BSFアサーション
  • アサーションを比較する
  • JSR223アサーション
  • 応答アサーション
  • 期間アサーション
  • サイズアサーション
  • XMLアサーション
  • BeanShellアサーション
  • MD5Hexアサーション
  • HTMLアサーション
  • XPathアサーション
  • XMLスキーマアサーション

次のスクリーンショットは、応答アサーションコントロールパネルを示しています-

構成要素

構成要素を使用すると、サンプラーが使用するデフォルトと変数を作成できます。これらは、サンプラーによって行われた要求を追加または変更するために使用されます。

それらは、同じスコープ内にあるサンプラーの前に、それらが含まれるスコープの開始時に実行されます。したがって、構成要素には、それが配置されているブランチ内からのみアクセスされます。

次のリストは、JMeterが提供するすべての構成要素で構成されています-

  • Counter
  • CSVデータセット構成
  • FTPリクエストのデフォルト
  • HTTP認証マネージャー
  • HTTPキャッシュマネージャー
  • HTTPクッキーマネージャー
  • HTTPプロキシサーバー
  • HTTPリクエストのデフォルト
  • HTTPヘッダーマネージャー
  • Javaリクエストのデフォルト
  • キーストア構成
  • JDBC接続構成
  • ログイン構成要素
  • LDAP要求のデフォルト
  • LDAP拡張要求のデフォルト
  • TCPサンプラー構成
  • ユーザー定義変数
  • 単純な構成要素
  • 確率変数

プリプロセッサ要素

プリプロセッサ要素は、サンプラーが実行される直前に実行されるものです。これらは、サンプルリクエストが実行される直前に設定を変更したり、応答テキストから抽出されていない変数を更新したりするためによく使用されます。

次のリストは、JMeterが提供するすべてのプリプロセッサ要素で構成されています-

  • HTMLリンクパーサー
  • HTTPURL書き換え修飾子
  • HTTPユーザーパラメータ修飾子
  • ユーザーパラメータ
  • JDBCプリプロセッサ
  • JSR223プリプロセッサ
  • RegExユーザーパラメータ
  • BeanShellプリプロセッサ
  • BSFプリプロセッサ

ポストプロセッサ要素

ポストプロセッサは、サンプラーが実行を終了した後に実行されます。この要素は、たとえば、後で使用するために特定の値を取得するために、応答データを処理するために最もよく使用されます。

次のリストは、JMeterが提供するすべてのポストプロセッサ要素で構成されています-

  • 正規表現エクストラクタ
  • XPathエクストラクタ
  • 結果ステータスアクションハンドラ
  • JSR223ポストプロセッサー
  • JDBC PostProcessor
  • BSFポストプロセッサー
  • CSS / JQuery Extractor
  • BeanShell PostProcessor
  • PostProcessorをデバッグする

テスト要素の実行順序

以下は、テスト計画要素の実行順序です。

  • 構成要素
  • Pre-Processors
  • Timers
  • Sampler
  • ポストプロセッサ(SampleResultがnullでない場合)
  • アサーション(SampleResultがnullでない場合)
  • リスナー(SampleResultがnullでない場合)

Webページをテストする簡単なテスト計画を作成しましょう。URL-www.tutorialspoint.comで示されるWebページのパフォーマンスをテストできるように、ApacheJMeterでテスト計画を作成します。

JMeterを起動します

をクリックしてJMeterウィンドウを開きます /home/manisha/apache-jmeter-2.9/bin/jmeter.sh。JMeterウィンドウは次のように表示されます-

テスト計画の名前を変更する

[名前]テキストボックスで、テスト計画ノードの名前を[サンプルテスト]に変更します。名前が反映されるようにするには、フォーカスをワークベンチノードに変更し、テスト計画ノードに戻す必要があります。

スレッドグループの追加

次に、ウィンドウに最初の要素を追加します。サンプラー、コントローラー、リスナーなどの他のすべての要素のプレースホルダーである1つのスレッドグループを追加します。シミュレートするユーザー数を構成できるように、1つ必要です。

JMeterでは、コンテキストメニューを使用してすべてのノード要素が追加されます。

  • 子要素ノードを追加する要素を右クリックします。

  • 追加する適切なオプションを選択します。

  • サンプルテスト(テスト計画)→追加→スレッド(ユーザー)→スレッドグループを右クリックします。したがって、スレッドグループはテスト計画(サンプルテスト)ノードの下に追加されます。

  • スレッドグループにUsersという名前を付けます。私たちにとって、この要素は、TutorialsPointホームページにアクセスするユーザーを意味します。

サンプラーを追加

スレッドグループ(ユーザー)にサンプラーを1つ追加する必要があります。スレッドグループを追加するために前に行ったように、今回は右クリックしてスレッドグループ(ユーザー)ノードのコンテキストメニューを開き、[追加]→[サンプラー]→[HTTPリクエスト]オプションを選択してHTTPリクエストサンプラーを追加します。

スレッドグループ(ユーザー)ノードの下に空のHTTPリクエストサンプラーを1つ追加します。このノード要素を構成しましょう-

  • Name−達成したい行動を反映して名前を変更します。名前を付けますVisit TutorialsPoint Home Page

  • Server Name or IP−ここでは、Webサーバー名を入力する必要があります。私たちの場合はwww.tutorialspoint.com。(http://の部分は書かれていません。これはサーバーまたはそのIPの名前だけです)

  • Protocol −これは空白のままにします。つまり、プロトコルとしてHTTPが必要です。

  • Path−パスを/(スラッシュ)と入力します。これは、サーバーのルートページが必要であることを意味します。

リスナーを追加

次に、リスナーを追加します。スレッドグループ(ユーザー)ノードの下に結果ツリーリスナーの表示を追加しましょう。これにより、サンプラーの結果をこのリスナーノード要素で表示できるようになります。

リスナーを追加するには-

  • コンテキストメニューを開く

  • スレッドグループ(ユーザー)を右クリックします

  • [追加]→[リスナー]→[結果ツリーの表示]オプションを選択します

テスト計画を実行する

これですべてのセットアップが完了したので、テスト計画を実行しましょう。スレッドグループ(ユーザー)の構成では、すべてのデフォルト値が保持されます。これは、JMeterがサンプラーを1回だけ実行することを意味します。これは、1人のユーザーに似ていますが、1回だけです。

これは、JMeterサンプラーを使用してブラウザーからWebページにアクセスするユーザーに似ています。テスト計画を実行するには、メニューから[実行]を選択し、[開始]オプションを選択します。

Apache JMeterは、実際にテストを開始する前に、テスト計画をディスクファイルに保存するように要求します。これは、テスト計画を複数回実行する場合に重要です。保存せずに実行することもできます。

出力を表示する

スレッドグループの設定をシングルスレッド(1ユーザーのみ)およびループ1回(1回のみ実行)として保持しているため、ビュー結果ツリーリスナーで1つのトランザクションの結果を取得します。

上記の結果の詳細は次のとおりです。

  • Visit TutorialsPointホームページという名前に対する緑色は、成功を示します。

  • JMeterは、Webサーバーから送信されたすべてのヘッダーと応答を保存し、さまざまな方法で結果を表示する準備ができています。

  • 最初のタブはサンプラーの結果です。JMeterデータとWebサーバーから返されたデータが表示されます。

  • 2番目のタブは[リクエスト]で、リクエストの一部としてWebサーバーに送信されたすべてのデータが表示されます。

最後のタブは応答データです。このタブでは、リスナーはサーバーから受信したデータをテキスト形式で表示します。

これは、1つのリクエストのみを実行する単純なテスト計画です。しかし、JMeterの本当の強みは、多くのユーザーがリクエストを送信しているかのように、同じリクエストを送信することです。複数のユーザーでWebサーバーをテストするには、スレッドグループ(ユーザー)の設定を変更する必要があります。

この章では、データベースサーバーをテストするための簡単なテスト計画を作成する方法を説明します。テストの目的で、MYSQLデータベースサーバーを使用します。他のデータベースをテストに使用できます。MYSQLでのインストールとテーブルの作成については、MYSQLチュートリアルを参照してください。

MYSQLがインストールされたら、以下の手順に従ってデータベースをセットアップします-

  • 「tutorial」という名前のデータベースを作成します。

  • テーブルtutorials_tblを作成します。

  • 以下に示すように、tutorials_tblにレコードを挿入します-

mysql> use TUTORIALS;
Database changed
mysql> INSERT INTO tutorials_tbl 
   ->(tutorial_title, tutorial_author, submission_date)
   ->VALUES
   ->("Learn PHP", "John Poul", NOW());
  
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
   ->(tutorial_title, tutorial_author, submission_date)
   ->VALUES
   ->("Learn MySQL", "Abdul S", NOW());
 
Query OK, 1 row affected (0.01 sec)
mysql> INSERT INTO tutorials_tbl
   ->(tutorial_title, tutorial_author, submission_date)
   ->VALUES
   ->("JAVA Tutorial", "Sanjay", '2007-05-06');

Query OK, 1 row affected (0.01 sec)
mysql>
  • 適切なJDBCドライバーをにコピーします /home/manisha/apache-jmeter-2.9/lib

JMeterテスト計画を作成する

JMeterをから始めましょう /home/manisha/apache-jmeter-2.9/bin/jmeter.sh

ユーザーの追加

スレッドグループを作成するには、

  • テスト計画を右クリックします。

  • [追加]→[スレッド(ユーザー)]→[スレッドグループ]を選択します。

  • したがって、スレッドグループはテスト計画ノードの下に追加されます。

  • このスレッドグループの名前をJDBCユーザーに変更します

スレッドグループのデフォルトのプロパティは変更しません。

JDBCリクエストの追加

ユーザーを定義したので、次に、ユーザーが実行するタスクを定義します。このセクションでは、実行するJDBC要求を指定します。

  • JDBCUsers要素を右クリックします。

  • 選択する Add → Config Element → JDBC Connection Configuration

  • 次のフィールドを設定します(チュートリアルと呼ばれるMySQLデータベースを使用しています)-

    • プールにバインドされた変数名。これは、構成を一意に識別する必要があります。これは、使用する構成を識別するためにJDBCサンプラーによって使用されます。これをtestと名付けました。

    • データベースURL-jdbc:mysql:// localhost:3306 / tutorial。

    • JDBCドライバークラス:com.mysql.jdbc.Driver。

    • ユーザー名:root。

    • パスワード:rootのパスワード。

画面上の他のフィールドは、以下に示すようにデフォルトのままです-

次に、上記で定義したJDBC構成プールを参照するJDBC要求を追加します。JDBCUsers要素を選択します。

  • マウスの右ボタンをクリックして、[追加]メニューを表示します

  • 選択する Add → Sampler → JDBC Request.

  • この新しい要素を選択して、そのコントロールパネルを表示します。

  • 以下に示すようにプロパティを編集します-

    • プールにバインドされた変数名。これは、構成を一意に識別する必要があります。これは、使用する構成を識別するためにJDBCサンプラーによって使用されます。テストと名付けました。

    • 名前-学ぶ。

    • プール名-テストを入力します(構成要素と同じ)。

    • クエリタイプ-Selectステートメント。

    • [SQLクエリ文字列]フィールドに入力します。

リスナーを作成する

次に、Listener要素を追加します。この要素は、JDBCリクエストのすべての結果をファイルに保存し、データのビジュアルモデルを提示する役割を果たします。

  • JDBCUsers要素を選択します

  • ビュー結果ツリーリスナーを追加します(Add → Listener → View Results Tree)。

テスト計画を保存して実行する

次に、上記のテスト計画をdb_test.jmxとして保存します。を使用してこのテスト計画を実行しますRun → Start オプション。

出力を確認する

最後の画像では、2つのレコードが選択されていることがわかります。

この章では、JMeterを使用してFTPサイトをテストする方法を説明します。FTPサイトをテストするためのテスト計画を作成しましょう。

テスト計画の名前を変更する

  • /home/manisha/apache-jmeter-2.9/bin/jmeter.shをクリックして、JMeterウィンドウを開きます。

  • [テスト計画]ノードをクリックします。

  • このテスト計画ノードの名前をTestFTPSiteに変更します。

スレッドグループの追加

サンプラー、コントローラー、リスナーなどの他のすべての要素のプレースホルダーであるスレッドグループを1つ追加します。

  • TestFTPSite(テスト計画)を右クリックします

  • [追加]→[スレッド(ユーザー)]→[スレッドグループ]を選択します。スレッドグループは、テスト計画(TestFTPSite)ノードの下に追加されます。

  • 次のように、テストに合わせてスレッドグループのデフォルトプロパティを変更します。

    • Name −FTPusers

    • Number of Threads (Users) − 4

    • Ramp-Up Period −デフォルト値の0秒のままにします。

    • Loop Count − 1

サンプラーの追加-FTPリクエスト

ユーザーを定義したので、次に、ユーザーが実行するタスクを定義します。FTPリクエスト要素を追加します。2つのFTP要求要素を追加します。1つはファイルを取得し、もう1つはftpサイトにファイルを配置します。

  • FTPユーザー要素を選択します。

  • マウスボタンを右クリックして、[追加]メニューを表示します

  • [追加]→[サンプラー]→[FTP要求]を選択します。

  • ツリーでFTP要求要素を選択します。

  • 以下に示すように、次のプロパティを編集します-

この要素には次の詳細が入力されます-

  • Name −FTPリクエスト取得

  • Server Name or IP − 184.168.74.29

  • Remote File − /home/manisha/sample_ftp.txt

  • Local File − sample_ftp.txt

  • get(RETR)を選択します

  • Username −マニシャ

  • Password − manisha123

次に、上記のように別のFTPリクエストを追加し、次のスクリーンショットに示すようにプロパティを編集します-

この要素には次の詳細が入力されます-

  • Name −FTPリクエストプット

  • Server Name or IP − 184.168.74.29

  • Remote File − /home/manisha/examplefile.txt

  • Local File − /home/manisha/work/examplefile.txt

  • put(STOR)を選択します

  • Username −マニシャ

  • Password − manisha123

リスナーを追加

テスト計画に追加する必要がある最後の要素はリスナーです。この要素は、FTPリクエストのすべての結果をファイルに保存し、データの視覚的なモデルを提示する役割を果たします。

  • FTPユーザー要素を選択します。

  • [追加]> [リスナー]> [結果ツリーの表示]を選択して、結果ツリーの表示リスナーを追加します。

テスト計画を実行する

次に、上記のテスト計画をftpsite_test.jmxとして保存します。を使用してこのテスト計画を実行しますRun → Start オプション。

出力を表示する

次の出力がリスナーに表示されます。

FTPリクエストごとに4つのリクエストが行われ、テストが成功したことがわかります。GETリクエスト用に取得したファイルは、/ binフォルダーに保存されます。私たちの場合、それは/home/manisha/apache-jmeter-2.9/bin/。PUTリクエストの場合、ファイルはパスにアップロードされます/home/manisha/

この章では、Webサービスをテストするためのテスト計画を作成する方法を学習します。テストの目的で、単純なWebサービスプロジェクトを作成し、Tomcatサーバーにローカルにデプロイしました。

Webサービスプロジェクトを作成する

Webサービスプロジェクトを作成するために、EclipseIDEを使用しました。最初にサービスエンドポイントインターフェイスを作成しますHelloWorld パッケージの下 com.tutorialspoint.ws。HelloWorld.javaの内容は次のとおりです-

package com.tutorialspoint.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

//Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.RPC)

public interface HelloWorld {
   @WebMethod String getHelloWorldMessage(String string);
}

このサービスには方法があります getHelloWorldMessage Stringパラメータを取ります。

次に、実装クラスを作成します HelloWorldImpl.java パッケージの下 com.tutorialspoint.ws

package com.tutorialspoint.ws;

import javax.jws.WebService;

@WebService(endpointInterface="com.tutorialspoint.ws.HelloWorld")
public class HelloWorldImpl  implements HelloWorld  {
   @Override
   public String getHelloWorldMessage(String myName) {
      return("Hello "+myName+" to JAX WS world");
   }
}

エンドポイントパブリッシャーを作成してこのWebサービスをローカルに公開し、サーバー上でサービスを公開しましょう。

公開メソッドは2つのパラメーターを取ります-

  • エンドポイントURL文字列。

  • 実装者オブジェクト、この場合はHelloWorld実装クラス。これは、上記のパラメーターで指定されたURLで識別されるエンドポイントでWebサービスとして公開されます。

HelloWorldPublisher.javaの内容は次のとおりです-

package com.tutorialspoint.endpoint;

import javax.xml.ws.Endpoint;
import com.tutorialspoint.ws.HelloWorldImpl;

public class HelloWorldPublisher {
   public static void main(String[] args) {
      Endpoint.publish("http://localhost:9000/ws/hello", new HelloWorldImpl());
   }
}

以下に示すようにweb.xmlの内容を変更します-

<?xml version = "1.0" encoding = "UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, 
   Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

<web-app>
   <listener>
      <listener-class>
         com.sun.xml.ws.transport.http.servlet.WSServletContextListener
      </listener-class>
   </listener>
	
   <servlet>
      <servlet-name>hello</servlet-name>
      <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>
	
   <servlet-mapping>
      <servlet-name>hello</servlet-name>
      <url-pattern>/hello</url-pattern>
   </servlet-mapping>
	
   <session-config>
      <session-timeout>120</session-timeout>
   </session-config>
	
</web-app>

このアプリケーションをWebサービスとしてデプロイするには、別の構成ファイルが必要になります sun-jaxws.xml。このファイルの内容は次のとおりです-

<?xml version = "1.0" encoding = "UTF-8"?>
<endpoints
   xmlns = "http://java.sun.com/xml/ns/jax-ws/ri/runtime"
   version = "2.0">
   
   <endpoint name = "HelloWorld" 
      implementation = "com.tutorialspoint.ws.HelloWorldImpl" 
      url-pattern = "/hello"/>
</endpoints>

すべてのファイルの準備ができたので、ディレクトリ構造は次のスクリーンショットに示すようになります-

  • 次に、このアプリケーションのWARファイルを作成します。

  • プロジェクトを選択→右クリック→エクスポート→WARファイル。

  • これを名前を付けて保存 hello.war 下のファイル webapps Tomcatサーバーのフォルダー。

  • 次に、Tomcatサーバーを起動します。

  • サーバーが起動すると、次のURLでWebサービスにアクセスできるようになります-http:// localhost:8080 / hello / hello

JMeterテスト計画を作成する

次に、上記のWebサービスをテストするためのテスト計画を作成しましょう。

テスト計画の名前を変更する

  • /home/manisha/apache-jmeter2.9/bin/jmeter.shをクリックして、JMeterウィンドウを開きます。

  • [テスト計画]ノードをクリックします。

  • このテスト計画ノードの名前をWebserviceTestに変更します。

スレッドグループの追加

サンプラー、コントローラー、リスナーなどの他のすべての要素のプレースホルダーであるスレッドグループを1つ追加します。

  • WebserviceTest(テスト計画)→追加→スレッド(ユーザー)→スレッドグループを右クリックします。スレッドグループは、テスト計画(WebserviceTest)ノードの下に追加されます。

  • 次に、テストに合わせてスレッドグループのデフォルトプロパティを変更しましょう。以下のプロパティが変更されました-

    • Name −Webサービスユーザー

    • Number of Threads (Users) − 2

    • Ramp-Up Period −デフォルト値の0秒のままにします。

    • Loop Count − 2

サンプラーの追加-SOAP / XML-RPCリクエスト

ユーザーを定義したので、次に、ユーザーが実行するタスクを定義します。

SOAP / XML-RPCリクエスト要素を追加します-

  • マウスボタンを右クリックして、[追加]メニューを表示します。

  • 「追加」→「サンプラー」→「SOAP / XML-RPC要求」を選択します。

  • ツリーでSOAP / XML-RPCリクエスト要素を選択します

  • 下の画像のように次のプロパティを編集します-

  • この要素には次の詳細が入力されます-

    • Name − SOAP/XML-RPC Request

    • URL − http:// localhost:8080 / hello / hello?wsdl

    • Soap/XML-RPC Data −以下の内容を入力してください

<soapenv:Envelope xmlns:soapenv = "http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:web = "http://ws.tutorialspoint.com/">
   <soapenv:Header/>
	
   <soapenv:Body>
      <web:getHelloWorldMessage>
         <arg0>Manisha</arg0>
      </web:getHelloWorldMessage>
   </soapenv:Body>
   
</soapenv:Envelope>

リスナーを追加

テスト計画に追加する必要がある最後の要素はリスナーです。この要素は、HTTPリクエストのすべての結果をファイルに保存し、データの視覚的なモデルを提示する役割を果たします。

  • Webサービスのユーザー要素を選択します。

  • 「追加」→「リスナー」→「結果ツリーの表示」を選択して、「結果ツリーの表示」リスナーを追加します。

テスト計画を実行する

次に、上記のテスト計画をtest_webservice.jmxとして保存します。[実行]→[開始]オプションを使用して、このテスト計画を実行します。

出力を表示する

次の出力がリスナーに表示されます。

最後の画像では、「Hello Manisha to JAXWSworld」という応答メッセージを見ることができます。

この章では、Java Messaging Service(JMS)をテストするための簡単なテスト計画を作成する方法を学習します。JMSは2種類のメッセージングをサポートしています-

  • Point-to-Point messaging−キューメッセージングは​​通常、送信者が応答を期待するトランザクションに使用されます。メッセージングシステムは、通常のHTTPリクエストとはまったく異なります。HTTPでは、1人のユーザーがリクエストを送信してレスポンスを取得します。

  • Topic messaging−トピックメッセージは、一般にpub / subメッセージングとして知られています。トピックメッセージングは​​通常、メッセージがプロデューサーによって公開され、複数のサブスクライバーによって消費される場合に使用されます。

これらのそれぞれのテスト例を見てみましょう。JMSをテストするための前提条件は次のとおりです。

  • この例では、ApacheActiveMQを使用しています。IBM WebSphere MQ(以前のMQSeries)、TibcoなどのようなさまざまなJMSサーバーがあります。ApacheActiveMQWebサイトのバイナリからダウンロードしてください。

  • アーカイブを解凍し、解凍されたディレクトリに移動し、コマンドコンソールから次のコマンドを実行してActiveMQサーバーを起動します-

.\bin\activemq  start

次のアドレスの管理インターフェースにアクセスして、ActiveMQサーバーが起動したかどうかを確認できます。 http://localhost:8161/admin/。認証を求められた場合は、adminとしてユーザーIDとパスワードを入力します。画面は以下のようになります-

  • 次に、activemq-all-xxxjar(バージョンによってはXXX)をActiveMQの解凍されたディレクトリからにコピーします。 /home/manisha/apache-jmeter-2.9/lib.

上記の設定で、-のテスト計画を作成しましょう。

  • JMSポイントツーポイントテスト計画

  • JMSトピックテスト計画

この章では、JMeterを使用してWebサーバーを監視するテスト計画を作成する方法について説明します。モニターテストの用途は次のとおりです-

  • モニターは、ストレステストやシステム管理に役立ちます。

  • ストレステストとともに使用されるモニターは、サーバーのパフォーマンスに関する追加情報を提供します。

  • モニターを使用すると、サーバーのパフォーマンスとクライアント側の応答時間の関係を簡単に確認できます。

  • システム管理ツールとして、モニターは1つのコンソールから複数のサーバーを監視する簡単な方法を提供します。

監視にはTomcat5以降が必要です。テストの目的で、Tomcat7.0.42サーバーを監視します。Java Management Extension(JMX)をサポートする任意のサーブレットコンテナをテストできます。Tomcatサーバーを監視するためのテストケースを書いてみましょう。まず、Tomcatサーバーをセットアップしましょう。

Tomcatサーバーのセットアップ

まず、Tomcatサービスのステータスを開きます。これを行うには、ユーザーの構成ファイルを編集します。<TOMCAT_HOME>/conf/tomcat-users.xml。このファイルには、次のようにtomcat-usersセクション(コメント付き)が含まれています-

<tomcat-users>

<!--
   <role rolename = "tomcat"/>
   <role rolename = "role1"/>
   <user username = "tomcat" password = "tomcat" roles = "tomcat"/>
   <user username = "both" password = "tomcat" roles = "tomcat,role1"/>
   <user username = "role1" password = "tomcat" roles = "role1"/>
-->

</tomcat-users>

このセクションを変更して、adminロール、manager、manager-guiを追加し、ユーザー「admin」を割り当てる必要があります。改訂ファイルは以下の通りです−

<tomcat-users>

   <role rolename = "manager-gui"/>
   <role rolename = "manager-script"/>
   <role rolename = "manager-jmx"/>
   <role rolename = "manager-status"/>
   <user username = "admin" password = "admin" roles = "manager-gui,manager-script,manager-jmx,manager-status"/>

</tomcat-users>

次に、Linuxの場合はTomcatサーバー<TOMCAT_HOME> /bin/startup.shを起動し、Windowsの場合は<TOMCAT_HOME> /bin/startup.batを起動します。開始したら、ブラウザに次のリンクを入力して、Tomcat監視が機能することを確認します-

http://localhost:8080/manager/status?XML=true

ブラウザに認証ウィンドウが表示されます。関連するTomcatログインとパスワードを入力します(この場合はadminです)。すると、ブラウザはTomcatの実行状態を以下のように表示します-

上のスクリーンショットから、いくつかのことがわかります-

  • URLで、XML = true(大文字と小文字の区別に注意)を使用すると、JMeterが機能するために必要な監視Tomcatをクリーンに表示できることに注意してください。

  • また、デフォルトで2つのコネクタがあることに注意してください。一般的に使用されるAJPコネクタはmod_jkApache HTTPDフロントモジュールと結合され、HTTPコネクタはポート8080を介してTomcatに直接アクセスするために一般的に使用されるコネクタです。

JMeterテスト計画を書く

テスト計画を書いてTomcatサーバーを監視しましょう-

テスト計画の名前を変更する

  • /home/manisha/apache-jmeter2.9/bin/jmeter.shをクリックして、JMeterウィンドウを開きます。

  • [テスト計画]ノードをクリックします。

  • 次の手順で説明するように、スレッドグループを追加します。

スレッドグループの追加

  • 右クリック Test Plan → Add → Threads(Users) → Thread Group。スレッドグループは、テスト計画ノードの下に追加されます。

  • 十分なサンプルが生成されるように、ループカウントを永久(またはいくつかの大きな数)に変更します。

HTTP認証マネージャー

  • 「追加」→「構成要素」→「HTTP許可マネージャー」を選択して、HTTP許可マネージャーをスレッドグループ要素に追加します。この要素は、Tomcatサーバーのステータスを確認するためにブラウザーから要求された認証を管理します。

  • HTTP認証マネージャーを選択します。

  • 以下の詳細を編集します-

    • Username − admin(tomcat-users.xmlファイルの構成によって異なります)

    • Password − admin(tomcatusers.xmlファイルの構成によって異なります)

    • 他のフィールドは空のままです。

サンプラーの追加-HTTPリクエスト

ユーザーを定義したので、次に、ユーザーが実行するタスクを定義します。HTTPリクエスト要素を追加します。

  • マウスボタンを右クリックして、[追加]メニューを表示します。

  • 「追加」→「サンプラー」→「HTTP要求」を選択します。

  • 次に、ツリーでHTTPリクエスト要素を選択します。

  • 下の画像のように次のプロパティを編集します-

  • この要素には次の詳細が入力されます-

    • Name −サーバーステータス

    • Server Name or IP −ローカルホスト

    • Port − 8080

    • Path − / manager / status

    • Parameters−「XML」という名前のリクエストパラメータを大文字で追加します。小文字で「true」の値を指定します。

    • Optional Tasks −サンプラーの下部にある「モニターとして使用」にチェックを入れます。

コンスタントタイマーを追加する

サーバーのステータスを定期的に要求するには、各要求の間に時間間隔を空けるコンスタントタイマーを追加します。[追加]→[タイマー]→[一定のタイマー]を選択して、このスレッドグループにタイマーを追加します。

[スレッド遅延]ボックスに5000ミリ秒を入力します。一般に、5秒より短い間隔を使用すると、サーバーにストレスがかかる可能性があります。モニターを実稼働環境にデプロイする前に、許容可能な間隔を確認してください。

リスナーを追加

テスト計画に追加する必要がある最後の要素はリスナーです。2種類のリスナーを追加します。1つは結果をファイルに保存し、もう1つは結果のグラフィカルビューを表示します。

  • スレッドグループ要素を選択します。

  • シンプルデータライターリスナーの追加追加→リスナー→シンプルデータライター。

  • 出力ファイルのディレクトリとファイル名を指定します(この場合は/home/manisha/work/sample.csvです)

  • テスト計画要素の[追加]→[リスナー]→[結果の監視]を選択して、別のリスナーを追加しましょう。

テスト計画を実行する

次に、上記のテスト計画をmonitor_test.jmxとして保存します。[実行]→[開始]オプションを使用して、このテスト計画を実行します。

出力を表示する

結果は/home/manisha/work/sample.csvファイルに保存されます。次の画像のように、モニター結果リスナーにグラフィカルな結果を表示することもできます。

グラフの両側にキャプションがあることに注意してください。左側はパーセントで、右側は死んでいる/健康です。メモリラインが急激に上下する場合は、メモリのスラッシングを示している可能性があります。このような状況では、BorlandOptimizeItまたはJProbeを使用してアプリケーションのプロファイルを作成することをお勧めします。見たいのは、ロード、メモリ、スレッドの規則的なパターンです。異常な動作は通常、パフォーマンスの低下または何らかのバグを示します。

リスナーは、JMeterの実行中にJMeterがテストケースに関して収集する情報へのアクセスを提供します。リスナーによって収集された結果または情報は、次の形式で表示できます。

  • tree
  • tables
  • graphs
  • ログファイル

すべてのリスナーは、1つが指定されている場合、同じ生データを出力ファイルに書き込みます。

デフォルト設定

保存されるデフォルトのアイテムは、次の2つの方法のいずれかで定義できます-

  • の中に jmeter.properties(またはuser.properties)ファイル。このファイルはに存在します/bin JMeterのフォルダー。デフォルトの形式を変更するには、jmeter.propertiesで次の行を見つけます。

jmeter.save.saveservice.output_format=
  • 次のスクリーンショットに示すように、Configポップアップを使用する-

JMeterは、テスト実行の結果をJMeter Text Logs(JTL)として作成します。これらは通常、デフォルトの拡張子であるJTLファイルと呼ばれますが、任意の拡張子を使用できます。

同じ出力ファイル名を使用して複数のテストが実行される場合、JMeterはファイルの最後に新しいデータを自動的に追加します。

リスナーは結果をファイルに記録できますが、UIには記録できません。これは、GUIのオーバーヘッドを排除することにより、データを記録する効率的な手段を提供することを目的としています。

−で実行している場合

  • GUI mode −リスナーSimple DataWriterを使用する

  • non-GUI mode − -lフラグを使用して、データファイルを作成できます。

サンプルが多い場合、リスナーは大量のメモリを使用する可能性があります。必要なメモリ量を最小限に抑えるには、CSV形式のSimple DataWriteを使用します。

CSVログ形式

CSVログ形式は、構成で選択されているデータ項目によって異なります。指定されたデータ項目のみがファイルに記録されます。列の出現順序は固定されており、次のとおりです。

フィールド 説明 値の例
タイムスタンプ 1970年1月1日からのミリ秒単位 1354223881017
経過 ミリ秒単位 1858年
ラベル サンプラーラベル HTTPリクエスト
responseCode 例:200、404 200
responseMessage 例:OK OK
threadName スレッドグループ1-1
データ・タイプ 例:テキスト テキスト
成功 正しいか間違っているか true
failureMessage もしあれば
バイト サンプルのバイト数 34908
grpThreads このスレッドグループ内のアクティブなスレッドの数 1
allThreads すべてのグループのアクティブなスレッドの総数 1
URL http://tutorialspoint.com
ファイル名 ファイルへの応答の保存が使用された場合
レイテンシー 最初の応答までの時間 132
エンコーディング utf-8
SampleCount サンプル数(複数のサンプルが集約されていない限り、1) 1
ErrorCount エラーの数(複数のサンプルが集約されていない限り、0または1) 0
ホスト名 サンプルが生成された場所 ラップトップマニシャ
アイドルタイム 「アイドル」時間のミリ秒数(通常は0)
変数 指定されている場合

応答データの保存

応答データは、必要に応じてXMLログファイルに保存できます。ただし、大きなファイルや画像を保存することはできません。このような場合は、ポストプロセッサSave_Responses_to_a_fileを使用してください。これにより、サンプルごとに新しいファイルが生成され、ファイル名がサンプルとともに保存されます。その後、ファイル名をサンプルログ出力に含めることができます。サンプルログファイルが再ロードされるときに、必要に応じてデータがファイルから取得されます。

応答データの読み込み(読み取り)

既存の結果ファイルを表示するには、ファイルの[参照...]ボタンを使用してファイルを選択できます。必要に応じて、適切なリスナーを含むダミーのテスト計画を作成するだけです。

リスナーGUIデータの保存

JMeterは、任意のリスナーをPNGファイルとして保存できます。そうするために、

  • [編集]→[画像として保存]を選択して、左側のパネルでリスナーを選択します。ファイルダイアログが表示されます。

  • 希望の名前を入力します。

  • リスナーを保存します。

JMeterの関数とユーザー変数

JMeter関数は、テストツリー内の任意のサンプラーまたはその他の要素のフィールドに入力できる特別な値です。

  • 関数呼び出しは次のようになります-

${__functionName(var1,var2,var3)}
  • _functionNameは関数の名前と一致します。例えば${__threadNum}

  • 関数パラメーターにコンマが含まれている場合は、以下に示すように、必ず「\」でエスケープしてください。

${__time(EEE\, d MMM yyyy)}
  • 変数は-として参照されます

${VARIABLE}

機能一覧

次の表に、タイプに大まかにグループ化された関数のグループを示します。

関数タイプ 名前 コメント
情報 threadNum スレッド番号を取得します。
情報 samplerName サンプラー名(ラベル)を取得します。
情報 machineIP ローカルマシンのIPアドレスを取得します。
情報 machineName ローカルマシン名を取得します。
情報 時間 現在の時刻をさまざまな形式で返します。
情報 ログ メッセージをログに記録(または表示)します(そして値を返します)。
情報 logn メッセージ(空の戻り値)をログに記録(または表示)します。
入力 StringFromFile ファイルから1行を読み取ります。
入力 FileToString ファイル全体を読み取ります。
入力 CSVRead CSV区切りファイルから読み取ります。
入力 XPath XPath式を使用してファイルから読み取ります。
計算 カウンター 増分番号を生成します。
計算 intSum int番号を追加します。
計算 longSum 長い数字を追加します。
計算 ランダム 乱数を生成します。
計算 RandomString ランダムな文字列を生成します。
計算 UUID ランダムなタイプ4UUIDを生成します。
スクリプティング BeanShell BeanShellスクリプトを実行します。
スクリプティング javaScript JavaScript(Mozilla Rhino)を処理します。
スクリプティング jexl、jexl2 CommonsJexl式を評価します。
プロパティ プロパティ プロパティを読み取ります。
プロパティ P プロパティを読み取ります(省略形)。
プロパティ setProperty JMeterプロパティを設定します。
変数 スプリット 文字列を変数に分割します。
変数 V 変数名を評価します。
変数 eval 変数式を評価します。
変数 evalVar 変数に格納されている式を評価します。
ストリング regexFunction 正規表現を使用して前の応答を解析します。
ストリング escapeOroRegexpChars ORO正規表現で使用されるメタ文字を引用します。
ストリング char 数値のリストからUnicode文字値を生成します。
ストリング エスケープ解除 Javaエスケープを含む文字列を処理します(例:\ n&\ t)。
ストリング unescapeHtml HTMLでエンコードされた文字列をデコードします。
ストリング escapeHtml HTMLエンコーディングを使用して文字列をエンコードします。
ストリング TestPlanName 現在のテスト計画の名前を返します。
  • 機能には2種類あります-

    • ユーザー定義の静的値(または変数)

    • 組み込み関数

  • ユーザー定義の静的値を使用すると、ユーザーは、テストツリーがコンパイルされて実行されるように送信されたときに、静的値に置き換えられる変数を定義できます。

  • 変数をネストすることはできません。すなわち${Var${N}} 動作しません。

  • __V(変数)関数(2.2以降のバージョン)を使用してこれを行うことができます-$ {__ V(Var $ {N})}。

  • このタイプの置換は機能なしで可能ですが、便利で直感的ではありません。

関数と変数を使用する場所

関数と変数は、任意のテストコンポーネントの任意のフィールドに書き込むことができます。

次の機能は、テスト計画でうまく機能するはずです-

  • intSum
  • longSum
  • machineName
  • BeanShell
  • javaScript
  • jexl
  • random
  • time
  • プロパティ関数
  • ログ機能

テスト計画で使用される機能には、いくつかの制限があります。関数の処理時にJMeterスレッド変数が完全に設定されていないため、パラメーターとして渡された変数名が設定されず、変数参照が機能しません。したがって、split()regex()および変数評価関数は機能しません。threadNum()関数は動作しません、それはテスト計画レベルでは意味がありません。

変数と関数の参照

  • テスト要素内の変数の参照は、変数名を「$ {」および「}」で囲むことによって行われます。

  • 関数は同じ方法で参照されますが、慣例により、関数の名前はユーザー値の名前との競合を避けるために「__」で始まります。

  • 一部の関数は引数を取り、それらを構成します。これらは括弧で囲まれ、コンマで区切られます。関数が引数を取らない場合は、括弧を省略できます。例-

${__BeanShell(vars.put("name"\,"value"))}
  • または、スクリプトを変数として定義することもできます。たとえば、テスト計画-

SCRIPT     vars.put("name","value")
  • スクリプトは次のように参照できます-

${__BeanShell(${SCRIPT})}

関数ヘルパーダイアログ

関数ヘルパーダイアログは、JMeterの Options タブ。

  • 関数ヘルパーを使用すると、プルダウンから関数を選択し、その引数に値を割り当てることができます。表の左側の列は引数の簡単な説明を提供し、右側の列はその引数の値を書き込む場所です。関数が異なれば、引数も異なります。

  • これを行ったら、[生成]ボタンをクリックすると、適切な文字列が生成されます。これをコピーして、必要に応じてテスト計画に貼り付けることができます。

事前定義された変数

一部の変数は、JMeterによって内部的に定義されています。彼らは-

  • COOKIE_cookiename-Cookie値が含まれます。

  • JMeterThread.last_sample_ok-最後のサンプルがOKであったかどうか-true / false。注-これは、PostProcessorsおよびAssertionsが実行された後に更新されます。

  • START変数。

事前定義されたプロパティ

一部の組み込みプロパティは、JMeterによって定義されています。これらは以下のとおりです。便宜上、STARTプロパティも同じ名前の変数にコピーされます。

  • START.MS-ミリ秒単位のJMeter開始時間。

  • START.YMD-JMeterの開始時刻はyyyyMMddです。

  • START.HMS-HHmmssとしてのJMeter開始時間。

  • TESTSTART.MS-ミリ秒単位のテスト開始時間。

START変数/プロパティは、テストの開始時間ではなく、JMeterの起動時間を表すことに注意してください。これらは主にファイル名などでの使用を目的としています。

正規表現は、パターンに基づいてテキストを検索および操作するために使用されます。JMeterは、パターンマッチングソフトウェアApache Jakarta OROを含めることにより、JMeterテスト計画全体で使用されている正規表現またはパターンの形式を解釈します。

正規表現を使用することで、テスト計画を作成または強化するときに、時間を大幅に節約し、柔軟性を高めることができます。正規表現は、結果を予測することが不可能または非常に難しい場合に、ページから情報を取得するための簡単な方法を提供します。

式を使用する標準的な使用例は、サーバーの応答からセッションIDを取得することです。サーバーが一意のセッションキーを返す場合、ロードスクリプトの式を使用して簡単に取得できます。

テスト計画で正規表現を使用するには、JMeterの正規表現エクストラクターを使用する必要があります。テスト計画の任意のコンポーネントに正規表現を配置できます。

の違いを強調する価値があります contains そして matches、応答アサーションテスト要素で使用される-

  • contains正規表現がターゲットの少なくとも一部に一致したことを意味します。したがって、「アルファベット」は「を含む」「ph.b」です。正規表現が部分文字列 'phabe'と一致するためです。

  • matches正規表現がターゲット全体に一致したことを意味します。したがって、「アルファベット」は「al。* t」と「一致」します。

Webページの次の部分に一致させたいとします-

name = "file" value = "readme.txt"

そして、readme.txtを抽出したいとします。適切な正規表現は次のようになります-

name = "file" value = "(.+?)">

上記の特殊文字は-

  • ( そして ) −これらは、返される一致文字列の部分を囲みます

  • . −任意の文字に一致

  • + −1回以上

  • ? −最初の一致が成功したら停止します

JMeterテスト計画を作成する

テスト計画を作成して、正規表現エクストラクタ(後処理要素)での正規表現の使用について理解しましょう。この要素は、正規表現を使用して現在のページからテキストを抽出し、目的の要素が準拠するテキストパターンを識別します。

まず、人とその電子メールIDのリストを含むHTMLページを作成します。これをTomcatサーバーにデプロイします。html(index.html)の内容は以下のとおりです。

<html>
   <head>
   </head>
	
   <body>
      <table style = "border: 1px solid #000000;">
		
         <th style = "border: 1px solid #000000;">ID</th>
         <th style = "border: 1px solid #000000;">name</th>
         <th style = "border: 1px solid #000000;">Email</th>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">3</td>
            <td id = "Name" style = "border: 1px solid #000000;">Manisha</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
         <tr>
            <td id = "ID" style = "border: 1px solid #000000;">4</td>
            <td id = "Name" style = "border: 1px solid #000000;">joe</td>
            <td id = "Email" style = "border: 1px solid #000000;">[email protected]</td>
         </tr>
			
      </table>
   </body>
</html>

Tomcatサーバーにデプロイすると、このページは次のスクリーンショットに示すようになります-

テスト計画では、上の人物リストページに表示されている人物テーブルの最初の行で人物を選択します。この人物のIDを取得するために、最初に2行目の人物を見つけるパターンを決定しましょう。

次のスナップショットに示されているように、2番目の人物のIDは<td id = "ID">と</ td>で囲まれており、このパターンを持つデータの2番目の行です。これを使用して、情報を抽出する正確なパターンに一致させることができます。このページから個人IDと個人名の2つの情報を抽出するため、フィールドは次のように定義されます。

JMeterを起動し、スレッドグループを追加します Test Plan → Add→ Threads(Users)→ Thread Group

次に、サンプラーHTTPリクエストを追加し、テスト計画を選択して、右クリックします Add → Sampler → HTTP Request 以下に示すように詳細を入力します-

  • Name −管理

  • Server Name or IP −ローカルホスト

  • Port Number − 8080

  • Protocol −これは空白のままにします。つまり、プロトコルとしてHTTPが必要です。

  • Path − jmeter / index.html

次に、正規表現エクストラクタを追加します。HTTPリクエストサンプラー(管理)を選択し、右クリックしますAdd → Post Processor → Regular Expression Extractor

次の表に、上記のスクリーンショットで使用されているフィールドの説明を示します-

シニア番号 フィールドと説明
1

Reference Name

抽出されたテストが格納される変数の名前(refname)。

2

Regular Expression

抽出されるテキストが照合されるパターン。抽出されるテキストグループは、文字「(」および「)」で囲まれています。'。+?'を使用します <td ..> .. </ td>タグで囲まれたテキストの単一インスタンスを示します。この例では、式は− <td id = "ID">(+?)</ td> \ s * <td id = "Name">(+?)</ td> \ s *です。

3

Template

抽出されたテキストの各グループは、変数Personのメンバーとして配置され、「(」および「)」で囲まれたパターンの各グループの順序に従います。各グループはrefname_g#として保存されます。ここで、refnameは参照名として入力した文字列であり、#はグループ番号です。$ 1 $はグループ1を指し、$ 2 $はグループ2などを指します。$ 0 $は、式全体が一致するものを指します。この例では、抽出したIDはPerson_g1に保持され、Name値はPerson_g2に格納されます。

4

Match No.

このパターンの2番目のオカレンスのみを抽出し、2番目のボランティアと一致させることを計画しているため、値2を使用します。値0はランダムに一致しますが、ForEachコントローラーでは負の値を使用する必要があります。

5

Default

アイテムが見つからない場合、これがデフォルト値になります。これはオプションのフィールドです。空白のままでもかまいません。

このテスト計画の結果をキャプチャするリスナーを追加します。スレッドグループを右クリックし、[追加]→[リスナー]→[結果ツリーの表示]オプションを選択して、リスナーを追加します。

テスト計画をreg_express_test.jmxとして保存し、テストを実行します。次のスクリーンショットに示すように、出力は成功します-

JMeterには、特に分散環境で実行する場合にいくつかの制限があります。これらのガイドラインに従うと、実際の継続的な負荷を作成するのに役立ちます-

  • スレッドの数が多い場合は、JMeterの複数のインスタンスを使用してください。

  • スコープルールを確認し、それに応じて設計します。

  • すべての要素には常に命名規則を使用してください。

  • スクリプトを実行する前に、デフォルトのブラウザ接続設定を確認してください。

  • リスナーを適切に追加します。

  • リソース要件を減らすためのいくつかの提案があります-

    • 非GUIモードを使用します:jmeter -n -t test.jmx -ltest.jtl。

    • できるだけ少ないリスナーを使用します。上記のように-lフラグを使用すると、それらをすべて削除または無効にすることができます。

    • 「ViewResultTree」リスナーは大量のメモリを消費し、コンソールがフリーズしたり、JMeterのメモリが不足したりする可能性があるため、無効にします。ただし、「エラー」のみをチェックした状態で「結果ツリーの表示」リスナーを使用するのは安全です。

    • 同様のサンプラーを多数使用するのではなく、ループ内で同じサンプラーを使用し、変数(CSVデータセット)を使用してサンプルを変更します。または、アクセスログサンプラーを使用することもできます。

    • 機能モードは使用しないでください。

    • XMLではなくCSV出力を使用します。

    • 必要なデータのみを保存してください。

    • 使用するアサーションはできるだけ少なくしてください。

    • 大量のメモリを消費するため、すべてのJMeterグラフを無効にします。Webインターフェイスの[JTL]タブを使用して、すべてのリアルタイムグラフを表示できます。

    • 使用する場合は、CSVデータセット構成からローカルパスを消去することを忘れないでください。

    • すべてのテストを実行する前に、[ファイル]タブをクリーンアップします。