その他

【 JMeterはこう見ろ! 】JMeterの理解を爆速で深める方法

その他
この記事は約3分で読めます。

はじめに

派手にタイトル負けしていると思うので、
その点はご理解いただき読み進めていただきたい。

ただ苦しみつつ使ってて気づいたことがあったのでここに記す。

前提

  • MacOS
  • 負荷テストの考え方的なものを深める内容ではない
  • あくまでJMeterのGUIの理屈ではなく概念を理解することに特化
  • 具体的な見方や使い方を記載したものではない
  • 全体的な捉え方に特化
  • 何らかのプログラミング言語の経験は必須 

1. JMeterでやること

JMeterでやることは至ってシンプル。
シナリオを作って実行する
この一点だけ。

じゃあこのシナリオっていうのが何なのか。
では一例として、いくつかWhatを投げかけてみる。

  • シナリオとは?
    →負荷のテストケースのこと
  • 負荷のテストケースとは?
    →仮定のユーザー操作
  • 仮定のユーザー操作とは?
    →APIリクエストの動きの再現

つまりシナリオとは
「ユーザーがとある操作をした時のAPIリクエストの動きを再現したもの」
みたいな感じ。

このシナリオに対して、
ユーザー数いくつ分とか、何回ループするかを決めて実行する。

2. 問題点

ではシナリオをどのように表現するか。
ここがJMeterを使う上で最大の問題だろう。

例として以下のシナリオを作りたいとする。

  • 使うAPIリクエストは4つ[ A, B, C, D ]
    • Aは、5秒毎にリクエストされる
    • Bは、Aがリクエストされ始めてから10分後からリクエストされる
    • Cは、Aがリクエストされ始めてから20分後からリクエストされる
    • Dは、Aと同じく5秒毎にリクエストされる

さてこれだけ聞いてどうだろう?
「したいことは分かるけど、それをJMeterでどうやって書くねん!?」
と、そういうことになる。
 

そして、触ってみたものの…

となる。
 
 
 
 
 
 
 

で、実際に書いて見たら以下のような形になった。

ん〜〜〜どっかで見たことあるような…

3. ここで見た

そう、私はここで見た。

const obj = {
  x: 100,
  y: 500,
  z: 1000,
}
let count = 0

const func1 = () => {
  apiAction("A")
  console.log("結果")
  if (count => 10) {
    apiAction("B")
    console.log("結果")
  }
  if (count >= 20) {
    apiAction("C")
    console.log("結果")
  }
  count++
}

const func2 = () => {
  apiAction("D")
}

私は、普段からお付き合いのある
JavaScript(React)さんの面影を見たのだった。

ということは、、、
 

結論

JMeterは、普段から使っている言語の書き方のような形で書くことができる
ということではないかと私は仮定し、その後実践したところ、
ある程度、想うようなシナリオを書くことができた。

※全ての言語と似ているかを検証したわけではない

まだ日は浅いので、何とも言えんが
とりあえずの指針にはなりそうだ。