はじめに
派手にタイトル負けしていると思うので、
その点はご理解いただき読み進めていただきたい。
ただ苦しみつつ使ってて気づいたことがあったのでここに記す。
前提
- 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は、普段から使っている言語の書き方のような形で書くことができる
ということではないかと私は仮定し、その後実践したところ、
ある程度、想うようなシナリオを書くことができた。
※全ての言語と似ているかを検証したわけではない
まだ日は浅いので、何とも言えんが
とりあえずの指針にはなりそうだ。