【原创】基于RBI的性能测试理念,通过jmeter快速定位接口最大并发用户数
测试工具:jmeter v_5.2
测试对象:某网站的物料获取接口,需登录后操作
测试目的:快速定位该接口最大并发用户数
思路&步骤:
1.模拟一个场景,某天临近下班,主管突然过来让你测下你们网站,一个获取物料接口的性能,撂下一句“找下它最大的并发数,然后扣扣上跟我说下”。你说你怎么办,要做的很严谨吗(把软件,硬件,网络环境,代码算法逻辑等因素都放进去),可以这么做,但场景设计的越是复杂,影响性能瓶颈的因素就越多,这样就越难找到自己想要的结果,等你测试完成,网站可能已经被用户踩塌了,所以引入RBI测试理念,突出快速。
2.按要求先网站登录,再调用物料获取接口,你把脚本整理出来了

注意,登录的线程组是“setup thread group”,获取物料的线程组是“Ultimate thread group”
前者是把登录作为测试前准备来看,后者是为了更好控制接口压力
正则表达式提取器,为了提取token用于后面接口的操作
BeanShell后置处理程序,为了实现跨线程组参数的传递
Http信息头管理器,为了存储获取到的token
固定定时器,为了进一步控制接口压力
聚合报告,为了用来获取关键的测试结果
3.脚本的框架有了,接下去你就要设计测试场景, “几秒起几个用户,持续操作多久,然后停止操作要花几秒”

start threads count:并发的用户数
Initial Delay,sec:延迟启动的时间
Startup Time,sec:启动线程的耗时
Hold Load For,sec:持续时间
Shutdown Time:关闭线程的耗时
1.先来个,0秒启动100个并发,持续一分钟,然后马上关闭全部线程,结果你发现,响应时间,吞吐量数据都不好看,说不定还有若干请求报错了。
原因猜测,压力太大,请求可能堵在客户机或者服务端,时间过长,就会超时报错
2.打算降压,30秒启动10个并发,持续一分钟,然后10秒关闭全部线程,结果你发现,响应时间很短,但吞吐量不高。
原因猜测,压力太小,服务端还没开始就结束了
3.再次优化,30秒启动50个并发,持续一分钟,然后10秒关闭全部线程,结果你发现,吞吐量有个持续走高的过程,会有浮动,且会出现一个峰值
原因猜测,客户机在不停给服务端施压,服务器处于逐渐满负荷运行的状态
4.现在你有了一个峰值的吞吐量,以及对应的响应时间,就能得出服务器最优状态下的最大并发用户数了,
吞吐量(此处的吞吐量假设等于TPS)X 平均响应时间 ≈ 最大并发数
注意事项:
1.由于主动忽略了很多外部环境因素,最后得出的也应该只是一个大致结果
【原创】基于RBI的性能测试理念,通过jmeter快速定位接口最大并发用户数的更多相关文章
- jmeter的线程数,并发用户数,TPS,RPS 关系解说
背景 在做性能测试的时候,传统方式都是用并发虚拟用户数来衡量系统的性能(站在客户端视角),一般适用于一些网页站点例如首页.H5的压测:而RPS(Requests per second)模式主要是为了方 ...
- 性能测试中TPS和并发用户数
并发用户数与TPS之间的关系 1. 背景 在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好:对TPS不是非常理解,也根本不知道它们之间的关系 ...
- 使用Jmeter进行http接口性能测试
在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具. 但是Postman只能模拟单客户端的单次请求,而对 ...
- jmeter简单的接口性能测试
原文转自:https://blog.csdn.net/lovesoo/article/details/78579547 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 ...
- [原创]Linux下网络性能测试Netperf工具介绍及安装
[原创]Linux下网络性能测试Netperf工具介绍及安装 1 官方网站 http://www.netperf.org/netperf/ 2 Netperf介绍 Netperf是一种网络性能的测试工 ...
- 使用Jmeter进行http接口性能测试(转载)
在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具. 但是Postman只能模拟单客户端的单次请求,而对 ...
- 基于python的性能测试工具–locust
现在有很多的性能测试工具,比如说我们熟悉的loadrunner.jmeter.ab.webbench等等,这些工具如果对一个没用过的朋友来说,学习起来比较不容易,但是如果你能看懂python代码,会写 ...
- 性能测试分享:Jmeter的api监控工具解决方案
性能测试分享:Jmeter的api监控工具解决方案 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...
- 性能测试分享:jmeter性能监控(一)
性能测试分享:jmeter性能监控(一) poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908 ...
随机推荐
- 29.eval函数
eval 函数 eval() 函数十分强大 -- 将字符串 当成 有效的表达式 来求值 并 返回计算结果 123456789101112131415 # 基本的数学计算In [1]: eval(&qu ...
- XX系统测试总结报告
XX系统测试总结报告 1 引言 1.1 编写目的 编写该测试总结报告主要有以下几个目的 1. 通过对测试结果的分析,得到对软件质量的评价 2. 分析测试的过程,产品,资源,信息, ...
- js作用域其二:预解析
文章目錄 解析机制 JavaScript是一门解释型的语言 , 想要运行js代码需要两个阶段 编译阶段: 编译阶段就是我们常说的JavaScript预解析(预处理)阶段,在这个阶段JavaScript ...
- Linux 信号介绍
是内容受限时的一种异步通信机制 首先是用来通信的 是异步的 本质上是 int 型的数字编号,早期Unix系统只定义了32种信号,Ret hat7.2支持64种信号,编号0-63(SIGRTMIN=31 ...
- acedCommandS 实现pedit命令
acedCommandS(RTSTR, _T("PEDIT"), RTSTR, _T("M"), R ...
- 【视频+图文】带你快速掌握带continue语句的双重for循环
双重for循环掌握后,我们就一起来看看双重for循环的进阶内容一之带continue语句的双重for循环. 上期双重for循环[视频+图文]讲解传输门:点击这里可去小乔的哔哩哔哩观看for循环视频~ ...
- Spring事务Transactional和动态代理(一)-JDK代理实现
系列文章索引: Spring事务Transactional和动态代理(一)-JDK代理实现 Spring事务Transactional和动态代理(二)-cglib动态代理 Spring事务Transa ...
- beego的安装以及bee的安装和使用
beego的安装以及bee的安装和使用 一.beego的安装 1.beego是什么 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API.Web 及后端服务等各种应用, ...
- Lambda表达式(JDK8)
在说Lambda表达式之前,先介绍一下函数式接口 函数式接口 就是只定义了一个抽象方法的接口,我们可以使用注解@Functionallnterface,来强约束这种接口为函数式接口.如Runnable ...
- 前后端分离下的跨域CAS请求
最重要的两点: ajax请求跨域的时候,默认不会携带cookie. 请求分为普通请求(HttpRequest)和Ajax请求(XMLHttpRequest) 先屡一下跨域CAS认证的流程: 前端发起a ...