マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • Jmeterで使用される用語を拾ってまとめた。
  • Jmeterはプログラマブルなツールなので、
    コンポーネントとコンポーネント階層を理解しておく必要がある。
階層

テンプレート

  • Visual Studio的に言うとプロジェクト・テンプレート的なもの。
  • これを開いて、負荷テストを新規作成する。

テンプレートの種類

以下のようなテンプレートが存在する。

Web サーバ

  • build-web-test-plan.jmx
    比較的単純な負荷テスト
  • build-adv-web-test-plan.jmx
    ログイン処理等を含む、やや複雑な負荷テスト
  • build-webservice-test-plan.jmx
    SOAP を使った 負荷テスト

FTP サーバ

  • build-ftp-test-plan.jmx
    比較的単純な負荷テスト

LDAP サーバ

  • build-ldap-ext-test-plan.jmx
    比較的単純な負荷テスト
  • build-ldap-test-plan.jmx
    ループコントローラ利用した負荷テスト

ストレージ

  • jdbc.jmx
    PostgreSQL に対する JDBC 経由の負荷テスト
  • mongodb.jmx
    JSR233を使った mongodb に対する負荷テスト

その他

  • recording.jmx
    記録コントローラ(ユーザの操作を記録してテスト計画を自動作成する) 利用時テンプレート
  • BeanShellSampler?.jmx
    Jmeter用の軽量スクリプト言語(BeanShell?)でテストを書いて直接実行。

プロパティ

以下の設定が可能。

グローバル定義画面

テスト計画のグローバル定義

スレッドグループ定義画面

テスト計画のスレッドグループ

ワークベンチ

  • ワークベンチとは、作業領域のこと。
    • リクエスト記録領域
    • 測定結果データ領域
  • 特定のテストエレメントは、ワークベンチでのみ使用できる。

HTTPプロキシサーバ

  • HTTP(S) Test Script Recorder (旧 HTTP Proxy Server)
  • 電文をキャプチャしてワークロードをスクリプトとして記録する機能。
  • 使用する場合、ワークベンチにこれを追加する。

HTTP Mirror Server

  • 送信されたデータを単にミラーリングする非常に単純なHTTPサーバー。
  • HTTP要求の内容をチェックするのに便利。

Property Display

SystemプロパティまたはJMeterプロパティの値が表示される。

テスト計画

  • 負荷テストの実行計画を設定するもの。
  • 以下のプロパティ設定や、コンポーネント追加ができる。

Threads(Users)

  • スレッドグループ(仮想ユーザ群)
  • 追加する場合、テスト計画で右クリック > 追加 > Threads(Users) > XXXXを選択。

Threads(Users)の種類

以下の3種類のThreads(Users)がある。

  • スレッドグループ
    通常のスレッドグループ
  • setUp Thread Group
    テスト前のアクションを実行するスレッドグループ。
    • 通常のスレッドグループとほぼ同じ。
    • 通常のスレッドグループの実行前に実行される。
  • tearDown Thread Group
    テスト後のアクションを実行するスレッドグループ。
    • 通常のスレッドグループとほぼ同じ。
    • 通常のスレッドグループの実行後に実行される。

プロパティ

以下のプロパティを設定。

  • 名前
    スレッドグループの名前(IDではない)。
  • コメント
    スレッドグループの説明
  • スレッド数
    起動するスレッド数 ≒ 仮想ユーザ数
  • Delay Thread creation until needed
    スレッドが必要になったタイミングで生成するオプション。
  • ループ回数
    • テスト・シナリオの実行回数
    • [無限ループ]にチェックを入れると無限にテスト
  • Ramp-up期間(秒で指定)
    多重度(仮想ユーザ数)を徐々に増加させるためのパラメタ。
  • スケジューラ
  • 開始時刻
    スケジューラが有効の場合、この時刻が来るまでテストの実施を待つ。
    ただし後述の起動遅延の指定があれば、そちらが優先される。
  • 終了時刻
    スケジューラが有効の場合、この時刻までテストが行われる。
  • 持続時間
    テストをこの時間だけ実行する
  • 起動遅延
    この秒数だけテストの実行を遅延する
  • 終了条件
    Jmeterのスレッドが終了する契機が、
    以下の終了条件のうち、いずれか達成の早いものになる。
    条件チェックは各サンプル間でのみ行われる。
    • 指定のループ回数に達した時
    • 終了時刻に達した時
    • 持続時間に達した時
  • サンプラーエラー後のアクション
    サーバがエラーを返してきた場合など、
    リクエストが何らかの原因でエラーになった際どうするかを選択する。
  • 続行
    エラーを無視してテストを続行
  • Start Next Loop
    エラーを無視して次のループの最初から続行
  • スレッド停止
    現在のスレッドを終了
  • テスト停止
    いずれかのサンプルの終了をもってテスト全体が停止
  • Stop Test Now
    即座にテスト全体を停止。

サンプラー

  • サーバなどのテスト対象に対し、何らかの指示やリクエストを行うためのコンポーネント。
  • サンプラーにより負荷テスト結果が収集され、 この結果はリスナーにより参照できる。
  • 追加する場合、スレッドグループかロジックコントローラで右クリック > 追加 > サンプラー > XXXXを選択。
  • 様々なサンプラーがある。
    • Webサーバのテストであれば、「HTTPリクエスト」を選択する。
    • XXXサーバのテストであれば、「XXXXリクエスト」を選択する。

スクリプト系

#サンプラー名説明
1BeanShell? SamplerBeanShell?スクリプト言語を使ってサンプラーを書く
2BSF Sampler (DEPRECATED)BSFスクリプト言語を使ってサンプラーを書く
3JSR223 SamplerJSR-223スクリプト言語を使ってサンプラーを書く
4Java Requestorg.apache.jmeter.protocol.java.sampler.JavaSamplerClient?を使用してリクエストを送りレスポンスを待つ。
5JUnit RequestJUnitを使用してリクエストを送りレスポンスを待つ。

プロトコル系

  • セッション層
    #サンプラー名説明
    1TCP サンプラーサーバに対してTCP リクエストを送りレスポンスを待つ。
  • プレゼンテーション層
    #サンプラー名説明
    1HTTPリクエストWebサーバに対してHTTP(s)リクエストを送りレスポンスを待つ。
    2FTPリクエストFTPサーバに対してファイルの取り出し/アップロードのリクエストを送る。
    3LDAPリクエスト4種類のLDAPリクエストを送る。
    4LDAP拡張リクエスト8種類のLDAPリクエストを送る。
    より実際のLDAPセッションに近いシミュレーションが行える。
    5JDBC RequestJDBCでデータベースに対してSQLを送りレスポンスを待つ。
    6MongoDB Script (DEPRECATED)MongoDBに対してMongoDB Scriptを送りレスポンスを待つ。
  • メール
    #サンプラー名説明
    1SMTP サンプラーSMTP / SMTPSプロトコルを使用してメールメッセージを送信。
    2Mail ReaderサンプラーPOP3(S)/IMAP(S)プロトコルを使用してメールメッセージを受信(オプションで削除)。
  • JMS(Java Message Service)
    #サンプラー名説明
    1JMS Publisher指定された宛先(トピック/キュー)にメッセージを送信
    2JMS Subscriber指定された宛先(トピック/キュー)からメッセージを受信
    3JMS_Point-to-Pointポイントツーポイント接続(キュー)でメッセージを送受信
  • その他
    #サンプラー名説明
    1OS Process SamplerOSコマンドを実行する。

その他

#サンプラー名説明
1Access Log SamplerWebサーバーのアクセスログを読んで HTTP リクエストを生成。
2Test Action・・・
3Debug Sampler・・・

ロジックコントローラー

  • ループや条件分岐など、 複雑な制御を行うためのコンポーネント。
  • 追加する場合、スレッドグループかロジックコントローラで右クリック > 追加 > ロジックコントローラ > XXXXを選択。
  • また、下位にサンプラー(または子コントローラ)を追加できる。

制御構文系

  • 選択
    #ロジックコントローラー名説明
    1If Controller指定した条件が "true"の場合、子コントローラーを実行する。条件は JavaScript または変数表現で指定。
    2Switch Controllerスイッチの値に従って子コントローラーを実行する。
  • ループ
    #ロジックコントローラー名説明
    1Loop Controller特定回数分、子コントローラーを実行する。
    2While ControllerWhileで、指定した条件が "false"になるまでループしながら子コントローラーを実行する。
    3ForEach? ControllerForEach?で、変数の値を変えながらループして、子コントローラーを実行する。

その他

#ロジックコントローラー名説明
1Simple Controllerサンプラー、子コントローラーの整理のため。
2Module Controllerリンク先を参照。
3Include Controllerリンク先を参照。

以下は、ググって。

  • Once Only Controller
  • Interleave Controller
  • Random Controller
  • Random Order Controller
  • Throughput Controller
  • Runtime Controller
  • Transaction Controller
  • Recording Controller
  • Critical Section Controller

設定エレメント

  • リクエストにかかわる様々な項目を設定する。
  • 追加する場合、テスト計画 - サンプラーを右クリック > 追加 > 設定エレメント > XXXXを選択。

共通

#設定エレメント名説明
1TCP サンプラー設定TCP サンプラーのデフォルト設定
2ログイン設定エレメントユーザ名とパスワードの設定
3DNS Cache ManagerDNSキャッシュ機能を追加

プロトコル

  • HTTP
    #設定エレメント名説明
    1HTTP 認証マネージャ認証機能を追加
    2HTTP クッキーマネージャクッキーを扱う機能を追加
    3HTTP Cache ManagerHTTPキャッシュ機能を追加
    4HTTP ヘッダマネージャヘッダを追加または上書き
    5HTTP リクエスト初期値設定HTTP 接続テスト時のデフォルト値を設定
  • その他、既定値
    #設定エレメント名説明
    1FTPリクエスト初期値設定FTPリクエストのデフォルト値を設定
    2LDAPリクエスト初期値設定LDAPリクエストのデフォルト値を設定
    3LDAP拡張リクエスト初期値設定LDAP拡張リクエストのデフォルト値を設定
    4Javaリクエスト初期値設定Javaリクエストのデフォルト値を設定
  • 接続設定
    #設定エレメント名説明
    1JDBC Connection ConfigurationJDBC の接続設定
    2MongoDB Source Config (DEPRECATED)MongoDB Script サンプラーのための接続設定を行う

データ

スレッドグループ以下のコンポーネントの中から参照可能なデータ

#設定エレメント名説明
1Counterカウンタを生成
2Random Variableランダム文字列を生成
3User Defined Variables任意の初期変数セットを定義
4CSV Data Set Config変数値を CSV ファイルで与える

その他

#設定エレメント名説明
1Keystore ConfigurationJava Key Store(証明書ストア)を設定
2Simple Config Element任意の値を追加・上書き(開発者向け)

タイマ

  • 待機のためのコンポーネント。
  • 追加する場合、テスト計画 - サンプラーで右クリック > 追加 > タイマ > XXXX を選択。

スクリプト系

#タイマ名説明
1BeanShell? TimerBeanShell?(JSR-274)を使ったタイマ
2BSF Timer (DEPRECATED)BSFを使ったタイマ
3JSR223 TimerJSR-223を使ったタイマ
4Synchronizing Timer逆セマフォ的な動きをするタイマ(瞬間的な高負荷を与える)。

定数系

#タイマ名説明
1Constant Timer(定数タイマ)各スレッドリクエストのたびに指定した秒数分遅延する。
2Constant Throughput Timer(定数スループット・タイマ)トータルのスループットが一定値に近づくように停止時間を調整する。

乱数系

#タイマ名説明
1Uniform Random Timer各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計は乱数値+オフセット値の合計になるタイマ。
2Poisson Random Timer各スレッドリクエストのたびにランダム時間停止し、停止時間能総計はポアソン分布に従うタイマ。
3Gaussian Random Timer各スレッドリクエストのたびにランダム時間停止し、遅延時間の総計はガウス分布に従うタイマ。

前処理

  • 前処理ためのコンポーネント。
  • 追加する場合、テスト計画 - サンプラーで右クリック > 追加 > 前処理 を選択。

スクリプト系

#プリプロセッサ名説明
1BeanShell? PreProcessor?BeanShell?の前処理を実行
2BSF PreProcessor? (DEPRECATED)BSFの前処理を実行
3JSR223 PreProcessor?JSR-223の前処理を実行
4JDBC PreProcessor?SQLの前処理を実行

抽出系

#プリプロセッサ名説明
1HTML Link Parser応答を解析してリンクとフォームを抽出
2RegEx? User Parameters応答を正規表現を使って解析してパラメタを抽出

その他

#プリプロセッサ名説明
1Sample Timeoutタイマータスクが完了するまでに時間がかかりすぎると、
サンプルを中断するようにタイマータスクをスケジュールする。
2User Parameters個別のスレッドに対してユーザ変数を設定
3HTTP URL Re-writing ModifierURL 書き換えを行うWeb サービスでセッションの引き回す

後処理

  • 後処理ためのコンポーネント。
  • 追加する場合、テスト計画 - サンプラーで右クリック > 追加 > 後処理 を選択。

スクリプト系

#ポストプロセッサ名説明
1BeanShell? PostProcessor?BeanShell?の後処理を実行
2BSF PostProcessor? (DEPRECATED)BSFの後処理を実行
3JSR223 PostProcessor?JSR-223の後処理を実行
4JDBC PostProcessor?SQLの後処理を実行

抽出系

#ポストプロセッサ名説明
1Regular Expression Extractor(正規表現抽出)応答を正規表現を使って解析してパラメタを抽出
2CSS/JQuery Extractor応答をCSS/JQuery ライクなセレクタの文法を使って解析してパラメタを抽出
3XPath Extractor応答をXPath クエリー言語を使って解析してパラメタを抽出
4JSON Extractor応答をJSONをJSON-PATH syntax使って解析してパラメタを抽出

その他

#ポストプロセッサ名説明
1Debug PostProcessor・・・
2Result Status Action Handlerサンプラーが失敗したら、スレッドまたはテスト全体を終了する。

アサーション

  • テストをしているサーバから受け取った応答を検査し、その応答が正しい応答かどうかをチェックするためのコンポーネント。
  • 追加する場合、テスト計画 - サンプラーで右クリック > 追加 > アサーション > XXXXを選択。

スクリプト系

#アサーション名説明
1BeanShell? AssertionBeanShell?でアサーションチェックを実行
2BSF Assertion (DEPRECATED)BSFでアサーションチェックを実行
3JSR223 AssertionJSR-223でアサーションチェックを実行

検証系

#アサーション名説明
1Response AssertionPerl 互換の正規表現かプレインテキストで比較チェック
2Compare Assertion応答の比較チェック(大量のリソースを消費)
3HTML AssertionJTidyを使って応答のHTML文法をチェック
4XML Assertion応答のXML文法をチェック
5XML Schema Assertion応答のDTDなどのXML Schemaへの準拠をチェック
6XPath Assertionwell-formed や DTDのオプションを持つかチェック、もしくは JTidy を通して XPathのチェック
7MD5Hex AssertionJTidyを使って応答のMD5 ハッシュをチェック
8SMIME AssertionMail Readerサンプラーの応答の署名をチェック

その他

#アサーション名説明
1Duration Assertion応答を与えられた時間内に受け取ったかどうかをチェック
2Size Assertion応答のサイズ(バイト数)が正しいか(等しい、より大きい、より小さい、等しくない)をチェック

リスナー

  • テスト中に収集した情報を表示したりファイルへ保存したりして、結果をレポーティングするためのコンポーネント。
  • CUI(non-GUI)モード
    • 出力ファイルが構成されている場合はデータが保管される。
    • 出力ファイルのデータは、ワークベンチの適切なリスナーにロードして分析する。
  • 追加する場合、テスト計画 - サンプラーで右クリック > 追加 > リスナー > XXXXを選択。

スクリプト系

#リスナー名説明
1BeanShell? Listenerサンプルの結果に対して BeanShell?を適用する。
2BSF Listener (DEPRECATED)サンプルの結果に対して BSFを適用する。
3JSR223 Listenerサンプルの結果に対して JSR-223 を適用する。

機能テスト、デバッグ・検証用

リソースの消費量が大きいので、負荷テスト時は削除するか設定を変更する。

  • レポート用
    #リスナー名説明
    1View Results in Table(結果を表で表示)すべてのサンプル結果の行を作成
    2View Results Tree(結果をツリーで表示)サンプル応答のツリーに、すべてのサンプルの応答を表示
    2Graph Resultsすべてのサンプル時間をプロットする簡単なグラフを生成
  • アサーション用
    #リスナー名説明
    1Assertion Results(アサーション)Assertionエレメントの結果を表示
    2Comparison Assertion VisualizerCompare Assertionエレメントの結果を表示

負荷テストのレポート用

リソースの消費量が小さいので、負荷テスト時に利用する。

#リスナー名説明
1Aggregate Report(統計レポート)テストで異なる名前の要求ごとにテーブル行を作成する。
2Aggregate Graphテストで異なる名前の要求ごとに棒グラフを生成し、PNGファイルを保存する。
3Summary Report統計レポートと似ているが、メモリ使用量が少ない点が異なる。
4Response Time Graph応答時間を、ラベル付きの要求毎に示す折れ線グラフに描画
5Simple Data Writer結果をファイルに記録(GUIには表示されない)
6Sample Result Save Configuration結果ログファイル(JTL)に異なる項目を保存するように設定

その他

#リスナー名説明
1Save Responses to a fileテストの作成のために結果をファイルに記録
2Generate Summary Resultsテスト実行の要約をログファイルおよび/または標準出力に生成
3Mailer Visualizer失敗応答を受信するとメールを送る
4Backend ListenerBackendListenerClient?のカスタム実装をプラグインできる非同期リスナー

その他

Test Fragment

  • スレッドグループまたはWorkBench?に配置できる。
  • Include ControllerおよびModule Controllerとともに使用される。

Module Controller

Test Fragmentで代替テスト計画に迅速かつ容易に切り替えて実行。

Include Controller

以下で作成した外部のJMXファイルをインクルードする。

Debug

Debug Sampler

  • すべてのJMeter変数および/またはプロパティの値を含むサンプルを生成。
  • サンプルの値は、「結果ツリー・リスナー応答データの表示」ペインに表示される。

Debug PostProcessor?

  • 以前のサンプラプロパティ、JMeter変数、プロパティおよび/またはシステムプロパティの詳細を含むサンプルを生成。
  • サンプルの値は、「結果ツリー・リスナー応答データの表示」ペインに表示される。

関数と変数

スクリプト

よくわかないが、以下の3つがあるもよう。

BeanShell?(JSR-274)

Bean スクリプト・フレームワーク (BSF)

JSR-223

参考

Apache JMeter - User's Manual


Tags: :テスト, :ツール類


添付ファイル: filehierarchy.png 177件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-04-03 (火) 13:04:31 (531d)