Jmeter接口压力测试学习总结
Jmeter接口压力测试学习总结
一.创建测试用例
Jmeter主界面:
1.添加线程组
测试计划 (右键->添加->Threads(Users)->线程组),修改线程组名称为“登录”,可添加多个线程组,设置线程数;Ramp-Up Period(in seconds)间隔多长时间执行;循环次数:总请求数=线程数*循环次数;勾选调度器设置持续时间
2.添加http cookie管理器
3.设置http请求默认值
http请求默认值可以设置请求的服务器,相同环境的http请求,可将http默认请求放在测试计划下面线程组上面,否则添加对应的子路径即可
4.设置http请求
填写http请求的路径,在BodyData中添加需要请求的参数,可以是Json格式,或在Parameters中添加表单格式,BodyData和Parameters不可同时添加
5.添加用户定义的变量
可添加在测试计划下面,作为全局变量,登录成功后获取的token可放在用户定义的变量中,在其他线程组的请求http信息头管理器中添加变量,即可供跨线程组使用
6.添加http信息头管理器
添加信息头,添加需要的头部信息
7.添加json断言
JSON断言可以对服务器返回的JSON文档进行验证。JSON断言有两种使用模式:
1.根据JSONPath能否在JSON文档中找到路径;
2.根据JSONPath提取值并对值进行验证。
若文档格式为非JSON则断言失败;若找不到路径断言失败;若提取值与预期值不一致断言失败。
Additionally assert value:添加验证的值,只有勾选了此复选框,才可以在Expected Value中设置期望的值。
Match as regular expression:匹配正则表达式,在期望的值中填写正则表达式,如果不勾选此项,在Expected Value中设置了正则表达式,则不进行匹配
Expect null:期望值为null,如果期望的值为null,可以勾选此项。
Invert assertion(如果匹配的值存在,则断言失败,不匹配,则断言成功)。
8.添加察看结果树
9.添加聚合报告
二.开始测试
1.开始测试
登录成功后,获取到token,对查询接口进行接口调试,设置线程数为1,调试通过后,开始执行查询接口的压力测试,本次压力测试线程数分别测试200,300,350,400,450
先设置线程数200,Ramp-Up Period(in seconds)设置为0,勾选永远、调度器,持续时间60s,保存,开始执行
2.查看结果树过程及结果
3.查看聚合报告
聚合报告中各名词说明:
Samples:一共发出的请求数;
Average:平均响应时间;
Median:统计意义上的响应时间中值;
90% line:所有线程中90%的线程响应时间都小于xx的值;
Min:响应最小时间;
Max:响应最大时间;
Error: 测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因;
Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好
线程数200:
线程数300:
线程数350:
线程数400:
线程数450:
本次压力测试使用单台压力机测试,由于压力机性能瓶颈和服务器不稳定、可能被其他进程占用等原因,持续加压到500时,jmeter请求中断。作为学习研究,本次压力测试避免额外占用人力物力,所以终止加压测试。
三.测试结果分析
1、有错误率同开发确认,确定是否允许错误的发生或者错误率允许在多大的范围内;
2、Throughput吞吐量每秒请求的数大于并发数,则可以慢慢的往上面增加;若在压测的机器性能很好的情况下,出现吞吐量小于并发数,说明并发数不能再增加了,可以慢慢的往下减,找到最佳的并发数;
3、压测结束,登陆相应的web服务器查看CPU等性能指标,进行数据的分析;
4、最大的tps:不断的增加并发数,加到tps达到一定值开始出现下降,那么那个值就是最大的tps。
5、最大的并发数:最大的并发数和最大的tps是不同的概率,一般不断增加并发数,达到一个值后,服务器出现请求超时,则可认为该值为最大的并发数。
6、压测过程出现性能瓶颈,若压力机任务管理器查看到的cpu、网络和cpu都正常,未达到90%以上,则可以说明服务器有问题,压力机没有问题。
7、影响性能考虑点包括:数据库、应用程序、中间件(tomact、Nginx)、网络和操作系统等方面。
本次压力测试结果分析:当并发数增加到450时,90%的请求响应时间最大值接近于要求的3s以内的性能指标,cpu及内存达到瓶颈,tps在并发数350时达到最大值之后开始下降,可以判断该接口支持的最大并发数未450。
四.问题及解决方法
1、当有多个接口请求存在参数调用时,如何实现关联?
答:比如登录接口和保存、查询接口,保存和查询接口都需要登录接口返回的token等登录信息,除了上述创建测试用例过程中用到的将token放在用户定义的中,还可以使用正则表达式和json path extractor
(1) 正则表达式提取器
():括起来的部分就是要提取的。
.:匹配除换行外的任何字符串。
+:代表+号前面的字符必须至少出现一次(一次或多次)。
?:代表?前面的字符最多可以出现一次,在找到第一个匹配项后停止(0次或1次)。
:代表号前面的字符可以不出现,也可以出现一次或者多次(0次、1次或者多次)
(.):贪婪模式,匹配尽可能多的字符
(.?)或(.+?):匹配尽可能少的字符,一旦匹配到第一个就不往下走了
模板:若想提取多个值的话,比如是a和b这两个值,则可以写成:111222
(2)json path extractor
jmeter通过安装json path extractor插件来处理json串,提取json串中的字段值。
2、jmeter压测时跑了一会儿后,出现界面请求一直无法结束,像卡死一样?
答:在http请求中添加请求响应超时时间
3、内存溢出,出现提示java.lang.OutOfMemoryError: Java heap space?
答:(1)打开jmeter安装文件(可以用notepad++打开),bin目录下的jmeter.bat
(2)找到set HEAP开头的内容,根据具体需要修改堆(heap)值大小,以及NEW分配的内存值大小
这里默认值为:
set HEAP=-Xms512m -Xmx512m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m
将其修改为:
set HEAP=-Xms512m -Xmx4096m
set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m
注意:一般而言,堆的最大值不要超过物理内存的一半,否则容易导致jmeter运行变慢、卡顿甚至内存溢出(因为java本身的垃圾回收机制是动态分配内存,
调整时候其本身会占用很多内存),NEW分配的内存,不宜太大!
(3)修改完成后,关闭文件,重启jmeter既可
注意:当需要模拟的线程数较大时,就需要根据具体情况采用分布式压测的方式了,这种修改堆大小的方法只适用一部分情况,并不是万能的!
4、常用http错误代码有哪些?
答:400 无法解析此请求。
403 禁止访问:访问被拒绝。
404 找不到文件或目录。
405 用于访问该页的HTTP动作未被许可。
410 文件已删除。
500 服务器内部错误。
501 标题值指定的配置没有执行。
502 Web服务器作为网关或代理服务器时收到无效的响应
5、为什么脚本刚开始运行就有错误,其后来的脚本还可运行?
答:在Thread Group中有相关设置,如果选择了continue,即使前面的脚本出现错误,整个thread仍会运行直到结束。选择Stop Thread会结束当前thread;选择Stop Test则会结束全部的thread。推荐选项是Stop Thread。
6、请求提示no cookies
答:在线程组下面添加http cookie管理器
7、压测的线程数过多时,或者线程没有被及时释放,会导致系统开放的TCP/IP连接端口已达到最大限制,jmeter会直接报错。
报错信息:java.net.BindException:Address already in use.
答:(1)打开注册表:在cmd(win+R)中输入regedit,打开注册表
(2)设置系统参数:最大端口连接数。
①找到系统参数设置项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
②右击parameters,添加一个新的DWORD,参数名为MaxUserPort;
③双击MaxMaxUserPort,输入数值为65534,基数选择十进制;
④重启电脑!重启电脑!重启电脑!
8、大量请求出现连接失败,或者压测的错误率异常高
答:线程数已达到瓶颈
(1)循环创建线程时,勾选keep-alive,可以复用线程。
(2)扩大被测程序的线程池大小。(程序出现瓶颈时)
9、显示乱码问题
设置HTTP请求,参数中的值显示为中文,但系统接受数据时,中文显示为乱码;在“察看结果树”中,查看HTTP请求,请求参数中的中文数据显示乱码。
答:在HTTP请求页面,Content encoding设置为utf-8即可
10、在登录校验成功后,后续动作都为成功
答:进行重定向时,cookie被重置,http请求中,修改默认的“自动重定向”为“跟随重定向”
11、jsonpath语法元素
XPATH JSONPATH Description
/ $ 根对象/元素
. @ 当前对象/元素
/ .or[] 自操作符
… n/a Json path不支持父操作符
// … 递归下降
- 通配符,代表所有对象/元素
@ n/a Json path不支持属性访问
[] [] 下标运算,通过数组元素的下标访问数组元素
| [,] Union操作符,使用间隔的名称或数组下标生成子集
n/a [startJmeter接口压力测试学习总结相关推荐
- Jmeter接口压力测试(先登录再测接口)
上一篇主要写了Jmeter测试登陆接口,但是大部分情况下,我们是要测试登陆后的页面的各个接口.所以需要把二者结合起来,可以使用Jmeter重定向. Jmeter测试接口(包括登陆操作) 1. ...
- Jmeter 接口压力测试实战(一):Jmeter将测试结果写入到Excel中
1.Jmeter写入结果到Excel之环境准备 下载jxl.jar包 下载好之后,将这个包放到jmeter安装路径下的lib目录下 jxl.jar的作用:完成对excel的读写以及修改等操作 2.如何 ...
- Jmeter接口压力测试--先登录后再测
一,添加线程组 填入以下参数,我填入的10,1代表平均1秒执行10个线程 二,创建http request(login) 右键线程组--添加取样器--添加HTTP请求 最下面的参数为登录时需要的参数, ...
- 学习笔记-JMeter 进行接口压力测试
一.压力测试场景设置 1.场景设定:进行接口压力测试时,有单场景也有混合场景.单场景就是对一个接口进行请求:混合场景需要对多个接口进行请求,在流程类业务场景会运用到 2.压测时间设定:通常时间为10- ...
- 【Jmeter基础篇】03:如何进行post接口压力测试
目前网络上有很多很多Jmeter的压力测试使用指南,但是在实际使用过程中,很多朋友会遇到许多并不处于理想状态的情况,比如某些参数不知道应该往哪里放,具体怎么分析测试结果等等. 所谓压力测试,实质就是让 ...
- Jmeter验证码图片识别注册接口压力测试实战
写在前面 前段时间写了一篇博文<Jmeter验证码注册接口压力测试实战>,前两天又登录对应的网站看了一下.发现原来滑动验证的方式改成了图片验证码的方式,防止用户多次发送手机验证码. 看到这 ...
- Jmeter验证码注册接口压力测试实战
主要学习的内容包括发送HTTP请求.HTTP信息头管理器.HTTP cookies管理器.用户定义的变量.响应断言.CSV数据文件设置的使用. 测试网址及测试接口等说明 提供的测试网址为: http: ...
- 接口压力测试:Postman【Postman通常用于做接口测试,同时也可以用于作为压力测试】、Jmeter【专门做压力测试】、Loadrunner、Apache AB、Webbench
做开发的同学一定会遇到接口对接,今天介绍两个对接测试两个我个人认为比较好的测试工具 postman和jmeter 1.postman通常用于做接口测试,同时也可以用于作为压力测试 2.jmeter做压 ...
- JMeter 进行压力测试并发测试步骤,及文件上传并发测试演示
使用 JMeter 进行压力测试 一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率:预估系统的承载能力,使我们能 ...
- 用python做简单的接口压力测试
一个多月没有更博了,最近研究了一下接口的压力测试,主要来说就是连续频繁的对接口的调用,来测试接口的响应速度.返回结果,找到接口的性能瓶颈,最大承受极限等. 做接口压力测试的方法和工具很多,比较常用的工 ...
最新文章
- MindSpore技术理解(上)
- 负起责任、审慎对待论文创新和性能指数,ACM Fellow罗杰波教授分享他的审稿经验...
- 排序 np_干货 | XGBoost在携程搜索排序中的应用
- IT从业者都应关注的软件行业的变化
- Android 热修复 HotFix 混淆apk生成patch包方案
- lua cocos 动画回调
- PHP 实现二分查找
- poj1113/hdu1348(凸包。。。两个网站上的输入输出有点出入)
- lua qt 编译_Win32下 Qt与Lua交互使用(一):配置Qt下Lua运行环境
- 读取SD卡文件夹下的MP3文件和播放MP3文件
- 实现NeatUpload大文件上传和个性显示进度条
- 智慧机场室内导航系统-采用蓝牙定位方案-导乘整体解决方案
- 北航 软件学院课程 实用软件工具
- 10分钟带你读完人工智能的三生三世
- Redis数据结构(一)SDS
- 怎样做项目计划(转载)
- [Unity] 二维洞穴地图随机生成
- 图片怎么识别文字?超实用的文字识别技巧分享,分享给你
- 《蔡康永的说话之道》读书笔记
- 拼多多API接口大全
热门文章
- 计算机启动命令提示符,7种方式在Windows 10中打开或启动命令提示符 | MOS86
- android百度在线音乐api,百度音乐免费API接口
- java实现行政区域划分_java解析中国行政区域并在页面显示实现动态逐级筛选
- Superset 实现可视化报表发布
- Unity 导航网格的使用
- AD16 pdf打印输出彩色
- Android pad 刷成苹果,利用安卓手机运行checkra1n越狱你的iPhone/iPad教程,支持12.3-13.5-13.7-14.3-14.4系统...
- Livereload介绍
- the system requirements are not satisied或Android Studio不支持HAXM
- java软件开发是什么_java常用的开发软件是什么
- Jmeter接口压力测试(先登录再测接口)