在PTS原生压测中,如果您需要构造动态变化的业务请求,可以通过参数化实现。在使用JMeter压测时,如果有同样的动态压测需求,建议您在JMeter脚本中添加Config Element:CSV Data Set Config,从CSV文件中读取参数。同时,JMeter压测支持切分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文件示例中第一行是表头,表示变量名。基本格式示例如下:
username,password user1,Password1 user2,Password2 user3,Password3
说明如果CSV文件不含表头,CSV Data Set Config中需要配置变量名。
添加CSV Data Set Config到Thread Group。
在CSV Data Set Config配置区域,填写CSV文件名,其他配置项保持默认。JMeter会自动从CSV文件的表头中读取参数名作为变量名。
说明如果CSV文件不含表头,需要在CSV Data Set Config的Variable Names (comma-delimited)中,输入
username
,password
。配置Sampler
右键单击线程组,选择Add > Sampler > HTTP Request。根据具体业务接口,填写配置项,示例如下:
Name:接口名。
Web Server:填写具体的业务接口协议、服务名或IP地址和端口号。
HTTP Request:选择请求方法,填写Path。
Body Data页签:使用
${username}
、${password}
,表示读取CSV文件中的参数。
保存JMeter测试脚本。
将测试脚本和CSV文件上传至PTS。具体步骤,请参见创建JMeter场景。
CSV文件切分
选中CSV文件后的切分文件,可将CSV文件中的数据切分到每个压测引擎上。
包含文件头的CSV文件切分
当原CSV带文件头时,切分后的每个文件都会包含文件头,但保证数据不重复。如果数据条数不能完全均分,则部分引擎可能比其他引擎多一条数据。
如上述示例文件切分到2个引擎时:
第1个文件内容为:
username,password user1,Password1 user3,Password3
第2个文件内容为:
username,password user2,Password2
不含文件头的CSV文件切分
如果CSV文件不包含文件头(第一行即为CSV数据),例如,文件“b.csv”内容如下:
user1,Password1
user2,Password2
user3,Password3
则需在JMeter中配置变量名,如下图所示:
此时如果选择切分CSV文件,切分后的文件也不包含文件头。如果数据条数不能完全均分,则部分引擎可能比其他引擎多一条数据。如切分到2个引擎时:
第1个文件内容为:
user1,Password1 user3,Password3
第2个文件内容为:
user2,Password2
更多信息
更多CSV文件配置和使用说明,请参见JMeter官方文档。