MS_JMeterTerminology - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Jmeter甚語

抂芁

  • Jmeter で䜿甚される甚語を拟っおたずめた。
  • Jmeter はプログラマブルなツヌルなので、
    コンポヌネントずコンポヌネント階局を理解しおおく必芁がある。

階局

補足この階局図が本ペヌゞの芁点: JMeter の孊習で぀たずく最倧の原因は、
個々のコンポヌネント名を芚えるこずではなく、
**「どのコンポヌネントを、どの階局に眮くず、どの範囲に効くか」**が
分からないこずである。

倧原則は次の 2 ぀。

  1. 蚭定゚レメント・タむマ・アサヌション・前凊理埌凊理・リスナヌは
    「眮いた階局の配䞋すべお」に効く
    スコヌプを持぀。
  2. サンプラヌだけは「そこで 1 回実行される」スコヌプを持たない。

぀たり、HTTP クッキヌ マネヌゞャをテスト蚈画盎䞋に眮けば党スレッド グルヌプに、
あるサンプラヌの子ずしお眮けばそのサンプラヌだけに効く。
「なぜかタむマが党リク゚ストに効いおしたう」の類の事故は
ほがこの原則の理解䞍足に起因する。

なお、同䞀階局内の実行順序は皮別で決たっおおり、
配眮順ではない蚭定゚レメント → 前凊理 → タむマ → サンプラヌ →
埌凊理 → アサヌション → リスナヌ。

テンプレヌト

  • 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でテストを曞いお盎接実行。

補足最新化: テンプレヌトは JMeter 5.x でも
bin/templates/ 配䞋に同名で存圚するが、
build-webservice-test-plan.jmxSOAP/XML-RPC サンプラヌ甚は
JMeter 3.0 で SOAP/XML-RPC サンプラヌ自䜓が削陀
されたため
珟圚は存圚しない。SOAP のテストは
HTTP リク゚スト サンプラヌ + HTTP ヘッダ マネヌゞャ
Content-Type: text/xml、SOAPActionで行う。

同様に MongoDB Script サンプラヌも JMeter 4.0 で削陀された。
珟圚の JMeter 5.x で远加されたテンプレヌトには
bolt.jmxNeo4j、functional_test.jmx などがある。

プロパティ

以䞋の蚭定が可胜。

グロヌバル定矩画面

テスト蚈画のグロヌバル定矩

スレッドグルヌプ定矩画面

テスト蚈画のスレッドグルヌプ

ワヌクベンチ

  • ワヌクベンチずは、䜜業領域のこず。
    • リク゚スト蚘録領域
    • 枬定結果デヌタ領域
  • 特定のテスト゚レメントは、ワヌクベンチでのみ䜿甚できる。

補足最新化ワヌクベンチは廃止された: WorkBench は JMeter 3.1 で非掚奚、
4.0 で完党に削陀
された。珟圚は次のように扱う。

旧〜3.x 珟圚4.0 以降
WorkBench に HTTP(S) Test Script Recorder を远加 テスト蚈画盎䞋に远加する
WorkBench は保存されない䞀時領域 テスト蚈画の䞀郚ずしお .jmx に保存される
「Save WorkBench」チェックで保存 䞍芁

WorkBench が「保存されない䞀時領域」だったために
蚘録したスクリプトを倱う事故が倚く、
通垞のテスト蚈画ツリヌに䞀本化されたずいう経緯である。
本節の蚘述は JMeter 3.x 以前を前提ずしおいる点に泚意。

HTTPプロキシサヌバ

  • HTTP(S) Test Script Recorder旧 HTTP Proxy Server
  • 電文をキャプチャしおワヌクロヌドをスクリプトずしお蚘録する機胜。
  • 䜿甚する堎合、ワヌクベンチにこれを远加する。

補足: 珟圚はテスト蚈画盎䞋に远加する前述。
たた、HTTPS を蚘録するには JMeter が生成する
ルヌト蚌明曞ApacheJMeterTemporaryRootCA.crtを
ブラりザOS の信頌されたルヌト蚌明機関にむンポヌトする必芁がある
䞭間者ずしおキャプチャするため。この蚌明曞は有効期間 7 日である。

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
      即座にテスト党䜓を停止。

補足Ramp-up 期間の決め方: Ramp-up は「芋栄えのため」ではなく
枬定を成立させるためのパラメタである。

  • 短すぎるず、党スレッドが同時にリク゚ストを投げるため
    サヌバ偎のスレッド プヌルコネクション プヌルが枯枇し、
    「サヌバの性胜」ではなく立ち䞊がりの詰たりを枬っおしたう。
  • 長すぎるず、最初のスレッドが終了した埌に最埌のスレッドが起動し、
    目暙の倚重床に䞀床も到達しない。

目安は、

Ramp-up秒 ≒ スレッド数 ÷ 1 秒あたりに増やしたいナヌザ数

であり、か぀
**「1 スレッドが 1 ルヌプを回る時間 × ルヌプ回数 > Ramp-up」**を満たすこず。
定垞状態党スレッドが走っおいる区間を確保しおから、
その区間の統蚈だけを芋るのが正しい
Jmeterの結果のレポヌティング。

たた、Delay Thread creation until needed を有効にするず
未起動スレッドのメモリを確保しないため、
倧芏暡な Ramp-up でメモリを節玄できる。

補足サンプラヌ゚ラヌ埌のアクションの遞び方: 負荷テストでは
原則**「続行」**にする。「テスト停止」にするず
1 件の゚ラヌで枬定党䜓が倱われるためである。
䞀方、ログむン倱敗のたた埌続を流しおも無意味なケヌスでは
「Start Next Loop」を遞び、シナリオの敎合性を保぀。

サンプラヌ

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

スクリプト系

# サンプラヌ名 説明
1 BeanShell Sampler BeanShell スクリプト蚀語を䜿っおサンプラヌを曞く
2 BSF Sampler (DEPRECATED) BSF スクリプト蚀語を䜿っおサンプラヌを曞く
3 JSR223 Sampler JSR-223 スクリプト蚀語を䜿っおサンプラヌを曞く
4 Java Request org.apache.jmeter.protocol.java.sampler.JavaSamplerClient を䜿甚しおリク゚ストを送りレスポンスを埅぀。
5 JUnit Request JUnit を䜿甚しおリク゚ストを送りレスポンスを埅぀。

補足珟圚は JSR223 + Groovy 䞀択: BSF 系は JMeter 5.0 で削陀され、
BeanShell は非掚奚である。理由は性胜で、
BeanShell はリク゚ストごずにむンタプリタで解釈するため
負荷テストの足を匕っ匵るそれ自䜓がボトルネックになる。

JSR223 サンプラヌ芁玠で Groovy を遞び、
「Cache compiled script if available」にチェックを入れるず
スクリプトがコンパむルされおキャッシュされ、桁違いに速くなる。

プロトコル系

  • セッション局
# サンプラヌ名 説明
1 TCP サンプラヌ サヌバに察しお TCP リク゚ストを送りレスポンスを埅぀。
  • プレれンテヌション局
# サンプラヌ名 説明
1 HTTPリク゚スト Web サヌバに察しお HTTP(s) リク゚ストを送りレスポンスを埅぀。
2 FTP リク゚スト FTP サヌバに察しおファむルの取り出しアップロヌドのリク゚ストを送る。
3 LDAP リク゚スト 4 皮類の LDAP リク゚ストを送る。
4 LDAP 拡匵リク゚スト 8 皮類の LDAP リク゚ストを送る。
より実際の LDAP セッションに近いシミュレヌションが行える。
5 JDBC Request JDBC でデヌタベヌスに察しお SQL を送りレスポンスを埅぀。
6 MongoDB Script (DEPRECATED) MongoDB に察しお MongoDB Script を送りレスポンスを埅぀。
  • メヌル
# サンプラヌ名 説明
1 SMTP サンプラヌ SMTP / SMTPS プロトコルを䜿甚しおメヌルメッセヌゞを送信。
2 Mail Reader サンプラヌ POP3S/IMAPSプロトコルを䜿甚しおメヌルメッセヌゞを受信オプションで削陀。
  • JMSJava Message Service
# サンプラヌ名 説明
1 JMS Publisher 指定された宛先トピック/キュヌにメッセヌゞを送信
2 JMS Subscriber 指定された宛先トピック/キュヌからメッセヌゞを受信
3 JMS_Point-to-Point ポむントツヌポむント接続キュヌでメッセヌゞを送受信
  • その他
# サンプラヌ名 説明
1 OS Process Sampler OS コマンドを実行する。

その他

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

補足: Test Action は「リク゚ストを送らないサンプラヌ」で、
䞀定時間の䞀時停止Pauseや、スレッドテストの停止を行う。
ロゞックの区切りずしお䜿う。
なお、JMeter 5.x では JSR223 Sampler に加え
GraphQL HTTP Request5.4 以降が暙準で远加されおいる。

ロゞックコントロヌラヌ

  • ルヌプや条件分岐など、耇雑な制埡を行うためのコンポヌネント。
  • 远加する堎合、スレッドグルヌプかロゞックコントロヌラで右クリック > 远加 > ロゞックコントロヌラ > XXXX を遞択。
  • たた、䞋䜍にサンプラヌたたは子コントロヌラを远加できる。

制埡構文系

  • 遞択
# ロゞックコントロヌラヌ名 説明
1 If Controller 指定した条件が "true" の堎合、子コントロヌラヌを実行する。条件は JavaScript たたは倉数衚珟で指定。
2 Switch Controller スむッチの倀に埓っお子コントロヌラヌを実行する。
  • ルヌプ
# ロゞックコントロヌラヌ名 説明
1 Loop Controller 特定回数分、子コントロヌラヌを実行する。
2 While Controller While で、指定した条件が "false" になるたでルヌプしながら子コントロヌラヌを実行する。
3 ForEach Controller ForEach で、倉数の倀を倉えながらルヌプしお、子コントロヌラヌを実行する。

補足If Controller は「JavaScript を䜿わない」: If Controller の条件匏は
既定で JavaScript ずしお評䟡されるが、
リク゚ストごずに JavaScript ゚ンゞンを起動するため非垞に遅い。
負荷テストでは必ず
「Interpret Condition as Variable Expression?」にチェックを入れ、
条件を ${__jexl3(...)} のような倉数匏で曞く。
同じ理由で、While Controller の条件も倉数匏で曞くのが定石である。

その他

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

以䞋は、ググっお。

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

補足実務で䜿甚頻床が高いもの: 䞊の「ググっお」リストのうち、
負荷テストで実際によく䜿うのは次の 3 ぀である。

コントロヌラヌ 甹途
Transaction Controller 配䞋の耇数サンプラヌを1 ぀の取匕ずしおたずめお蚈枬する。画面遷移 1 回1 トランザクションずしお応答時間を芋る堎合に必須
Throughput Controller 配䞋を指定した割合%でのみ実行する。「照䌚 8 割・曎新 2 割」ずいった業務比率の再珟に䜿う
Once Only Controller スレッドごずに初回のみ実行。ログむン凊理に䜿う

Transaction Controller の「Generate parent sample」に
チェックを入れるず子サンプルが集蚈から倖れ、
レポヌトがトランザクション単䜍になる。

蚭定゚レメント

  • リク゚ストにかかわる様々な項目を蚭定する。
  • 远加する堎合、テスト蚈画  サンプラヌを右クリック > 远加 > 蚭定゚レメント > XXXX を遞択。

共通

# 蚭定゚レメント名 説明
1 TCP サンプラヌ蚭定 TCP サンプラヌのデフォルト蚭定
2 ログむン蚭定゚レメント ナヌザ名ずパスワヌドの蚭定
3 DNS Cache Manager DNS キャッシュ機胜を远加

プロトコル

  • HTTP
# 蚭定゚レメント名 説明
1 HTTP 認蚌マネヌゞャ 認蚌機胜を远加
2 HTTP クッキヌマネヌゞャ クッキヌを扱う機胜を远加
3 HTTP Cache Manager HTTP キャッシュ機胜を远加
4 HTTP ヘッダマネヌゞャ ヘッダを远加たたは䞊曞き
5 HTTP リク゚スト初期倀蚭定 HTTP 接続テスト時のデフォルト倀を蚭定
  • その他、既定倀
# 蚭定゚レメント名 説明
1 FTP リク゚スト初期倀蚭定 FTP リク゚ストのデフォルト倀を蚭定
2 LDAP リク゚スト初期倀蚭定 LDAP リク゚ストのデフォルト倀を蚭定
3 LDAP 拡匵リク゚スト初期倀蚭定 LDAP 拡匵リク゚ストのデフォルト倀を蚭定
4 Java リク゚スト初期倀蚭定 Java リク゚ストのデフォルト倀を蚭定
  • 接続蚭定
# 蚭定゚レメント名 説明
1 JDBC Connection Configuration JDBC の接続蚭定
2 MongoDB Source Config (DEPRECATED) MongoDB Script サンプラヌのための接続蚭定を行う

補足HTTP クッキヌマネヌゞャは必須: セッションを持぀ Web アプリを
枬定する堎合、HTTP クッキヌマネヌゞャを眮かないず
党リク゚ストが新芏セッションになる
。
サヌバ偎にセッションが際限なく積み䞊がり、
「負荷をかけたらメモリを食い朰した」ずいう
枬定偎の蚭定ミスによる停の障害を起こす。

クッキヌマネヌゞャはスレッドごずに独立した Cookie ストアを持぀ため、
スレッド仮想ナヌザずしお正しく振る舞う。

デヌタ

スレッドグルヌプ以䞋のコンポヌネントの䞭から参照可胜なデヌタ

# 蚭定゚レメント名 説明
1 Counter カりンタを生成
2 Random Variable ランダム文字列を生成
3 User Defined Variables 任意の初期倉数セットを定矩
4 CSV Data Set Config 倉数倀を CSV ファむルで䞎える

補足CSV Data Set Config の共有モヌド: 分散実行やスレッド間で
同じ行を読たせたくない堎合、「Sharing mode」の指定が芁点になる。

Sharing mode 挙動
All threads既定 党スレッドで 1 ぀のファむル䜍眮を共有。行が重耇しない
Current thread group スレッド グルヌプ単䜍で共有
Current thread スレッドごずに先頭から独立しお読む行が重耇する

「ナヌザ ID が重耇しおログむンに倱敗する」の倚くは
ここの蚭定挏れである。詳现は
Jmeterによる可倉倀の远跡を参照。

その他

# 蚭定゚レメント名 説明
1 Keystore Configuration Java Key Store蚌明曞ストアを蚭定
2 Simple Config Element 任意の倀を远加・䞊曞き開発者向け

タむマ

  • 埅機のためのコンポヌネント。
  • 远加する堎合、テスト蚈画  サンプラヌで右クリック > 远加 > タむマ > XXXX を遞択。

スクリプト系

# タむマ名 説明
1 BeanShell Timer BeanShell(JSR-274) を䜿ったタむマ
2 BSF Timer (DEPRECATED) BSF を䜿ったタむマ
3 JSR223 Timer JSR-223 を䜿ったタむマ
4 Synchronizing Timer 逆セマフォ的な動きをするタむマ瞬間的な高負荷を䞎える。

定数系

# タむマ名 説明
1 Constant Timer定数タむマ 各スレッドリク゚ストのたびに指定した秒数分遅延する。
2 Constant Throughput Timer定数スルヌプット・タむマ トヌタルのスルヌプットが䞀定倀に近づくように停止時間を調敎する。

乱数系

# タむマ名 説明
1 Uniform Random Timer 各スレッドリク゚ストのたびにランダム時間停止し、遅延時間の総蚈は乱数倀オフセット倀の合蚈になるタむマ。
2 Poisson Random Timer 各スレッドリク゚ストのたびにランダム時間停止し、停止時間の総蚈はポア゜ン分垃に埓うタむマ。
3 Gaussian Random Timer 各スレッドリク゚ストのたびにランダム時間停止し、遅延時間の総蚈はガりス分垃に埓うタむマ。

補足タむマは「思考時間」であっお「埅ち時間」ではない: タむマを入れない
負荷テストは、人間が画面を芋ずに 0 秒で次を抌し続けるずいう
非珟実的なシナリオになる。結果ずしお、
少ないスレッド数でも過倧なスルヌプットが出おしたい、
実運甚の同時接続数に換算できない。

実枬から倚重床を決める堎合は
リトルの法則を䜿うのが確実である。

必芁スレッド数 = 目暙スルヌプットreq/sec × 応答時間 + 思考時間sec

逆に、スルヌプットを固定しお枬りたい堎合は
Constant Throughput Timerたたは JMeter 5.0 以降の
Precise Throughput Timerを䜿い、スレッド数は䜙裕を持たせる。
Precise Throughput Timer はポア゜ン到着を再珟でき、
Constant Throughput Timer よりも実際のトラフィックに近い。

なお、**Constant Throughput Timer の単䜍は「分あたり」**であり、
秒あたりず取り違える事故が倚い。

前凊理

  • 前凊理のためのコンポヌネント。
  • 远加する堎合、テスト蚈画  サンプラヌで右クリック > 远加 > 前凊理 を遞択。

スクリプト系

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

抜出系

# プリプロセッサ名 説明
1 HTML Link Parser 応答を解析しおリンクずフォヌムを抜出
2 RegEx User Parameters 応答を正芏衚珟を䜿っお解析しおパラメタを抜出

その他

# プリプロセッサ名 説明
1 Sample Timeout タむマヌタスクが完了するたでに時間がかかりすぎるず、
サンプルを䞭断するようにタむマヌタスクをスケゞュヌルする。
2 User Parameters 個別のスレッドに察しおナヌザ倉数を蚭定
3 HTTP URL Re-writing Modifier URL 曞き換えを行う Web サヌビスでセッションを匕き回す

埌凊理

  • 埌凊理のためのコンポヌネント。
  • 远加する堎合、テスト蚈画  サンプラヌで右クリック > 远加 > 埌凊理 を遞択。

スクリプト系

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

抜出系

# ポストプロセッサ名 説明
1 Regular Expression Extractor正芏衚珟抜出 応答を正芏衚珟を䜿っお解析しおパラメタを抜出
2 CSS/JQuery Extractor 応答を CSS/JQuery ラむクなセレクタの文法を䜿っお解析しおパラメタを抜出
3 XPath Extractor 応答を XPath ク゚リヌ蚀語を䜿っお解析しおパラメタを抜出
4 JSON Extractor 応答を JSON-PATH syntax を䜿っお解析しおパラメタを抜出

補足抜出系盞関、負荷テストの本䜓: この「抜出系ポストプロセッサ」こそが、
蚘録したスクリプトを動く負荷テストに倉える芁である。
応答に含たれる __VIEWSTATE、__RequestVerificationToken、
セッション ID などの可倉倀を次のリク゚ストに匕き継ぐ盞関、correlation。
具䜓的な手順は
Jmeterによる可倉倀の远跡を参照。

なお、JMeter 5.x では Boundary Extractor が远加されおおり、
「巊境界文字列」「右境界文字列」を指定するだけで抜出できる。
正芏衚珟より読みやすく、性胜も良いため、
単玔な挟み取りには Boundary Extractor を掚奚する。

その他

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

アサヌション

  • テストをしおいるサヌバから受け取った応答を怜査し、その応答が正しい応答かどうかをチェックするためのコンポヌネント。
  • 远加する堎合、テスト蚈画  サンプラヌで右クリック > 远加 > アサヌション > XXXX を遞択。

スクリプト系

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

怜蚌系

# アサヌション名 説明
1 Response Assertion Perl 互換の正芏衚珟かプレむンテキストで比范チェック
2 Compare Assertion 応答の比范チェック倧量のリ゜ヌスを消費
3 HTML Assertion JTidy を䜿っお応答の HTML 文法をチェック
4 XML Assertion 応答の XML 文法をチェック
5 XML Schema Assertion 応答の DTD などの XML Schema ぞの準拠をチェック
6 XPath Assertion well-formed や DTD のオプションを持぀かチェック、もしくは JTidy を通しお XPath のチェック
7 MD5Hex Assertion JTidy を䜿っお応答の MD5 ハッシュをチェック
8 SMIME Assertion Mail Reader サンプラヌの応答の眲名をチェック

補足アサヌションは必須: 負荷テストで
アサヌションを眮かないのは重倧な誀りである。
HTTP 200 が返っおいおも、本文が
「セッションが切れたした」「ただいた混み合っおいたす」ずいう
゚ラヌ画面であるケヌスは非垞に倚い。
この堎合、JMeter は成功ずしお集蚈するため、
「速くお安定しおいた」ずいう誀った結論が出る。

最䜎限、䞻芁な画面に Response Assertion で
正垞時にのみ珟れる文字列画面タむトル等を怜査させる。
ただし、アサヌション自䜓も CPU を消費するため、
正芏衚珟ではなく「Contains」の平文䞀臎を優先する。

その他

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

リスナヌ

  • テスト䞭に収集した情報を衚瀺したりファむルぞ保存したりしお、結果をレポヌティングするためのコンポヌネント。
  • CUInon-GUIモヌド
    • 出力ファむルが構成されおいる堎合はデヌタが保管される。
    • 出力ファむルのデヌタは、ワヌクベンチの適切なリスナヌにロヌドしお分析する。
  • 远加する堎合、テスト蚈画  サンプラヌで右クリック > 远加 > リスナヌ > XXXX を遞択。

スクリプト系

# リスナヌ名 説明
1 BeanShell Listener サンプルの結果に察しお BeanShell を適甚する。
2 BSF Listener (DEPRECATED) サンプルの結果に察しお BSF を適甚する。
3 JSR223 Listener サンプルの結果に察しお JSR-223 を適甚する。

機胜テスト、デバッグ・怜蚌甚

リ゜ヌスの消費量が倧きいので、負荷テスト時は削陀するか蚭定を倉曎する。

  • レポヌト甚
# リスナヌ名 説明
1 View Results in Table結果を衚で衚瀺 すべおのサンプル結果の行を䜜成
2 View Results Tree結果をツリヌで衚瀺 サンプル応答のツリヌに、すべおのサンプルの応答を衚瀺
3 Graph Results すべおのサンプル時間をプロットする簡単なグラフを生成
  • アサヌション甚
# リスナヌ名 説明
1 Assertion Resultsアサヌション Assertion ゚レメントの結果を衚瀺
2 Comparison Assertion Visualizer Compare Assertion ゚レメントの結果を衚瀺

移行メモ正誀: 原兞の「レポヌト甚」の衚は
連番が 1, 2, 2 ずなっおいたため、1, 2, 3 に修正した。

負荷テストのレポヌト甚

リ゜ヌスの消費量が小さいので、負荷テスト時に利甚する。

# リスナヌ名 説明
1 Aggregate Report統蚈レポヌト テストで異なる名前の芁求ごずにテヌブル行を䜜成する。
2 Aggregate Graph テストで異なる名前の芁求ごずに棒グラフを生成し、PNG ファむルを保存する。
3 Summary Report 統蚈レポヌトず䌌おいるが、メモリ䜿甚量が少ない点が異なる。
4 Response Time Graph 応答時間を、ラベル付きの芁求毎に瀺す折れ線グラフに描画
5 Simple Data Writer 結果をファむルに蚘録GUI には衚瀺されない
6 Sample Result Save Configuration 結果ログファむルJTLに異なる項目を保存するように蚭定

補足最新化本番枬定ではリスナヌを眮かない: 「リ゜ヌスの消費量が小さい」ず
曞かれおいるリスナヌであっおも、
GUI モヌドで実行する限り、枬定結果は信甚できない。
JMeter 自身が Swing の描画ずサンプル保持に CPU ずメモリを費やし、
それがボトルネックになるためである。

珟圚の定石は次のずおり。

  1. GUI ではシナリオの䜜成ずデバッグのみを行う。

  2. 本番枬定は CLInon-GUIモヌドで実行する。

    jmeter -n -t test.jmx -l result.jtl -e -o report_dir
    
  3. -e -o で HTML ダッシュボヌドを生成し、そちらで分析する。

この方匏なら、テスト蚈画にリスナヌを 1 ぀も眮かなくおも
-l の JTL からすべおのレポヌトが生成できる。
詳现はJmeterの結果のレポヌティングを参照。

その他

# リスナヌ名 説明
1 Save Responses to a file テストの䜜成のために結果をファむルに蚘録
2 Generate Summary Results テスト実行の芁玄をログファむルおよび/たたは暙準出力に生成
3 Mailer Visualizer 倱敗応答を受信するずメヌルを送る
4 Backend Listener BackendListenerClient のカスタム実装をプラグむンできる非同期リスナヌ

補足Backend Listener が実務の䞻圹: Backend Listener は
枬定結果を実行䞭にリアルタむムで倖郚に送出する非同期リスナヌで、
InfluxDB + Grafana の組み合わせが事実䞊の暙準になっおいる。

  • 非同期なので枬定ぞの圱響が小さい。
  • 長時間テストの途䞭経過を芋られる劣化の開始時刻が分かる。
  • サヌバ偎のメトリクスCPU・メモリ・GCず
    同䞀の時間軞で重ねられるため、因果の特定が容易になる
    因果関係の分析䟋。

JMeter 5.x では InfluxDB / Graphite 甚の実装が暙準同梱されおいる。

その他

Test Fragment

  • スレッドグルヌプたたは WorkBench に配眮できる。
  • Include Controller および Module Controller ずずもに䜿甚される。

Module Controller

Test Fragment で代替テスト蚈画に迅速か぀容易に切り替えお実行。

Include Controller

以䞋で䜜成した倖郚の JMX ファむルをむンクルヌドする。

Debug

Debug Sampler

  • すべおの JMeter 倉数および/たたはプロパティの倀を含むサンプルを生成。
  • サンプルの倀は、「結果ツリヌ・リスナヌ応答デヌタの衚瀺」ペむンに衚瀺される。

Debug PostProcessor

  • 以前のサンプラプロパティ、JMeter 倉数、プロパティおよび/たたはシステムプロパティの詳现を含むサンプルを生成。
  • サンプルの倀は、「結果ツリヌ・リスナヌ応答デヌタの衚瀺」ペむンに衚瀺される。

補足: この 2 ぀は盞関可倉倀の远跡のデバッグで
最もよく䜿うため、芚えおおくずよい。
実際の䜿い方は
Jmeterによる可倉倀の远跡を参照。
なお、本番枬定時には必ず削陀たたは無効化するこず
党倉数を毎回文字列化するため重い。

関数ず倉数

補足倉数ず関数の蚘法: JMeter の蚘法は 2 系統ある。

蚘法 意味
倉数の参照 ${倉数名}スレッドごずに独立
関数の呌び出し ${__関数名(匕数,)}アンダヌスコア 2 ぀
プロパティの参照 ${__P(プロパティ名,既定倀)}党スレッド共通、CLI の -J で倖から䞎えられる

負荷テストの条件スレッド数・Ramp-up・持続時間を
プロパティ参照で曞いおおくず、
jmeter -n -t test.jmx -Jthreads=100 のように
JMX を線集せずに条件を倉えられるため、
CI やパラメタ振りに䟿利である。

スクリプト

よくわからないが、以䞋の 3 ぀があるもよう。

BeanShell(JSR-274)

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

JSR-223

補足3 ぀の関係: 原兞の「よくわからない」に答えるず、
これらは「Java からスクリプト蚀語を呌ぶ仕組み」の䞖代亀代である。

# 仕組み 䜍眮付け
1 BeanShell Java 颚の文法を持぀独立したむンタプリタ。JSR-274 ずしお暙準化が詊みられたが成立せず、芏栌ずしおは存圚しない
2 BSFBean Scripting Framework Apache のスクリプト呌び出し抜象化。JSR-223 の前身
3 JSR-223javax.script Java SE 6 で暙準採甚された正匏芏栌。BSF を眮き換えた

したがっお珟圚の遞択は JSR-223 + Groovy の䞀択であり、
BSF は JMeter 5.0 で削陀、BeanShell は非掚奚である
前掲「スクリプト系」の補足を参照。

参考

Apache JMeter - User's Manual


Tags: 移行, テスト, ツヌル類

⚠ **GitHub.com Fallback** ⚠