分享一个江湖小辈如何参透性能测试这本武功秘籍的心路历程,适用于刚踏入性能测试江湖里的小白,一起来一探究竟。

【开幕】武林秘籍惊现江湖在庞大的性能测试面前,我还是一个江湖小辈。然而在被YW大神领进门之后,性能测试中的变化莫测、十面埋伏、刚柔并济、九九归一,仿佛让自己窥见了一门武林绝学,继而心生敬畏之心。

LongLongAgo,听过YW大神对性能测试方面的分享。那个时候就感觉眼前的这个男人不明觉厉,练就了一身武林绝学,是自己以后发展的榜样。当时他还给我们展示了他的武林秘籍,是这样的:

【第一幕】该不该预测一个初始值?

第一次真正接触性能测试是在邮箱大师组,当时是要去对“邮件撤回”的接口进行性能测试,2017年6月25日接到任务,二话不说开始准备了起来。对jmeter速成之后,拿着wzprecall的脚本就开始开压。

那么第一个问题来了:

我:我应该怎么压?我是说有没有一个初始的值可以入手去压?...

我:YW大神经验丰富,是否可以预测出这个初始值?

YW大神:不能。

我:...

YW大神:如果我都预测出来了,那还需要性能测试做什么?

我:哦...

YW大神:两个方法:要么和产品交流拿到实际的用户量数据,要么自己想办法。

我:好嘞。

屁颠屁颠跑去找产品同学,在我的三寸不烂之舌以及一箩筐解释下,产品同学终于听懂了,但是回答是:我不知道,我真的不知道,我真的真的不知道。。。怀着复杂的心情我翻开了YW大神的武林秘籍第一页,当时有这么一张图:

看着这本高深的武功秘籍开始发散性思维:

性能测试就像过山车,开始的慢速起步让你紧张,中途的起起伏伏让感觉很爽,最后戛然而止回到起点。

所以,性能测试中:

起步阶段一定不要立马就开始,而是需要一个逐步缓冲阶段,这个时候就需要调整“Ramp-upPeriod”;这里普及一下【Ramp-upPeriod】:Ramp-upPeriod用于告知JMeter要在多长时间内建立全部的线程。该数据默认值是0,表示JMeter将立即建立所有线程如上图图一。假设Ramp-upPeriod设置成T秒,全部线程数设置成N个,JMeter将每隔T/N秒建立一个线程。如上图图二。

这个车不知道能坐多少人的情况下,你不能无限制添加人员,否则造成事故就坏了。记录你被“甩”的最爽的那段时光,因为那段时光是过山车最大的意义,随后一切都是满脸激动的泪水。在性能测试中可以将90%Line作为一个重要的参考数据。

经过初探武林秘籍形成练法心得之后,开始了自己的第一层修炼,数据如下:

看到图中显示的这么多Error,发现第一次在没有高人点拨的时候,很难参悟其中奥义。但是也习得一些武功心法:

1、在以上用户量的情况下,这个性能是很差的;

2、知道了报告里面字段的意义:

1)#sample:这次测试任务中,一共发出了多少个请求

2)Average:单个request的平均响应时间

3)Median:50%用户的响应时间

4)90%Line:90%的用户一个请求的响应时间

还有Error和Throughtput以及最大、最小响应时间等。

我们这次脚本中设置的超时时间也是8000ms,所以可以看到还是有一部分请求超时,才会导致最后请求失败。

根据武侠小说的经验得出,再这样练下去肯定会走火入魔,当务之急需要YW大神指点一二,必能得其真传。

【第二幕】从单线程开始

拿着上面粗糙的数据,我又去找了YW大神。

当时大神只问了一个问题,我立马打道回府干劲十足:“单线程的响应时间是多少?”

开始参悟:当没有人坐过山车时,过山车肯定是不会开的。但是就算只有一个人坐过山车,一段时间内,也必须开车。(当然在国内不可能)。而本文的第一张图可以看到,用户量也是从0开始增长,而单线程(1个用户)可以作为一个参考的基准。

上图可以看到一个用户的执行一次的响应时间,然后可以慢慢递增。然后我将线程数逐渐增加的同时,有了以下的测试数据:

拿着上图手中的测试数据,说不出来的感觉,早晨测试出用户量在20~25之间似乎接近饱和,但是下午的数据基本是在30~40之间,带着疑问我又来咨询YW大神。

【第三幕】用命令行形式跑性能测试,然后观察机器性能。

YW大神:你是在哪里跑的?机器的cpu如何?内存怎样?

我:...这些我有看的啊,在我本地机器跑的(顺便随手拿出了我的电脑内存和cpu数据)

YW大神:要在服务器用jmeter命令行跑。

我:哦...

认真回去看了Jmeter官方文档,第一页赫然写到:欲练此功,必先...使用命令行!

Forloadtesting,youmustrunJMeterinthismode(WithouttheGUI)togettheoptimalresultsfromit.这里对命令行格式的使用记录如下:

例1:测试计划与结果,都在%JMeter_Home%\bin目录

>jmeter-n-t../scripts/wzprecall.jmx-lresult.jtl

例2:指定日志路径的:

>./jmeter-n-t../scripts/wzprecall.jmx-lreport-output\01-result.csv-jreport-output\01-result.log

【拓展】:

例3:默认分布式执行:

>jmeter-n-t../scripts/wzprecall.jmx-r-lreport-output\01-result.csv-jreport-output\01-result.log

例4:指定IP分布式执行:

>jmeter-n-t../scripts/wzprecall.jmx-R192.168.10.25:1036-lreport-output\01-result.csv-jreport-output\01-result.log

测试数据以及分析:

数据中看到:用户量在30到40之间基本饱和,withdrawQuery请求吞吐量基本在16.5/s。

测试数据看起来已经有点样子也得到了结果,拿着数据我找了YW大神。

【第四幕】控制吞吐!控制吞吐!控制吞吐!

YW大神:吞吐20都不到,这个是不可能的。

我:...

YW大神:注意控制吞吐!

测了这么多的数据,发现很多时候的步骤都是自己不断尝试不同的线程数,在有很多未知的情况下去试探,这种方法耗时耗力,而且最后得到的数据并不能说明问题。那么另一种方法就是完全通过定时器来控制QPS,这就类似于控制变量法,将吞吐控制之后,如果实际的吞吐达到限制的吞吐表示现在性能合理,且有上升空间,如果随着线程数的增加限制的吞吐和实际吞吐差别很大,那么恭喜你,你找到了这个接口性能的天花板中的一板。Jmeter提供了一个非常有用的定时器,称为ConstantThroughputTimer(常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。

Targetthroughput(insamplesperminute):目标吞吐量。注意这里是每分钟发送的请求数。20QPS,这里的值应该是1200。

CalculateThroughputbasedon:有5个选项,分别是:

Thisthreadonly:控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的targetThroughput乘以该线程的数量。

Allactivethreads:设置的targetThroughput将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。

Allactivethreadsincurrentthreadgroup:设置的targetThroughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和Allactivethreads选项的效果完全相同。

Allactivethreads(shared):与Allactivethreads的选项基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

Allcativethreadsincurrentthreadgroup(shared):与Allactivethreadsincurrentthreadgroup基本相同,唯一的区别是,每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。

在控制吞吐之后,得到的数据有模有样:

【第五幕】武林秘籍重现江湖!

手捧着数据,回到了YW大神身边,YW大神语重心长的说:在我的武功秘籍里,不对,在我的ppt里有一张performancecurve。

你的结果能对的上performancecurve,你就能明白一些结果了。

一切仿佛又回到了起点,只是世界变得安静了。静静地翻看这本秘籍,我想我有点懂了。

总结:

用户量为40的时候,平均响应时间基本在400ms左右,此时吞吐量在1500/min(25/s),吞吐量还在上升阶段。

用户量到55~65阶段,吞吐量基本达到峰值2076/min(34.6/s),用户量在65的时候,响应时间开始快速上升。

用户量在70+以后,吞吐量急速下降,相应的响应时间也在75的时候达到了1000ms+左右。

通过以上评估,压力<=40阶段,为lightload阶段,压力在40~50之间比较理想饱和阶段,50~65之间服务器heavyload阶段。

当用户>70的时候,为buckleZone阶段。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                     群:                    755431660

看房子软件测试初学者,新人必看,测试大佬私藏的入门性能测试五步走,果断收藏!...相关推荐

  1. 你在自学软件测试吗?学软件测试10本必看书

    没有软件开发,就没有软件测试.有了软件测试,软件开发出的软件产品才能达到用户满意的地步,他们之间是相互依赖的关系.软件测试在软件开发行业是不可或缺的存在,你在自学软件测试吗?学软件测试10本必看书你该 ...

  2. seo从入门到精通_从入门到精通,新人必看的3本书SEO书籍

    SEO入门书本引荐:从入门到通晓,新人必看的3本书 在这个网上学习泛滥的年代,很多人都习气在网络上找教程学习,无论上视频教程,学习论坛,或是网上课堂等等.但也有些人仍是更习气看书学习的,很多人问我有没 ...

  3. java重要基础知识点_必看 | 新人必看的Java基础知识点大梳理

    原标题:必看 | 新人必看的Java基础知识点大梳理 各位正在认真苦学Java的准大神,在这烈日炎炎的夏季里,老九君准备给大家带来一个超级大的"冰镇西瓜,"给大家清凉一下,压压惊. ...

  4. mysql+数据库连接标识_新人必看!连接到MySQL数据库的两种方法

    原标题:新人必看!连接到MySQL数据库的两种方法 使用mysql二进制方式连接 您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库. 实例 以下是从命令行中连接mysq ...

  5. 重装上阵怎么造简便机器人_重装上阵怎么造厉害的机器人?新人必看的干货组装教学[多图]...

    重装上阵怎么造厉害的机器人?重装上阵上线的时间不长很多玩家在游戏中体验后都觉得自己设计的机器人性能不好,或者不够完美,想要制作一个强大的机器真的那么困难吗?为了帮助到大家,今天小编就为大家带来重装上阵 ...

  6. 注塑模设计的一般流程,模具新人必看

    注塑模设计的一般流程,模具新人必看 注塑模的规划过程 一. 注塑模首要由成型部件(指动.定模部分有关组成型腔的零件).浇注体系(将熔融的塑料从打针机喷嘴进入模具型腔所经的通道).导向部件(使模具合模时 ...

  7. FreeSurfer皮层分割软件初学者学习必看内容

    1.linux书籍和笔记可见附件中,推荐学习linux的视频为:linux初学者必看 这个视频我认为对于初学者是很好的,学习周期大概2到3天即可. 2.freesurfer皮层分割的软件参考官网:Fr ...

  8. 兼阅万分享:互联网新人必看,让你少走弯路

    互联网是一个神奇的行业,大门不出二门不迈,一根网线一台电脑就可以赚钱.它给我们创造了前所未有的商业机会,让成千上万有梦想,敢想敢干的人通互联网获得了巨大的成功!正因为如此,无数新人涌入这个行业,希望在 ...

  9. [测试新人必看] 测试报告如何编写? 掌握这五十个测试报告模板

    作为一个曾经是测试萌新的我,在首次接收到一个任务时总有一种忐忑慌张激动紧张期望的复杂情绪~~ 忐忑慌张紧张是怕自己做不好,得不到领导的赏识:激动期望是哇塞,我有任务了耶,终于有我的用武之地了~~~ 就 ...

最新文章

  1. luogu P1064 金明的预算方案
  2. flask python web开发 可视化开发_Python + Flask 项目开发实践系列六
  3. ZkServer服务启动的逻辑-NIOServerCnxnFactory.start
  4. Java连接mysql出现SQL异常,MySQL 这样连接为何出现这样的异常
  5. java table 设置长度_Java字节码lookupswitch和tableswitch总指令长度
  6. c语言表达式10 6的结果,C语言表达式(++i)+(++i)+(++i)结果多少?
  7. C#常见错误解决方法
  8. Shopee平台,对接运营经理是一条离成功更近的捷径
  9. 直接管理和维护计算机系统的程序称为,全国2008年04月自学考试计算机原理试题及答案.doc...
  10. web常见的屏幕尺寸
  11. Python框架django路由管理
  12. 中秋节快到了,一起用MATLAB绘制一款2.5D月饼叭
  13. 拼多多库存怎么做|旭宇同创
  14. qchart 坐标轴设置_qt qchart缩放后坐标轴间隔取整
  15. 大数据平台数据管控整体解决方案(48页PPT附下载)
  16. 数字VR虚拟博物馆的功能介绍
  17. Timer定时器详解
  18. MemoryError: Unable to allocate array with shape (61721, 16000) and data typ
  19. 对话|鲜丰水果:“看不见”的门店数字化
  20. STM32F103C8T6寄存器简单应用(流水灯)

热门文章

  1. CPI成折叠式OLED面板保护层关键材料
  2. python手持弹幕LED滚动字幕
  3. 2022年电赛A题单相交流电子负载一等奖(代码工程+PCB原理图资料)
  4. synergy使用方法和安装包
  5. 力天创见双目客流统计方案
  6. excel 常见的六个排序方法,你必须要学会
  7. 泰勒公式--泰勒多项展开以及应用
  8. 音频数据格式:PCM,WAV,MIDI
  9. ElasticSearch 全文搜索引擎;ES 搜索引擎
  10. C++中标准模板库STL基本概念