JMeter 要素とコンポーネント: スレッドグループ、サンプラー

⚡ スマートサマリー

JMeter 要素は、あらゆるテスト計画の構成要素です。スレッドグループは仮想ユーザーを作成し、サンプラーはリクエストを送信し、リスナーは結果を表示し、構成要素はそれらのリクエストに必要なデフォルト値とデータを提供します。

  • 🔘 スレッドグループ: 各スレッドは、テスト対象アプリケーションを操作する1人の仮想ユーザーを表します。
  • ☑️ サンプラー: リクエストのプロトコル(FTP、HTTP、JDBC、SMTPなど)を決定します。
  • リスナー: 結果をグラフ、ツリー、表、またはログファイルとして表示します。
  • 🧪 構成要素: サンプラーがテスト全体で再利用するデフォルト値と変数を設定します。
  • 🛠️ データ駆動型実行: CSVデータセット設定は、シミュレーションされたユーザーごとに異なる認証情報を渡します。
  • 現代における同等の事例: BSF Sampler は廃止されました。現在のリリースは JSR223 を介してスクリプトを実行し、 Groovy.

JMeter 要素: スレッドグループ、サンプラー、リスナー、および構成要素

要素とは何ですか JMeter?

のさまざまなコンポーネント JMeter は要素と呼ばれます。各要素は特定の目的のために設計されています。

以下の図は、いくつかの共通要素を示しています。 JMeter そして、それらがスレッドグループの下にどのように配置されるかを示します。

JMeter 要素階層図。スレッドグループは、サンプラー、ロジックコントローラ、リスナー、構成要素、アサーション、タイマー、プロセッサの上に配置されています。

すべての構成要素を一度に学習しようとすると、混乱と退屈を招くことになります。ここでは、学習を始める前に知っておくべき必須の構成要素について説明します。 テスト in JMeter.

残りの構成要素については、今後のチュートリアルで必要に応じて説明します。このチュートリアルで説明する要素は以下のとおりです。

スレッドグループ

スレッドグループとは、スレッドの集合体です。各スレッドは、テスト対象アプリケーションを使用する1人のユーザーを表します。つまり、各スレッドは、サーバーへの実際のユーザーリクエストを1つシミュレートします。

スレッドグループのコントロールを使用すると、各グループのスレッド数を設定できます。

例えば、スレッド数を100に設定すると、 JMeter 下の図に示すように、テスト対象サーバーに対して100件のユーザーリクエストを作成し、シミュレーションします。

図 JMeter ユーザー1からユーザー100をシミュレートするスレッドグループが、それぞれテスト対象アプリケーションにリクエストを送信する。

スレッドグループパネルには、起動準備期間も設けられており、すべてのユーザーを一度に起動するのではなく、スレッドの開始を時間差で分散させます。

サンプラー

すでに知っているように、 JMeter HTTP、FTP、JDBC、その他多くのプロトコルのテストをサポートします。

また、スレッドグループはサーバーへのユーザーリクエストをシミュレートすることもわかっています。

しかし、スレッドグループは、どのタイプの要求(HTTP、FTPなど)を行う必要があるかをどのように判断するのでしょうか?

答えはサンプラーです。

ユーザーからのリクエストは、FTPリクエスト、HTTPリクエスト、JDBCリクエストなど、様々な形式が考えられます。下の図は、このチュートリアルで取り上げるサンプラーの一覧です。

ツリー図一覧 JMeter サンプラー: FTPリクエスト、HTTPリクエスト、JDBCリクエスト、BSFサンプラー、アクセスログサンプラー、SMTPサンプラー

FTPリクエスト

FTPサーバーのパフォーマンスをテストしたいとしましょう。FTPリクエストサンプラーを使用すると、 JMeter このタスクを実行するために。このコントローラを使用すると、FTP「ファイルのダウンロード」または「ファイルのアップロード」リクエストを FTP サーバーに送信できます。

を示す図 JMeter FTPサーバーにFTPリクエストを送信してファイルをアップロードまたはダウンロードする

たとえば、テスト対象の FTP サーバーからファイル「Test.txt」をダウンロードする場合は、いくつかのパラメータを設定する必要があります。 JMeter 下図のように。

サーバーとしてftp.example.com、ポート21、リモートファイルとしてTest.txt、匿名ログインを使用したFTPリクエストサンプルパネル

パネルはサーバーを次のように設定します ftp.example.comポート21、リモートファイルTest.txt、get(RETR)オプション、 JMeter そのサーバーにFTPコマンドを送信し、ファイルをダウンロードします。

HTTPリクエスト

このサンプラーを使用すると、HTTP/HTTPS リクエストを Web サーバーに送信できます。

以下の例を考えてみましょう。 JMeter HTTPリクエストを送信します Google ウェブサイトにアクセスし、そこからHTMLファイルや画像を取得します。

の図 JMeter HTTPリクエストを送信して Google サイトと、それに対するHTMLと画像の受信

チュートリアルでは JMeter 性能試験このHTTPリクエストについてさらに詳しく説明します。これは最も Webアプリケーションのテスト 仕事はそれに依存している。

JDBCリクエスト

このサンプラーを使用するとデータベースを実行できます 性能試験。 JDBC リクエスト (SQL クエリ) をデータベースに送信します。

の図 JMeter SQLクエリをデータベースサーバーに送信し、結果を受け取る

例えば、データベースサーバーには、test_tbl という名前のテーブルに test_result というフィールドが格納されています。データベースサーバーからこのデータをクエリしたいので、次のように構成できます。 JMeter 送信するには SQL データを取得するために、このサーバーにクエリを実行します。

JDBCリクエストパネルでクエリタイプを「選択ステートメント」に設定し、クエリを「select test_result from test_tbl where id = 1」とします。

ここでのクエリタイプはSELECTステートメントで、クエリは次のようになります。 select test_result from test_tbl where id = 1JDBC接続構成要素は、変数名フィールドが指すプールを指定する必要があります。

BSFサンプラー

このサンプラーを使用すると、 BSF スクリプト言語。

以下はBSFサンプラーの例です。 JMeterスクリプト言語、スクリプトに渡されるパラメータ、およびインラインスクリプトまたは外部スクリプトファイルを指定するフィールドがあります。

スクリプト言語、パラメータ、外部スクリプトファイル、インラインスクリプト本体のフィールドを備えたBSFサンプラーパネル

非推奨に関する注記: BSF ファミリーの要素は、JSR223 要素に置き換えられたため、現在は表示されていません。 JMeter コンポーネントリファレンス. 現在のリリースでは、 JSR223サンプラー   Groovyこれはスクリプトをコンパイルし、負荷がかかった状態でもはるかに優れたパフォーマンスを発揮します。上のパネルは、古いテストプランにまだ含まれているため、ここに残されています。

アクセスログサンプラー

このサンプラーを使用すると、アクセスログを読み取り、HTTPリクエストを生成できます。ログエントリには、画像、HTML、CSSなどが含まれます。

アクセスログサンプラーパネルには、デフォルトのサーバーとポートのフィールド、TCLogParserプラグインクラス、およびログファイルの場所が表示されます。

パーサーフィールドのデフォルト値は org.apache.jmeter.protocol.http.util.accesslog.TCLogParser、ログファイルロケーションフィールドポイント JMeter 再生したいログファイルを選択してください。

SMTPサンプラー

メールサーバーのテストを行う場合は、SMTPサンプラーを使用できます。このサンプラーは、SMTPプロトコルを使用して電子メールメッセージを送信するために使用されます。

SMTPサンプラーパネルには、サーバー設定、メールアドレス、認証とセキュリティオプション、メッセージ設定が含まれています。

このパネルには、サーバー設定、メールアドレス、認証、メッセージ設定がグループ化されており、ポートフィールドの横にデフォルトのポート番号(SMTP 25、SSL 465、StartTLS 587)が表示されます。

リスナー

リスナーはテスト実行結果を表示します。結果は、ツリー構造、表、グラフ、ログファイルなど、さまざまな形式で表示できます。

リスナーが結果をグラフ、ツリー、テーブル、レポートの各ビューに展開する様子を示す図

その グラフ結果 リスナーは、サーバーの応答時間をグラフに表示し、その下にサンプル数、平均値、偏差、スループット、中央値を表示します。

グラフ結果リスナーは、データ、平均値、中央値、偏差、スループット系列とともに応答時間をプロットします。

結果ツリーを表示 各ユーザーリクエストの結果を基本的なHTML形式で表示し、サンプラー結果タブには読み込み時間、遅延、サイズ、応答コードが報告されます。

結果ツリーリスナーを表示。左側にリクエストリスト、サンプラー結果タブにレスポンスコード200が表示されます。

結果を表形式で表示 テスト結果の概要を表形式で表示します。1行はサンプルごとに1つです。

サンプル番号、開始時刻、スレッド名、ラベル、サンプル時刻の列を持つテーブルで結果を表示するリスナー

ログファイルには、同じ要約がテキスト形式で記録されます。これは、GUIを使用せずにテストを実行した場合に保持される情報です。

集計ログサマリーには、サンプル数、平均値、合計行を含むサンプラーラベルが一覧表示されます。

ベストプラクティス: GUIリスナーはメモリを消費し、結果を歪める可能性があるため、実際の負荷テストはGUIを使用しないモードで実行し、その後で保存された結果ファイルを開いてください。

構成要素

設定要素は、サンプラーが後で使用するためのデフォルト値と変数を設定します。

以下の図は、一般的に使用されるいくつかの構成要素を示しています。 JMeter.

ツリー図 JMeter 設定要素:CSVデータセット設定、HTTPクッキーマネージャー、ログイン設定要素、HTTPリクエストのデフォルト値、FTPリクエストのデフォルト値

CSV データセット構成

例えば、異なる認証情報でログインする100人のユーザーに対してウェブサイトをテストしたいとします。スクリプトを100回記録する必要はありません。スクリプトにパラメータを設定して、異なるログイン認証情報を入力させることができます。このログイン情報(例えば、ユーザー名とパスワード)はテキストファイルに保存できます。 JMeter テキストファイルからさまざまなパラメータを読み取ることができる要素があります。それは「CSVデータセット設定」で、ファイルから行を読み取り、それらを変数に分割するために使用されます。

JMeter ログインコントローラーの下にCSVデータセット設定が選択されたテストプランツリーとHTTPリクエストのデフォルト設定

これはCSVデータの例です。これは、対象のウェブサイトにログインする際に使用するユーザー名とパスワードを含むテキストファイルです。

テキストファイルcsv_data.txtには、ユーザー名、パスワード、およびクッキーの長さの値がカンマ区切りで4行格納されています。

HTTPクッキーマネージャー

例でこれを理解しましょう。

ブラウザを使用しました (FirefoxChromeなど)で閲覧する www.google.com.

ユーザー名とパスワードを入力してログインしてください。

ユーザー名とパスワードは、クッキーとしてコンピュータに保存されます。

次回ご来店の際は www.google.com再度ログインする必要はありません。ブラウザがユーザーデータとしてCookieを使用してログインするからです。

HTTP Cookie Managerは、ウェブブラウザと同様の機能を備えています。HTTPリクエストを送信し、そのレスポンスにCookieが含まれている場合、Cookie ManagerはそのCookieを自動的に保存し、その特定のウェブサイトへの以降のすべてのリクエストに使用します。

HTTP リクエストのデフォルト

この要素を使用すると、HTTP リクエスト コントローラーが使用するデフォルト値を設定できます。

たとえば、

あなたはサーバーgoogle.comに100件のHTTPリクエストを送信しています。

100件のリクエストすべてに対して、サーバー名「google.com」を手動で入力する必要があります。

代わりに、以下に示すように、「サーバー名またはIP」フィールドにgoogle.comを設定した単一のHTTPリクエストデフォルト要素を追加することもできます。

HTTPリクエストのデフォルト設定パネル(サーバー名:google.com、ポート番号:80、接続タイムアウトおよび応答タイムアウト設定)

100回も入力する必要はありません。この要素についてはチュートリアルで詳しく説明します。 JMeter 性能試験.

ログイン構成要素

ログイン設定要素を使用すると、サンプラーのユーザー名とパスワードの設定を追加または上書きできます。

例えば、あるユーザーがウェブサイトにログインする様子をシミュレートしたいとします。 www.facebook.com ユーザー名とパスワードが必要です。ログイン設定要素を使用すると、このユーザー名とパスワードの設定をユーザーリクエストに追加できます。

ユーザー名として「guru99」と入力され、パスワード欄がマスクされたログイン設定要素パネル

ログイン設定要素とCSVデータセット設定の比較

ログイン構成要素 CSV データセット構成
XNUMX 人のユーザーのログインをシミュレートするために使用されます 複数のユーザーログインをシミュレートするために使用されます。
ログインパラメータ(ユーザー名とパスワード)のみに適しています 多数のパラメータに適しています

これら2つの要素を合わせると、あなたが遭遇するほぼすべての認証シナリオを網羅します。 パフォーマンステストツール 作業。

よくあるご質問

それは伝えます JMeter すべてのスレッドが起動するまでの時間。100秒の起動時間を持つ10個のスレッドは、10秒間隔で起動します。起動時間が短すぎるとサーバーに負荷がかかり、実際のユーザーが引き起こすことのない障害が発生します。

タイマーはリクエスト間に一時停止を挿入することで、シミュレーションされた負荷が洪水のような状態ではなく、実際のブラウジングに近いものになるようにします。アサーションは各レスポンスをチェックし、ステータスコード、テキスト、または期間が指定した値と一致しない場合は、サンプルを失敗とマークします。

これらはリクエストをグループ化し、その下に分岐させます。ループコントローラは子プロセスを繰り返し実行し、イフコントローラは条件に基づいて子プロセスを実行し、トランザクションコントローラはグループ全体を1つの時間計測ステップとして結果に報告します。

いいえ。View Results Treeなどのリスナーは、すべてのサンプルをバッファリングするため、報告される数値が歪んでしまいます。テストはGUIモード以外で実行し、結果をファイルに書き込んでから、実行が完了したらそのファイルをリスナーに読み込んでください。

設定要素とプリプロセッサが最初に適用され、次にサンプラーが実行され、その後、ポストプロセッサ、アサーション、リスナーが実行されます。スコープも重要です。プランレベルに配置された要素は、その下位にあるすべてのリクエストに適用されます。

これはパターン検出に役立ちます。結果ファイルをアシスタントに渡すと、行を読み込むよりもはるかに速く、最も遅いラベル、エラーのクラスター、応答時間の傾向が明らかになります。行動を起こす前に、必ず元のサンプルと照らし合わせて結果を確認してください。

はい。 Groovy 元のtrac値を設定したり、ペイロードを構築したり、JSR223 要素内に変数を設定したりします。すべての提案を確認してください。多くの場合、非推奨の BeanShell API や変数に頼っているためです。 JMeter 暴露しない。

スレッドグループ1つとサンプラー1つ。その他はすべてオプションです。実際には、結果を表示するためにリスナーが追加され、リクエスト間で同じ値が繰り返し出現し始めたら、デフォルト値またはデータファイルが追加されます。