前提環境など
- MacOS
- ファイルから取り込むやり方に特化
- HTTPリクエストのシナリオのみ
1. シナリオ作成
シナリオの前提:
5秒おきにファイルデータを1行ずつbodyに渡してをリクエストするテスト
- スレッドグループ → 追加 → サンプラー → HTTPリクエスト
- HTTPリクエスト → 追加 → 前処理 → JSR223 PreProcessor
- HTTPリクエスト → 追加 → 設定エレメント → カウンタ
- HTTPリクエスト → 追加 → タイマ → 定数タイマ
2. HTTPリクエスト
- プロトコルを設定する
- サーバ名を設定する
- ポート番号を設定する(必要であれば)
- リクエストメソッドを設定する
- パスを設定する
- ボディ名に
${変数}
にする。
3. カウンタ
- 増分を設定する
今回は1行ずつなので「1
」 - 参照名を設定する
参照するための変数名になる。
4. 定数タイマ
- スレッド遅延時間(ミリ秒)を設定する 今回は5秒おきなので「
5000
」
5. JSR223 PreProcessor
- スクリプトの言語を選択する 今回は「
Groovy
」
ここではGroovy
の説明はしない。
Javaから派生した言語だから似てるそうな。
似てるかまでは検証していない。
開発環境
JSR223 PreProcessor
は、言うたらエディタのこと。
ぶっちゃけ使いにくいのでvscode
で書いた方がいい。
vscodeのCodeRunner
って拡張機能入れてデバッグしながら
やると良い。
スクリプト
// ファイルを読み込む
def src = new File("/User/hoge/Documents/test.txt")
// 「カウンタ」を取得する
// vars.get("変数名")でJMeterにある変数を取得できる
def counter = vars.get("row")
// データを一行ずつ読み込む
// line = データ, no = 行数
src.eachLine{ line, no ->
if (no == counter) {
// リクエストbodyの変数へデータを代入する
vars.put("body_data", line)
}
}
6. ループ数を設定して実行
スレッドグループのループ数に応じてカウンタの変数が増えていくので、
ファイルのデータが一行ずつ読まれてリクエストされる。
結論
読み込むファイルサイズがあまりにも大きかったり、
ループの間隔が極端に短い場合はこの方法は使えないかも。
でも PreProcessor を使えば
色々なテストパターンを再現できそうな感じはある。