LoginSignup
0
0

【Apache JMeter】ファイルをBase64エンコードしてリクエストに含める方法

Posted at

Apach JMeterによる負荷テストでファイルアップロード機能のテストを実施することになった。

実装したファイルアップロード機能はアップロードするファイルをBase64エンコードをしてJSON形式のリクエストに含めて送信する仕組みだったため、JMeter内でもBase64エンコードしたアップロードファイルを指定する必要がある。

当初、先にエンコードした結果をHTTPリクエストのBody Dataに直接貼り付けておこうと思ったが、貼り付けたり、Body Dataを確認する際にJMeterのGUIクライアントがフリーズしてしまうことがあったため、他の方法を考えることにした。

今回はその一つ対処方法として、JMeter内で指定したファイルをBase64エンコードしてJMeterの変数として扱う方法について解説する。

先にまとめ

「JSR223 PreProcessor」でBase64エンコードする処理を実装することで実現できる。

実装内容

スレッドグループ内のファイルアップロードを実施するHTTPリクエストの前に前処理>JSR223 PreProcessorを追加する。
追加すると、設定が開かれるのでまずは適切な名前をつけておく。

スクリーンショット 2024-04-10 22.31.36.png

Scriptの部分にBase64エンコードをするための処理を記述する

import org.apache.commons.io.IOUtils
import java.nio.file.Files
import java.nio.file.Paths
import java.util.Base64

// JMeter変数からファイルパスを取得
String filePath = vars.get("filePath")

// ファイルを読み込み、Base64エンコード
byte[] fileContent = Files.readAllBytes(Paths.get(filePath))
String encodedString = Base64.getEncoder().encodeToString(fileContent)

// エンコードされたデータを変数に保存
vars.put("encodedFile", encodedString)

今回はfilePathという変数にbase64エンコードするファイルのパスが定義されているので、まずはそれを取り出し、読み込み、エンコードして、encodedFileという変数に結果を格納している

あとはHTTPリクエスト上で${encodedFile}とすればエンコード結果を取り出せる
スクリーンショット 2024-04-10 22.35.15.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0