Jmeter性能测试实现不同的用户登录
思路:以cms登录接口为例,使用随机函数添加不同的可登录用户,然后用正则表达式获取到可登录的用户名,在把可登录的用户进行登录,形成循环实现不同的用户登录,进行并发。使用jmeter测试添加用户,查询用户,登录三个接口的性能
1.打开jmeter,创建线程组调通添加用户的接口
协议:http
服务器名称或ip:192.168.195.130(部署cms的本地ip)
端口号:8080
方法:post
添加用户的接口路径:/cms/manage/saveSysUser.do
contentencoding:utf-8
在jmeter的选项中选择函数助手对话框选择__RandomString函数进行如下设置目的是为了生成随机用户。
http://www.51testing.com/attachments/2021/06/15326880_202106181352491po6S.png
设置好后parameters传入userAccount=${__RandomString(5,QWERTYUIOPLKJHGFDSAZXCVBNMqwertyiopasdfghjklmnbvcxz1234567890,)}即可
或者
bodyData:传入userName=${__RandomString(5,QWERTYUIOPLKJHGFDSAZXCVBNMqwertyiopasdfghjklmnbvcxz1234567890,)}&userSex=1&userMobile=18314933160&userEmail=369608314%40qq.com&userAccount=${__RandomString(5,QWERTYUIOPLKJHGFDSAZXCVBNMqwertyiopasdfghjklmnbvcxz1234567890,)}&loginPwd=154236&confirmPwd=154236
添加HTTP信息头管理传入Cookie与Content-Type
http://www.51testing.com/attachments/2021/06/15326880_202106181353091dz8T.png
添加察看结果树
添加SummaryReport
线程组设置10个循环1次
运行结果如下:
http://www.51testing.com/attachments/2021/06/15326880_202106181353341TAHX.png
SummaryReport结果如下:
http://www.51testing.com/attachments/2021/06/15326880_202106181354091ZFMU.png
Label:取样器别名
#Samples:取样器运行次数
Average:请求(事物)的平均响应时间
Min:请求最小响应时间
Max:请求最大响应时间
Std.Dev:响应时间标准差,标准差越小越好
Error%:事物错误率
Throughput:吞吐率,即TPS
ReceivedKB/s:每秒数据包流量
SentKB/s:
Avg.Bytes:平均数据流量
2.查询用户接口
协议:http
服务器名称或ip:192.168.195.130(部署cms的本地ip)
端口号:8080
方法:post
查询用户的接口路径:/cms/manage/queryUserList.do
contentencoding:utf-8
添加HTTP信息头管理传入Cookie与Content-Type
查询接口不需要传参数默认查询第1页10条用户信息:
http://www.51testing.com/attachments/2021/06/15326880_2021061813543011feT.pnghttp://www.51testing.com/attachments/2021/06/15326880_202106181354501IpEB.png
添加正则表达式获取查询到的userAccount的值具体设置如下:
http://www.51testing.com/attachments/2021/06/15326880_2021061813551312HHm.png
正则表达式详解
applyto:
Mainsampleandsub-samples:作用于父节点取样器及对应子节点取样器
Mainsampleonly:仅作用于父节点取样器
Sub-samplesonly:仅作用于子节点取样器
JMeterVariable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
要检查的响应字段:样本数据源
主体:接口响应主体内容,默认选择此项
信息头:响应头的所有内容
RequestHeaders:请求头的所有内容
url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数
响应代码:http响应代码,如101,200,302,404,501等
响应信息:http响应代码对应的响应信息,例如:OK,Found(HTTP/1.1200Ok;HTTP/1.1302Found)
引用名称:
其他地方引用时的变量名称,名称只能是一个,引用方法:${变量名称}
正则表达式:
数据提取器,一般简单的通用语法就是:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容
具体语法如下:
http://www.51testing.com/attachments/2021/06/15326880_202106181355331crXr.png
提到正则表达式,必须要说一下匹配的两种模式:贪婪和非贪婪
贪婪与非贪婪模式是两种不同的表达式匹配行为,贪婪模式在整个表达式匹配成功的前提下,尽可能多的匹配,而非贪婪模式在整个表达式匹配成功的前提下,尽可能少的匹配
模板:
对应正则表达式提取器类型,样式为:
$n$。若模板为:$0$,则为整个表达式匹配到的内容,就是包括小括号内跟小括号外的内容,
若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容
若模板为:$2$,则对应正则表达式中的第二个(.*?)所匹配的内容
若模板为$1$$2$,则把2个(.*?)所匹配的内容拼接起来
匹配数字:
正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。
当为0时,随机返回匹配的数据。
当为1时,表示返回匹配结果数组的第一个元素
当为负数(-1,-2,-100都可以)时,表示返回全部元素,并且同时会返回一个元素总数的变量
在引用时:通过${变量名_1}的方式来取第1个匹配的内容,${变量名_2}来取第2个匹配的内容
缺省值:
匹配失败时的默认值。通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等。
3.登录接口
协议:http
服务器名称或ip:192.168.195.130(部署cms的本地ip)
端口号:8080
方法:post
添加用户的接口路径:/cms/manage/loginJump.do
contentencoding:utf-8
添加HTTP信息头管理传入Cookie与Content-Type
设置好后parameters传入userAccount=${userAccount}(引用正则表达式名称)
loginPwd=123456
http://www.51testing.com/attachments/2021/06/15326880_202106181355531N9Lk.pnghttp://www.51testing.com/attachments/2021/06/15326880_202106181356301ymFI.png
页:
[1]