在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行。基本格式示例如下:
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官方文档。