JMETER实战从创建测试数据到分布式压测测试全流程

一.创建测试用户

此节包含登录、token提取、模拟生成测试数据、测试数据驱动文件获取、批量创建用户

(1)首先有有两个接口的参数及数据,分别是登录接口及系统管理的新建用户接口
在这里插入图片描述
(2)这里创建两个线程组,setUp线程组用以登录接口以及获取登录接口的token/cookie,以及一个JSON提取器和一个Beanshell后置处理程序
在这里插入图片描述
(3)接口信息按照需求而定,这里因为是post提交方式,所以直接提交Body Data的json。
${username}换成你都账号名
${password}换成你的登录密码
当然根据具体接口信息而定,一个能登陆上的用户(有创建测试用户权限的)即可
在这里插入图片描述
(4)Json提取器配置
请求这个接口,可以看到access_token里有我们需要的token信息
在这里插入图片描述
$.data.access_token即是我们需要的(具体视json而定)
第一行的token即是我们获取到这个token的全局变量名
在这里插入图片描述
(5)beanshell后置处理程序
在这里插入图片描述
创建全局变量access_token,即为上(4)的token
props.put(“access_token”,vars.get(“token”))
(6)创建http信息头管理及token、content-type配置
在这里插入图片描述
token即为(5)获取到的access_token
Bearer ${__P(access_token,)}
这个公式获取方法也可以公式获取器P获得
在这里插入图片描述
(7)通过python小程序批量获得测试用户驱动数据(txt与csv两种格式)

#保存成txt格式
with open(‘D:/用户0427.txt’, ‘w+’) as file1: # with…open用法
for i in range(1, 1000): # for循环生成账号
file1.write(f’zs{i:03}, 123456\n’) # 字符串的格式化

#保存成csv格式
with open(‘D:/权限用户.csv’, ‘w+’) as file1:
for i in range(1, 10000):
file1.write(f’test{i:04}, 123456,1555555{i:04},cs{i:04}@qq.com,\n’)

后续使用csv作为例子,在d盘生成我们需要的一万个测试用户数据,方便后续添加
在这里插入图片描述
(8)批量新增测试用户,新建一个线程(包含生成测试数据接口)
接口及(7)所需要的数据视项目而定
在这里插入图片描述
(9)这里将D:/权限用户.csv移动到JMETERHOME/bin下了,方便后续分布式压测测试,再创建一个(6)的信息头在线程组下
第一行,因为放在bin目录下,所以可以直接填文件位置为,权限用户.csv
在这里插入图片描述
此处第三行的全局变量就是对应csv文件的四列,第四行开启的话是不忽略首行,这里csv文件首行就是新增用户数据所以不需要了,其它默认配置即可

到这里批量新增测试用户就准备完毕了
(10)批量新增测试用户
在这里插入图片描述
这里调整线程数一万个,这样就会执行一万次,点击运行
在这里插入图片描述
这样就新增成功了
如果成功请忽视,有问题则分析是哪里错了
看请求头、请求数据
(1)token是否成功取到
(2)测试数据是否正确传递
在这里插入图片描述
在这里插入图片描述
二、分布式压测(主master机windows10,压测机linux为centos7.8)
完成了上述一的批量新增测试用户就可以进行分布式压测了
首先确保master与slave机的jdk版本大致一致,最好完全一致,这里个人使用的是jdk1.8版本
jmeter版本的一致,也是最好完全一致,这里使用的都是jmeter5.5,觉得麻烦的可以直接拷贝windows的jmeter到centos机里面,这样也能确保版本一致
进行此步骤前提master与slave机已有jdk环境且有jmeter
master:10.37.3.112
slave:10.37.0.101
(1)对master机配置
打开jmeter的bin目录下,打开jmeter-server,在最后添加
RMI_HOST_DEF=-Djava.rmi.server.hostname=master机ip
在这里插入图片描述
打开jmeter.properties,放开以下的#并做配置
remote_hosts=127.0.0.1:1099,10.37.3.112:1099,10.37.0.101:1099 (压测机ip:端口,用,隔开)
server_port=1099 (如果master机也需要做压测就需要打开)
server.rmi.ssl.disable=true (slave与master机通信要做的)
mode=Standard (此处为了能看到slave的结果树)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)slave机配置
首先bin目录下放上测试文件【权限用户.csv】,这里一定要和windows同级目录下,否则运行结果树是没有结果的
所以都放在jmeter的bin目录下就行,确保这里测试数据都在同级目录下,这里被坑了半天多时间
打开jmeter-server,在最后添加
RMI_HOST_DEF=-Djava.rmi.server.hostname=master机ip
在这里插入图片描述
打开jmeter.properties,放开以下的#并做配置
server_port=1099
server.rmi.ssl.disable=true
mode=Standard
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(3)上述配置做完后,做一个测试看是否成功
启动slave机的jmeter.server
在这里插入图片描述

然后启动master机的gui,并运行slave机进行压测
在这里插入图片描述
运行成功

(4)准备多用户的一套组合业务数据测试
比如说一万个用户登录后进行新建某样东西,这里因为考虑这个业务逻辑是多用户,所以需要在线程里额外加一个token提取器,保证是不同的用户,可以把上面的setUp线程组关闭了,json与beanshell与上述的setUp线程组是一样的,新建的http信息头管理器、csv也是一样的(因为新增用户的账号和密码在登录直接可以用)
在这里插入图片描述
新增一个测试场景
在这里插入图片描述
打开压测机进行分布式压测,逻辑就是一万个用户同时进行登录,然后都由自己新建一个测试场景
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

大致观察下只有开始的和最后成功创建了,中间的几千个用户都创建失败了,具体压测结果为多少,就需要自己慢慢测试大致值了

发现已经出现很多的错误之处了,再去查看聚合报告,写一份的性能报告,就可以自己总结,数万用户的操作的性能测试压测啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值