jmeter使用

1.参考https://www.cnblogs.com/by-dream/p/5611555.html

【后台测试】手把手教你jmeter压测

 ◆版权声明:本文出自胖喵~的博客,转载必须注明出处。

  转载请注明出处:http://www.cnblogs.com/by-dream/p/5611555.html 

 

 

  我知道我迟早是要踏上了后台测试之路的,只是没想到来的这么突然。新接手了一个项目,在第一版发出后,产品需要做运营活动拉量,因为我担心突然的流量涌入是否会对后台造成压力呢?因此决定做一下压测:

  下面就一步一步的介绍我从0到1的压测过程吧。

  我下载的是 apache-jmeter-2.13,因为这个包下载下来通用linux和windows的,所以我们现在windows下打开它。

jmeter使用

  

  直接点击bat,打开jmeter:

jmeter使用

  添加一个线程组:

jmeter使用 

  添加完成之后,先设置这两项:

  jmeter使用

 

   然后右击左边的线程组,添加一个http请求

  jmeter使用

  添加完成之后,我们可以看到右边有了可以编辑的地方:

jmeter使用

  这里打算压测这样一个url,这个url请求是 http://cm.browser.qq.com/test_xianwu/api/buy 

  也就是拉取App的首页的信息

jmeter使用

 

  我们直接用浏览器打开是这样的:

jmeter使用

  见下图,我们需要把url分成两部分填写

jmeter使用

 

  这个时候点击保存,保存的文件路径自己指定,我保存到了bin目录下,保存完之后,是一个jmx文件。

jmeter使用

 

  保存完毕之后呢,我们需要,在压测的过程中,去查看请求的结果,因此需要添加一个“查看结果树”

 jmeter使用

  添加完毕之后的样子:

jmeter使用

  这个时候我们点击启动,看看效果吧:

jmeter使用

  这个时候我们把线程数加大,先加达到100

 jmeter使用

  加完之后,我去App端看了一眼,然后发现首页悲剧了,一片白屏:

jmeter使用

  这时候我们在网站上去看一下,发现果然,返回的子串当中,list的内容为空了,而这个list就是我们首页要展示出的物品:

jmeter使用

  既然我们知道了请求返回失败的特征是list为空,那么就增加一个断言,让他直接帮我们筛选出请求失败的样本。

  同样右击,“添加”-“断言”-“响应断言”,添加完成之后,我们添加一个substring:

jmeter使用

  这里说一下location是什么鬼。因为在请求成功的情况下,返回的list当中的信息当中有location,所以我们可以简单的认为,当location字段存在的时候,这个请求是成功的。

  这个时候我们再运行一下,看看结果树当中会不会帮我们辨别出来:  

 jmeter使用

  我们可以看到红色就是失败的个数。数量有点多,所以我们需要借助Aggregate Graph

jmeter使用

  添加完成之后,我们启动我们的服务,这个时候就能在这里看到一个大概的数据了:

jmeter使用

  这样我们就可以不断的去改变线程数,然后去观察失败率和吞吐量,得到一个当前请求的一个最佳的相应数。

  在测试的过程中我发现,如果手动去强制停止的话,最后的几条请求会因为手动停止而抛出异常,因此我们决定让他去请求2w次,2w次结束收自动停止。那么我们就需求在开始的地方设置采集次数:

jmeter使用

  这里需要注意线程数和循环次数的乘积等于一个固定值就可以,然后你可以变换两个乘数,最终我选择了线程数分别是10、20、50、80、100、200,得到的结果是:

jmeter使用

  最后生成图表,就可以看出来性能的瓶颈,下面是结果:

jmeter使用

  

   从图中我们不难看出响应时间延时很大,且错误率非常高,并且最大qps才能打到50出头,所以初步怀疑这是有性能问题的,最终反馈给开发,开发加入了缓存机制,并且增加了机器,经过优化之后,我们再看看数据对比:

jmeter使用

  很明显优化后的效果显著,达到了预期的效果。

  这就是我第一次简单压力测试的经过,看完后是不是你也可以做了。

 
posted @ 2016-07-22 16:58 胖喵~ Views(40253) Comments(35Edit 收藏

  
#1楼 2016-08-04 11:30 | zhaosolo  
瞄哥,看了这么多教程,你写的最详细。谢谢你带我入门。\:)

  
#2楼[楼主2016-08-05 12:18 | 胖喵~  
@ zhaosolo
谢谢支持~

  
#3楼 2016-11-24 17:55 | 暖暖_8023  
支持一下 ,写的很详细,很有收获,

  
#4楼[楼主2016-11-24 17:56 | 胖喵~  
@ 暖暖_8023
谢谢

  
#5楼 2016-12-01 18:53 | 906猎腓猎  
这个挺容易上手,但是觉得不如loadrunner。

明天再来细细琢磨

  
#6楼 2016-12-27 12:15 | 天空的梦  
学到了,谢谢楼主

  
#7楼 2017-01-18 15:25 | 906猎腓猎  
这个配以配合badboy 用

我想问一个问题:
就是那个接口信息怎么查看到,就是想做某个接口的压力测试,怎么拿到接口

抓包吗?

  
#8楼[楼主2017-01-18 15:50 | 胖喵~  
@ perfect_11a
最后是问开发要 开发都不给提供接口 那就不用帮他测了

  
#9楼 2017-01-18 16:15 | 906猎腓猎  
@ 胖喵~
good,我也想到了

不过你这句“开发都不给提供接口 那就不用帮他测了”
让我好爽

其实是想向你多学点。

  
#10楼 2017-02-21 09:24 | 菜鸟咸鱼  
可以啊兄弟,受教了

  
#11楼 2017-03-16 18:14 | 程序诗人  
好文,正好要写一篇呢。

  
#12楼 2017-03-16 18:15 | 程序诗人  
我觉得最后的吞吐率,应该为tps吧,不是qps吧。

  
#13楼 2017-03-16 18:22 | 程序诗人  
还有,你的线程数增加了,为什么请求数一直保持在了20000?
我觉得是不是一直都是 线程数*400 吗? 比如200,那么请求数应该是 200*400 = 8w。

  
#14楼 2017-04-12 09:42 | 906猎腓猎  
你这个我是明白了,经过这些天的琢磨。我有这样的问题

我想压测一个购物系统,他有个商品。比如共有5个,价格30元,我想压测6个人同时登陆去购买,会不会超卖

购物流程就是点击进入商品详情,输入购买个数,点击提交按钮

或者类似的教程

  
#15楼 2017-06-28 13:54 | susan3413  
写得很好啊 简单易懂 适合初级入门者 赞

  
#16楼[楼主2017-07-05 15:47 | 胖喵~  
@ susan3413
谢谢支持

  
#17楼 2017-08-17 14:53 | 田田0827  
请问下数据对比图形是怎么做的?

  
#18楼[楼主2017-09-08 23:51 | 胖喵~  
@ 田田0827
生成数据后,直接excel,哈哈

  
#19楼 2017-09-13 21:21 | 老道哥哥  
感谢 写的很详细 就差实践了

  
#20楼 2017-09-27 16:24 | 喜欢吃辣的吃货杰  
如果页面响应时间变动,吐吞量就会有偏差,建议加入定时器控制吞吐量

  
#21楼[楼主2017-09-29 14:32 | 胖喵~  
@ 喜欢吃辣的吃货杰