全部产品

JMeter 使用 CSV 参数文件

更新时间:2019-05-08 19:12:42

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

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

    1. id,name
    2. 1,ali
    3. 2,pts
    4. 3,jmeter

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

  2. 启动 JMeter GUI,右键单击测试计划,选择 Add > Threads (Users) > Thread Group,添加线程组。

    添加线程组

  3. 右键单击新添加的线程组,选择 Add > Config Element > CSV Data Set Config

    CSV data set config

  4. CSV Data Set Config 配置区域,填写 CSV 文件名,其他配置项保持默认。

    JMeter 会自动从 CSV 文件的表头中读取参数名作为变量名。

    配置CSV data

    说明:如果 CSV 文件不含表头,需要在 CSV Data Set Config 的 Variable Names (comma-delimited) 中,输入 id,name

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

    • Name:登录接口示例
    • Web Server:填写具体的业务接口协议、服务名或 IP 地址和端口号。
    • HTTP Request:选择请求方法,填写 Path 和 Content encoding 格式。
    • Body Data 页签:使用 ${id}${name},表示读取 CSV 文件中的参数。

    配置http请求

  6. 保存该 JMeter 测试计划脚本。

  7. 将测试脚本和 CSV 文件上传至 PTS。具体步骤请参见 JMeter 原生压测

    勾选 CSV 文件后的切分文件复选框,可将 CSV 文件中的数据切分到每个压测引擎上。具体说明参见下一章节 CSV 文件切分

    如下图所示:

    jmeter压测

CSV 文件切分

PTS 自动根据场景并发数分配 JMeter 施压引擎。分配多个引擎时,PTS 支持切分 CSV 文件,将 CSV 文件中的数据均匀分配到每个压测引擎。

如果数据条数不能完全均分,则部分引擎可能比其他引擎多一条数据。

包含文件头的 CSV 文件切分

当原 CSV 带文件头时, 切分后的每个文件都会包含文件头,但保证数据不重复。

如上述示例文件切分到 2 个引擎时:

  • 第 1 个文件内容为:

    1. id,name
    2. 1,ali
    3. 2,pts
  • 第 2 个文件内容为:

    1. id,name
    2. 3,jmeter

不含文件头的 CSV 文件切分

如果 CSV 文件不包含文件头(第一行即为 CSV 数据),例如,文件 “b.csv” 内容如下:

  1. 1,ali
  2. 2,pts
  3. 3,jmeter

则需在 JMeter 中配置变量名 ,如下图所示:

jmeter-csv 配置

此时如果选择切分 CSV 文件,切分后的文件也不包含文件头。如切分到 2 个引擎时:

  • 第 1 个文件内容为:

    1. 1,ali
    2. 2,pts
  • 第 2 个文件内容为:

    1. 3,jmeter

更多信息

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