背景:大部分項目真實的業務接口都是需要token鑒權的,想對一批核心業務接口進行并發壓測,必然要先生成一批token給這些接口并發循環調用。
基本的思路是這樣的:一批手機號csv文件? -》登錄接口循環讀取csv文件并生成token -》每次調用生成的token寫入到存放token的csv文件中 -》其他所有接口讀取csv文件中的token -》生成匯總報告。
jmeter 測試計劃的整體結構圖:
核心步驟:
(一)配置手機號csv數據文件設置
(二)添加json提取器,提取token變量
(三)添加Bean shell后置處理器
這段BeanShell的腳本代碼就是將登錄接口獲得的token寫入到csv文件中。
尤其注意,此處fw.write("${token}")這樣寫會報文件寫入異常,只能用vars.get("token"),我這邊壓測的環境會報錯。
代碼粘貼如下:
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
// 獲取token變量值
String token = vars.get("token");
// 文件路徑 - 注意使用雙反斜杠或正斜杠
String filePath = "D:\\jmeter-jmx\\壓測\\生成號生成的token.csv";?
try {
? ? FileWriter fw = new FileWriter(filePath, true); // true表示追加模式
? ? fw.write(token + "\n");
? ? fw.close();
} catch (IOException e) {
? ? log.error("寫入文件失敗: " + e.getMessage());
}
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;// 獲取token變量值
String token = vars.get("token");// 文件路徑 - 注意使用雙反斜杠或正斜杠
String filePath = "D:\\jmeter-jmx\\壓測\\生成號生成的token.csv"; try {FileWriter fw = new FileWriter(filePath, true); // true表示追加模式fw.write(token + "\n");fw.close();
} catch (IOException e) {log.error("寫入文件失敗: " + e.getMessage());
}
(四)讀取csv中的token供其他所有需要鑒權壓測的接口使用
經過前面的步驟已經生成了token備用,此時可以禁用手機號登錄接口。
注意是在線程組下添加csv數據文件,這樣只需加載一次csv數據文件就能被線程組下的接口共用。
因為我的token文件首行沒有標題,所以不忽略首行。
查詢用戶信息接口要鑒權,所以請求頭要帶上token。
(五)配置壓測參數和觀察結果匯總
用10個線程持續壓測10s