JMeter使用CSV参数文件

在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条不同的用户登录数据。操作步骤如下:

  1. 在本地新建一份CSV文件,包含100条用户数据。该CSV文件示例中第一行是表头,表示变量名。基本格式示例如下:

    username,password
    user1,Password1
    user2,Password2
    user3,Password3           
    说明

    如果CSV文件不含表头,CSV Data Set Config中需要配置变量名。

  2. 添加CSV Data Set ConfigThread Group

    image

  3. CSV Data Set Config配置区域,填写CSV文件名,其他配置项保持默认。JMeter会自动从CSV文件的表头中读取参数名作为变量名。

    image

    说明

    如果CSV文件不含表头,需要在CSV Data Set ConfigVariable Names (comma-delimited)中,输入username,password

  4. 配置Sampler

    右键单击线程组,选择Add > Sampler > HTTP Request。根据具体业务接口,填写配置项,示例如下:

    • Name:接口名。

    • Web Server:填写具体的业务接口协议、服务名或IP地址和端口号。

    • HTTP Request:选择请求方法,填写Path。

    • Body Data页签:使用${username}${password},表示读取CSV文件中的参数。

      image

  5. 保存JMeter测试脚本。

  6. 将测试脚本和CSV文件上传至PTS。具体步骤,请参见创建JMeter场景

CSV文件切分

选中CSV文件后的切分文件,可将CSV文件中的数据切分到每个压测引擎上。image

包含文件头的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中配置变量名,如下图所示:image

此时如果选择切分CSV文件,切分后的文件也不包含文件头。如果数据条数不能完全均分,则部分引擎可能比其他引擎多一条数据。如切分到2个引擎时:

  • 第1个文件内容为:

    user1,Password1
    user3,Password3
                    
  • 第2个文件内容为:

    user2,Password2
                       

更多信息

更多CSV文件配置和使用说明,请参见JMeter官方文档