在PTS原生壓測中,如果您需要構造動態變化的業務請求,可以通過參數化實現。在使用JMeter壓測時,如果有同樣的動態壓測需求,建議您在JMeter腳本中添加Config Element:CSV Data Set Config,從CSV文件中讀取參數。同時,PTS支持切分CSV文件,將CSV文件中的數據分配到每個壓測引擎。
背景信息
CSV Data Set Config是JMeter官方提供的配置元件,用于讀取CSV文件中的數據并將它們拆分為變量。適用于處理大量變量的場景。
如果上傳的CSV文件在JMeter腳本中沒有對應的CSV Data Set Config配置,則切分CSV文件時默認作為不包含表頭(即變量名)的CSV文件切分。為方便操作,并避免數據被錯誤切分,建議您始終通過配置CSV Data Set Config使用CSV參數文件。
配置CSV參數文件
為構建動態變化的壓測請求,需要在JMeter腳本中配置CSV文件。
例如,為測試同時有100人登錄某網站時,該網站登錄接口的性能表現如何,則需要構造100條不同的用戶登錄數據。操作步驟如下:
- 在本地新建一份CSV文件,包含100條用戶數據。該CSV文件示例中第一行是表頭,表示變量名,所以文件共101行?;靖袷绞纠缦拢?/span>
id,name 1,ali 2,pts 3,jmeter
說明 如果CSV文件不含表頭,CSV Data Set Config中需要配置變量名。 - 啟動JMeter GUI,右鍵單擊測試計劃,選擇 ,添加線程組。
- 右鍵單擊新添加的線程組,選擇 。
- 在CSV Data Set Config配置區域,填寫CSV文件名,其他配置項保持默認。
JMeter會自動從CSV文件的表頭中讀取參數名作為變量名。
說明 如果CSV文件不含表頭,需要在CSV Data Set Config的Variable Names (comma-delimited)中,輸入id,name。 - 右鍵單擊線程組,選擇Add > Sampler > HTTP Request。根據具體業務接口,填寫配置項,示例如下:
- Name:登錄接口示例。
- Web Server:填寫具體的業務接口協議、服務名或IP地址和端口號。
- HTTP Request:選擇請求方法,填寫Path和Content encoding格式。
- Body Data頁簽:使用
${id}
、${name}
,表示讀取CSV文件中的參數。
- 保存該JMeter測試計劃腳本。
- 將測試腳本和CSV文件上傳至PTS。具體步驟,請參見創建JMeter場景。選中CSV文件后的切分文件復選框,可將CSV文件中的數據切分到每個壓測引擎上。具體說明參見下一章節CSV文件切分。如下圖所示。
CSV文件切分
PTS自動根據場景并發數分配JMeter施壓引擎。分配多個引擎時,PTS支持切分CSV文件,將CSV文件中的數據均勻分配到每個壓測引擎。
如果數據條數不能完全均分,則部分引擎可能比其他引擎多一條數據。
包含文件頭的CSV文件切分
當原CSV帶文件頭時,切分后的每個文件都會包含文件頭,但保證數據不重復。
如上述示例文件切分到2個引擎時:
第1個文件內容為:
id,name 1,ali 2,pts
第2個文件內容為:
id,name 3,jmeter
不含文件頭的CSV文件切分
如果CSV文件不包含文件頭(第一行即為CSV數據),例如,文件“b.csv”內容如下:
1,ali
2,pts
3,jmeter
則需在JMeter中配置變量名,如下圖所示:
此時如果選擇切分CSV文件,切分后的文件也不包含文件頭。如切分到2個引擎時:
- 第1個文件內容為:
1,ali 2,pts
- 第2個文件內容為:
3,jmeter
更多信息
更多CSV文件配置和使用說明,請參見JMeter官方文檔。