首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
50 篇文章
1
Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)
2
Jmeter(二) - 从入门到精通 - 创建测试计划(Test Plan)(详解教程)
3
Jmeter(三) - 从入门到精通 - 测试计划(Test Plan)的元件(详解教程)
4
Jmeter(四) - 从入门到精通 - 创建网络测试计划(详解教程)
5
Jmeter(五) - 从入门到精通 - 创建网络计划实战和创建高级Web测试计划(详解教程)
6
Jmeter(六) - 从入门到精通 - 建立数据库测试计划(详解教程)
7
Jmeter(七) - 从入门到精通 - 建立数据库测试计划实战<MySQL数据库>(详解教程)
8
Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程)
9
Jmeter(九) - 从入门到精通 - JMeter逻辑控制器 - 上篇(详解教程)
10
Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)
11
Jmeter(十一) - 从入门到精通 - JMeter逻辑控制器 - 下篇(详解教程)
12
Jmeter(十二) - 从入门到精通 - JMeter逻辑控制器 - 终篇(详解教程)
13
Jmeter(十三) - 从入门到精通 - JMeter定时器 - 上篇(详解教程)
14
Jmeter(十四) - 从入门到精通 - JMeter定时器 - 下篇(详解教程)
15
Jmeter(十五) - 从入门到精通 - JMeter导入自定义的Jar包(详解教程)
16
Jmeter(十六) - 从入门到精通 - JMeter前置处理器(详解教程)
17
Jmeter(十七) - 从入门到精通 - JMeter后置处理器 -上篇(详解教程)
18
Jmeter(十八) - 从入门到精通 - JMeter后置处理器 -下篇(详解教程)
19
Jmeter(十九) - 从入门到精通 - JMeter监听器 -上篇(详解教程)
20
Jmeter(二十) - 从入门到精通 - JMeter监听器 -下篇(详解教程)
21
Jmeter(二十一) - 从入门到精通 - JMeter断言 - 上篇(详解教程)
22
Jmeter(二十二) - 从入门到精通 - JMeter
23
Jmeter(二十三) - 从入门到精通 - JMeter函数 - 上篇(详解教程)
24
Jmeter(二十四) - 从入门到精通 - JMeter函数 - 中篇(详解教程)
25
Jmeter(二十五) - 从入门到精通 - JMeter函数 - 下篇(详解教程)
26
Jmeter(二十六) - 从入门到精通 - 搭建开源论坛JForum(详解教程)
27
Jmeter(二十七) - 从入门到精通 - Jmeter Http协议录制脚本(详解教程)
28
Jmeter(二十八) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy1(详解教程)
29
Jmeter(二十九) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy2(详解教程)
30
Jmeter(三十) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy3(详解教程)
31
Jmeter(三十一) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy4(详解教程)
32
Jmeter(三十二) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy5(详解教程)
33
Jmeter(三十三) - 从入门到精通 - Jmeter Http协议录制脚本工具-Badboy6(详解教程)
34
Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)
35
Jmeter(三十五) - 从入门到精通进阶篇 - 关联(详解教程)
36
Jmeter(三十六) - 从入门到精通进阶篇 - 设置负载阶梯式压测场景(详解教程)
37
Jmeter(三十七) - 从入门到精通进阶篇 - 输出HTML格式的性能测试报告(详解教程)
38
Jmeter(三十八) - 从入门到精通进阶篇 - 命令行运行JMeter详解(详解教程)
39
Jmeter(三十九) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 上篇(详解教程)
40
Jmeter(四十) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 中篇(详解教程)
41
Jmeter(四十一) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 - 下篇(详解教程)
42
Jmeter(四十二) - 从入门到精通进阶篇 - Jmeter配置文件的刨根问底 -番外篇(详解教程)
43
Jmeter(四十三) - 从入门到精通高级篇 - Jmeter之IP伪装和欺骗(详解教程)
44
Jmeter(四十四) - 从入门到精通高级篇 - Jmeter远程启动(本地运行+远程运行)(详解教程)
45
Jmeter(四十五) - 从入门到精通高级篇 - Jmeter之网页爬虫-上篇(详解教程)
46
Jmeter(四十六) - 从入门到精通高级篇 - Jmeter之网页图片爬虫-下篇(详解教程)
47
Jmeter(四十七) - 从入门到精通高级篇 - 分布式压测部署之负载机的设置(详解教程)
48
Jmeter(四十八) - 从入门到精通高级篇 - Jmeter监控服务器性能(详解教程)
49
Jmeter(四十九) - 从入门到精通高级篇 - jmeter使用监视器结果监控tomcat性能(详解教程)
50
Jmeter(五十) - 从入门到精通高级篇 - jmeter 之模拟弱网进行测试(详解教程)

Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)

1.简介

  前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了。今天这一篇主要是讲参数化,其实前边或多或少的介绍过类似的知识点,知识没有系统的讲解,由于这个在实际工作中用到比较多而且经常用到,所以宏哥今天将其单独作为一个主题来系统的讲解。

尤其是在用到jmeter工具时,无论做接口测试还是性能测试,参数化都是一个必须掌握且非常有用的知识点。参数化的使用场景,例如:

  1)多个请求都是同一个ip地址,若服务器地址更换了,则脚本需要更改每个请求的ip

  2)注册账号,不允许账号重复;想批量注册用户时

  3)模拟多个用户登录,需要用到不同用户信息登录时

  4)上一个请求的输出结果用于下一个请求的参数传入,例如登录获取到的token信息,用于提交账单请求的参数调用

2.什么是参数化

  概念:根据需求动态获取数据并进行赋值的过程。

  参数化:通俗的讲就是在进行测试的时候,测试数据是一项重要的准备工作,每次迭代的数据当不一样的时候,需要进行参数化,从参数化的文件中来读取测试数据。例如:测试用户登录时需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。

3.jmeter的几种参数化方式

这里以下边的这个注册接口为例:接口地址:https://api.apiopen.top/api.html

开发者注册

请求方式:POST

请求地址:https://api.apiopen.top/developerRegister

Query参数名

类型

必需

描述

示例 e.g.

name

string

用户名

peakchao

passwd

string

密码

123456

email

string

邮箱,用户反馈相关会邮件通知。

309324904@qq.com

返回示例:

代码语言:javascript
复制
{
    "code": 200,
    "message": "成功!",
    "result": {
        "apikey": "b9b3a96f7554e3bead2eccf16506c13e"
    }
}

3.1在jmeter中,通过${变量名}来获取参数值。

1、用户定义的变量

1)线程组右键添加-->配置元件-->用户定义的变量,出现如下设置页面后

  输入名称、值;注意:名称可以自定义设置,如下图所示:

2)然后将设置后的变量名称,在注册、登录请求中进行参数化引用${ip}、${email}

  注意:引用的参数名跟用户定义变量设置的名称必须保持一致,宏哥这里例举了一个注册实例,如下图所示:

3)点击运行,查看结果树,显示成功,如下图所示:

2、函数助手获取参数值

1)选择菜单栏 选项-->函数助手对话框,弹出函数助手框,功能下面有多个函数可供选择,我们主要看下__RandomString,其他可以自行了解下哟

2)要进行多个账号注册(比如10个用户),注册信息要求邮箱 email 和用户名 name 不能重复;所以可以这么来思考,QQ邮箱后边的@qq.com段固定,那就对QQ邮箱前几位进行随机,页面设置如下图所示:

3)拷贝生成的函数字符串,粘贴进行参数引用,如下图所示:

4)设置线程组线程数为10,模拟10个虚拟用户的注册,如下图所示:

5)点击运行,查看结果树,显示成功,(宏哥这里只举例说明邮箱,用户名你可以模仿设置后《宏哥这里在“北京宏哥”后边加了一个随机函数random,这样北京宏哥后带有一个数字就不会重复了》,才能注册成功,否则会报用户名重复的错误)如下图所示:

3、CSV Data Set Config获取参数值

1)若需要注册的QQ邮箱不能随机,必须是用户真实提供的QQ邮箱进行注册的话,就采用以下这种方式,提前收集用户真实QQ号及昵称,存放在本地txt或者CSV文件(CSV文件默认逗号隔开),如下图所示:

2)线程组右键添加-->配置元件-->CSV Data Set Config,如下图所示:

关键参数说明:

  Filename:需要传入文件的完整路径。我的文件位于C盘目录下,文件名为users.txt。

  File encoding:参数文件的编码格式。可以不填。

  Variable Names:对应参数文件中每列的变量名,也是你要引用到请求中的参数变量名。这里第一列是用户名、第二列是密码、第三列是邮箱。变量名可以自定义。

  igonre first line(only used if Variable Names is not empty):当 CSV 文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。若首行未设置,则选择False

  Delimiter:文件中的分隔符,默认英文的逗号分隔。所以注意txt文档中每行多个参数用英文逗号分隔。

  Recycle on EOF: 设置为True后,允许重头循环取值;为False,当读取文件到结尾时,停止读取文件

  Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效。

  Sharing Mode:共享模式。All threads:所有线程,所有线程循环取值,线程1取第一行,线程2取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:当前线程,该测试计划内的所有线程都取第一行。

备注说明:这里我用通俗的语言大概讲一下Recycle on EOF与Stop thread on EOF结果的关联

Recycle on EOF :到了文件尾处,是否循环读取参数,选项:true和false

Stop thread on EOF:到了文件尾处,是否停止线程,选项:true和false

当Recycle on EOF 选择true时,Stop thread on EOF选择true和false无任何意义,通俗的讲,在前面控制了不停的循环读取,后面再来让stop或run没有任何意义

当Recycle on EOF 选择flase时,Stop thread on EOF选择true,线程4个,参数3个,那么只会请求3次

当Recycle on EOF 选择flase时,Stop thread on EOF选择flase,线程4个,参数3个,那么会请求4次,但第4次没有参数可取,不让循环,所以第4次请求错误

3)使用CSV Data Set Config中定义好

a、直接参数化引用,如下图所示:

b、通过函数助手进行参数化引用,如下图所示:

4)设置线程组中线程数为3,执行后,输出如下结果:成功,如下图所示:

4.小结

1.在文件中输入变量的值时,尤其是.txt和.bat文件中的变量值之间要用英文的逗号隔开。 2.变量值中有中文时,要在后边勾选utf-8。 如果报错,请求不成功,注意检查是不是这两点没有注意到。

下一篇
举报
领券