JMeter中的CSV数据文件设置(CSV Data Set Config)与BeanShell前置处理器(BeanShell PreProcessor)有什么区别?

JMeter中的CSV数据文件设置(CSV Data Set Config)与BeanShell前置处理器(BeanShell PreProcessor)都是用于参数化测试,即使用不同的参数多次执行同一请求。但是,两者的实现方式不同:

CSV数据文件设置的实现方式:

  1. 定义CSV文件,包含多组测试数据。例如:
username,age 
tom,20
jerry,30
  1. 添加CSV数据文件设置,选择CSV文件和变量名称。例如:
    变量名称:username,age
  2. 绑定变量名称到HTTP请求的参数上。例如:
    username绑定到HTTP请求的username参数
    age绑定到HTTP请求的age参数
  3. 每次执行HTTP请求时,JMeter会从CSV文件中读取一行数据,绑定到请求参数上,然后发送请求。
    实现了通过CSV外部文件的数据驱动测试。

BeanShell前置处理器的实现方式:

  1. 添加BeanShell前置处理器,编写BeanShell脚本代码。例如:
username="tom";
age=20;
  1. 设置变量名称和值。例如:
变量名称:username
值:${username} 
变量名称:age
值:${age}
  1. 绑定变量名称到HTTP请求的参数上。
    username绑定到HTTP请求的username参数
    age绑定到HTTP请求的age参数
  2. 每次执行BeanShell前置处理器时,会执行BeanShell代码,设置变量的值,然后将值绑定到请求上,发送请求。
    实现了通过Java代码动态设置测试数据的目的。

简而言之:

  • CSV数据文件设置通过CSV文件实现数据驱动
  • BeanShell前置处理器通过Java代码动态设置数据

一个综合示例:

CSV文件:
username,age
tom,20
jerry,30

CSV数据集配置:
CSV文件路径:D:/test.csv  
变量名称:username,age

BeanShell前置处理器:

代码: username="lucy";age=25;

变量:
名称:username,值:${username}
名称:age,值:${age}

数据绑定:
username绑定到HTTP Request的username
age绑定到HTTP Request的age

运行测试,会执行两次请求:
第一次请求参数为 username=tom,age=20
第二次请求参数为username=lucy,age=25