前边三十多篇文章主要介绍的是Jmeter的一些操做和基础知识,算是一些初级入门的知识点,从这一篇开始咱们就来学习Jmeter比较高级的操做和深刻的知识点了。今天这一篇主要是讲参数化,其实前边或多或少的介绍过相似的知识点,知识没有系统的讲解,因为这个在实际工做中用到比较多并且常常用到,因此宏哥今天将其单独做为一个主题来系统的讲解。html
概念:根据需求动态获取数据并进行赋值的过程。api
参数化:通俗的讲就是在进行测试的时候,测试数据是一项重要的准备工做,每次迭代的数据当不同的时候,须要进行参数化,从参数化的文件中来读取测试数据。例如:测试用户登陆时须要输入用户名和密码,假如系统不容许相同的用户名和密码同时登陆,或者想更好的模拟多个用户来登陆系统。这个时候就须要对用户名和密码进行参数化,使每一个虚拟用户都使用不一样的用户名和密码进行访问。服务器
这里如下边的这个注册接口为例:接口地址:https://api.apiopen.top/api.htmldom
开发者注册函数
请求方式:POST工具
请求地址:https://api.apiopen.top/developerRegister性能
Query参数名 | 类型 | 必需 | 描述 | 示例 e.g. |
---|---|---|---|---|
name | string | 是 | 用户名 | peakchao |
passwd | string | 是 | 密码 | 123456 |
string | 是 | 邮箱,用户反馈相关会邮件通知。 | 309324904@qq.com |
返回示例:学习
{ "code": 200, "message": "成功!", "result": { "apikey": "b9b3a96f7554e3bead2eccf16506c13e" } }
一、用户定义的变量测试
1)线程组右键添加-->配置元件-->用户定义的变量,出现以下设置页面后编码
输入名称、值;注意:名称能够自定义设置,以下图所示:
2)而后将设置后的变量名称,在注册、登陆请求中进行参数化引用${ip}、${email}
注意:引用的参数名跟用户定义变量设置的名称必须保持一致,宏哥这里例举了一个注册实例,以下图所示:
3)点击运行,查看结果树,显示成功,以下图所示:
二、函数助手获取参数值
1)选择菜单栏 选项-->函数助手对话框,弹出函数助手框,功能下面有多个函数可供选择,咱们主要看下__RandomString,其余能够自行了解下哟
2)要进行多个帐号注册(好比10个用户),注册信息要求邮箱 email 和用户名 name 不能重复;因此能够这么来思考,QQ邮箱后边的@qq.com段固定,那就对QQ邮箱前几位进行随机,页面设置以下图所示:
3)拷贝生成的函数字符串,粘贴进行参数引用,以下图所示:
4)设置线程组线程数为10,模拟10个虚拟用户的注册,以下图所示:
5)点击运行,查看结果树,显示成功,(宏哥这里只举例说明邮箱,用户名你能够模仿设置后《宏哥这里在“北京宏哥”后边加了一个随机函数random,这样北京宏哥后带有一个数字就不会重复了》,才能注册成功,不然会报用户名重复的错误)以下图所示:
三、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,执行后,输出以下结果:成功,以下图所示:
1.在文件中输入变量的值时,尤为是.txt和.bat文件中的变量值之间要用英文的逗号隔开。
2.变量值中有中文时,要在后边勾选utf-8。
若是报错,请求不成功,注意检查是否是这两点没有注意到。
好了,时间不早了,今天就分享到这里吧!!!