Jmeter参数化

Jmeter参数化

本质:使用参数的方式来替代脚本中的固定的测试数据

实现方式:

  • 定义变量(最基础)

  • 文件定义的方式(所有测试数据都是固定的情况下)

  • 数据库的方式(灵活)

  • 函数方式(灵活)

参数化测试:把测试数据组织起来,用不同的测试数据调用相同的测试方法

JMeter中常见的参数化方式

  • 用户定义的变量
  • 用户参数
  • CSV Data Set Config
  • 函数

用户定义的变量

作用:定义全局变量

位置:测试计划–>线程组–>配置元件–>用户定义的变量

练习

请求:https://www.baidu.com:443

要求:使用用户定义的变量配置被测系统的协议、域名和端口

操作步骤:

  1. 添加线程组
  2. 添加用户定义的变量。格式:变量名-变量值
  3. 添加HTTP请求,引用定义的变量名。格式:${变量名}
  4. 添加查看结果树

image-20240601215410131

用户参数

作用:针对同一组参数,当不同的用户来访问时,可以获取到不同的值

位置:测试计划->线程组->前置处理器->用户参数

练习:

请求:https://www.baidu.com

要求:第一个用户请求附带参数:name=“张三”&age=28;第二个用户请求附带的参数:name=“李四”&age=30

操作步骤

1.添加线程组,线程数设置为2

2.添加用户参数

3.添加HTTP请求

4.查看结果树

image-20240602110811692

image-20240602110834657

image-20240602110902146

image-20240602111011430

小结

(1)什么时候使用用户参数?

  • 针对同一组参数,当不同的用户来访问时,可以获取到不同的值

(2)使用”用户参数“进行参数化步骤?

  1. 添加线程组,设置线程数为n(表示模拟用户数)
  2. 添加用户参数
    • 第一列添加多个变量名
    • 后续每一列为一组用户的数据
  3. 添加HTTP请求,引用定义的变量名。格式:${变量名}
  4. 添加查看结果树

CSV数据文件设置

作用:让不同用户在多次循环时,可以取到不同的值

位置:测试计划–>线程组–>配置元件–>CSV数据文件设置

参数image-20240602112058225

练习:

请求:https://www.baidu.com

要求:循环请求3次,每次请求时附带参数username,password,code的值不同

操作步骤

  1. 定义CSV数据文件
  2. 添加线程组,设置循环次数为3
  3. 添加CSV数据文件设置
  4. 添加HTTP请求

image-20240602113429382

image-20240602113445149

image-20240602113458366

image-20240602113519348

小结

(1)什么时候使用CSV数据文件设置?

  • 当不同的用户,或者同一个用户多次循环时,都可以获取到不同的值

(2)使用”CSV数据文件设置“进行参数化的步骤?

  1. 定义CSV数据文件

  2. 添加线程组

  3. 添加CSV数据文件设置

  4. 添加HTTP请求,引用定义的变量名。格式:${变量名}

  5. 添加查看结果树

函数(__counter)

作用:计数函数,一般做执行次数统计使用

位置:在菜单中–>选项(或工具)–>函数助手对话框

参数:image-20240602114846609

练习:

请求:访问百度首页 https://www.baidu.com/S?num=1

要求:每个用户每次循环执行该脚本都可以使用不同的值

操作步骤

1.添加线程组,设置虚拟用户数和循环次数

2.生成__counter函数

3.添加HTTP请求,使用__counter函数

4.添加查看结果树

image-20240602115125821

image-20240602115206574

image-20240602115237250

image-20240602115303737

小结

(1)什么时候使用__counter函数?

  • 自动生成不重复的数据,让每个用户每次循环都能取到不同的数据,且不需要提前定义

(2)使用”counter函数“进行参数化的步骤?

  1. 添加线程组,设置虚拟用户数和循环次数
  2. 生成__counter函数
  3. 添加HTTP请求,使用__counter函数,格式:${__counter(False,)}
  4. 添加查看结果树

练习:

某支付系统,需要用1000个不同的用户登录,并使用添加不同的测试金额数据访问支付接口?

答案:

  • 添加线程组
  • 添加配置元件-CSV数据文件设置,读取CSV文件数据中的用户名密码
  • 添加HTTP请求-登录,引用CSV数据文件设置中的变量
  • 添加HTTP请求-支付,使用counter函数传入不同金额的测试数据
  • 添加查看结果树
### JMeter 参数化测试实现方法 #### 参数化测试简介 参数化测试是一种测试方法,它允许使用不同的数据集多次运行相同的测试逻辑。JMeter 提供了多种实现参数化的方式,可以根据具体需求选择合适的实现方式。 #### 参数化实现方式 1. **CSV Data Set Config** - CSV Data Set Config 是 JMeter 中最常用的参数化方式,适用于参数取值范围较大的情况。它能够从 CSV 文件中读取数据并生成变量,供 JMeter 脚本引用。 - 使用 CSV Data Set Config 时,需要指定文件名、变量名以及是否循环读取等参数。通过这种方式,可以轻松实现数据驱动测试,避免每次修改用例时都需要重新编辑 JMeter 脚本 [^2]。 2. **User Parameters** - User Parameters 适用于参数取值范围较小的情况。可以在测试计划中直接定义参数及其取值,这些参数可以在整个测试计划中被引用 [^3]。 3. **User Defined Variables** - User Defined Variables 通常用于测试计划中不需要随请求迭代的参数设置。可以在测试计划的任何地方定义这些变量,并在整个测试计划中使用它们 [^3]。 4. **FunctionHelper 中的函数** - FunctionHelper 提供了一些内置函数,可以作为其他参数化方式的补充。例如,可以使用 `${__Random(,)}` 函数生成随机数,为测试增加更多的不确定性 [^3]。 #### 数据驱动测试的实现 为了实现数据驱动测试,可以将测试用例的数据存储在外部文件(如 CSV 文件)中,然后通过 JMeter 的配置元件读取这些数据并执行测试。这种方法的好处在于,当需要增加或修改用例时,只需修改外部文件,而无需重新编辑 JMeter 脚本,大大简化了用例的维护工作 [^4]。 ##### 示例:使用 CSV 文件进行数据驱动测试 1. **准备 CSV 文件** - 创建一个 CSV 文件,其中包含测试所需的参数数据。例如,假设有一个登录接口,需要用户名和密码作为参数,CSV 文件可以如下所示: ``` username,password user1,pass1 user2,pass2 user3,pass3 ``` 2. **配置 CSV Data Set Config** - 在 JMeter 中添加一个 CSV Data Set Config 元件,并配置以下参数: - **Filename**: 指定 CSV 文件的路径。 - **Variable Names**: 指定变量名,如 `username,password`。 - **Delimiter**: 指定分隔符,默认为逗号。 - **Recycle on EOF?**: 是否在文件末尾循环读取。 - **Stop thread on EOF?**: 是否在文件末尾停止线程。 3. **使用参数** - 在 HTTP 请求中使用 `${username}` 和 `${password}` 变量来引用 CSV 文件中的数据。 4. **执行测试** - 运行测试时,JMeter 会自动从 CSV 文件中读取数据,并为每行数据执行一次请求。 #### 示例代码 ```python # 假设有一个简单的 Python 脚本用于生成 CSV 文件 import csv data = [ ["username", "password"], ["user1", "pass1"], ["user2", "pass2"], ["user3", "pass3"] ] with open('test_data.csv', 'w', newline='') as csvfile: writer = csv.writer(csvfile) writer.writerows(data) ``` #### 总结 JMeter 提供了多种参数化测试的实现方式,可以根据具体的测试需求选择合适的方法。对于大规模的参数化测试,推荐使用 CSV Data Set Config,因为它具有更大的灵活性和可维护性。而对于小规模的参数化测试,User Parameters 或 User Defined Variables 可能更加简单直接。FunctionHelper 中的函数则可以作为补充,提供额外的功能,如生成随机数等 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值