JMeter参数化、断言、集合点
参数化
JMeter的参数化存在两种方式
录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。
这个时候就需要对用户名和密码进行参数化,使每个虚拟用户都使用不同的用户名和密码进行访问。
准备工作
-
录制一个脚本(可以用badboy工具录制),在jmeter中打开,找到有用户名和密码的页面。如下:
-
我们需要“参数化”的数据,用记事本写了三个用户名和密码,保存为.txt格式文件,注意:用户名和密码是一一对应的,中间用户逗号(,)隔开。
借助函数助手的方式
-
点击菜单栏“选项”---->函数助手对话框,看下图: CSV文件列号是从0开始的,第一列0、第二列1、第三列2、依次类推
-
复制生成的参数化函数,打开登陆请求页面,在右则的参数化中找到我们要参数化的字段,这里对用户名和密码做参数化,第一列是用户名,列号为0;第二列是密码,列号为1;修改函数中对应的参数化字段列号就可以了
现在参数化设置完成,在脚本的时候,会调用 D:\JMeter\Login.txt
文件,第一列是用户,第二列是密码。
借助JMeter中的配置元件(CSV Data Set Config)
- 选中线程组,点击右键,添加-配置元件-CSV Data Set Config
说明:
Filename
--- 参数项文件
File Encoding
--- 文件的编码,设置为UTF-8
Vaiable Names
--- 文件中各列所表示的参数项;各参数项之间利用逗号分隔;参数项的名称应该与HTTP Request中的参数项一致。
Delimiter
--- 如文件中使用的是逗号分隔,则填写逗号;如使用的是TAB,则填写\t;(如果此文本文件为CSV格式的,默认用英文逗号分隔)
Recycle on EOF?
--- True=当读取文件到结尾时,再重头读取文件
False=当读取文件到结尾时,停止读取文件
Stop thread on EOF?
--- 当Recycle on EOF为False时,当读取文件到结尾时,停止进程,当Recycle on EOF为True时,此项无意义
- 使用刚才定义好的变量
至此,两种参数化的方法就介绍完了。
需要说明一下:函数助手方法要比CSV控件方法参数化功能要弱,推荐使用CSV控件方法。
断言
JMeter也有像LR中的检查点,本篇就来介绍下JMeter的检查点如何去实现。
JMeter里面的检查点通过添加断言来完成。
上面讲到,我们对用户名和密码进行了参数化,那么怎样来判断jmeter有没有正确调用t.dat里面的文件呢。当然,我们可以从结果图表中查看。但我还是想在“登录”这个地方进行一下检查。
-
添加响应断言
右键点击我们的“登录”页面---->添加---->断言---->响应断言
-
设置响应断言
断言中可以添加多个断言一起判断,断言中也可以使用参数化方法,进行动态判断。
-
添加断言结果
右键点击我们的“登录”页面---->添加---->监听器---->断言结果
再添加一个“查看结果树” 右键点击我们的“登录”页面---->添加---->监听器---->查看结果树
在线程组中设置3个用户,点击运行运行。
-
查看断言结果
成功如下图
失败如下图
注意:一般成功只会显示一行数据,否则会多显示一行。至此,检查点设置完成。
集合点
JMeter也有像LR中的集合点,本篇就来介绍下JMeter的集合点如何去实现。
JMeter里面的集合点通过添加定时器来完成。
注意:集合点的位置一定要在Sample之前.
简单来理解一下,虽然我们的“性能测试”理解为“多用户并发测试”,但真正的并发是不存在的,为了更真实的实现并发这感念,我们可以在需要压力的地方设置集合点,拿那个用户和密码的地方,每到输入用户名和密码登录的地方,所有的虚拟用户都相互之间等一等,然后,一起访问。
-
接着之前创建的脚本,右键点击 线程组---->定时器---->Synchronizing Timer
这样子就添加了一个“集合点”,下面来设置一下集合点,设置延迟时间(以毫秒为单位)
-
我们添加完之后的列表是这个样子的
发现了没,我们集合点的位置不对,应该在登录的前面才对。怎么弄呢?
简单方法:拖住集合点,直接移动Synchronizing Timer至登录的前面即可。
至此,集合点已添加完成。