使用Jmeter做web测试-实战

目的:打压epg页面,页面包含首页,列表页。看下页面的TPS。

1.录制工具 BlazeMeter

此处介绍一个脚本录制工具,因为epg的首页是有登录的,如果自己在jmeter里面录制脚本的话很难跑起来,老大给我推荐了 chrome的一个插件 BlazeMeter,直接在安装注册就可以录制,使用参考链接 用BlazeMeter录制JMeter测试脚本。

使用Jmeter做web测试-实战_第1张图片
BlazeMeter.png

2.优化脚本

录制好的脚本使用 jmeter打开,然后跑一下,监控一下结果树。
如果列表页需要先登录首页带入用户登录session,需要使用到 事务控制器,下面是基本的树结构。

使用Jmeter做web测试-实战_第2张图片
基本结构树.png

3.执行脚本

把调整好的脚本放到服务器上先打压几分钟。
这样打压出来的TPS很低,下载资源网速占满了,百兆带宽都用完了。
这些在jmeter报告里面的出来的。

拿资源占用网速.png

11537.88kb/s 约 11M/s,100M光纤的下载速度是 100M/8=12.5。

4.分析结果

为了解决上面问题,去掉如下选项的勾选即可。

使用Jmeter做web测试-实战_第3张图片
Paste_Image.png

资源监控过程中还发现内存消耗比较大,dump下来观察内存使用较高的地方,发现如下问题:

使用Jmeter做web测试-实战_第4张图片
Paste_Image.png

然后把应用的web.xml里面的 180 的 180 修改为了 5 ,180代表保持session3小时,5代表5分钟。把这个变小后再压就没有内存占用很多的现象了。

5.稳定性测试

平时打压也就20分钟-30分钟,但是要是测稳定性的话,需要24小时,周六的晚上我在脚本中设置了跑24小时,周日我就去上课了,想着等我晚上放学回家就应该看到结果了,然并卵,晚上回家一看,没有生成报告。

于是看了日志,发现如下:

2017/08/20 19:48:15 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.RequestsSummaryConsumer#stopProducing(): requestsSummary produced 0 samples 
2017/08/20 19:48:17 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.StatisticsSummaryConsumer#stopProducing(): statisticsSummary produced 0 samples 
2017/08/20 19:48:17 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.Top5ErrorsBySamplerConsumer#stopProducing(): top5ErrorsBySampler produced 0 samples 
2017/08/20 19:48:17 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.ErrorsSummaryConsumer#stopProducing(): errorsSummary produced 0 samples 
2017/08/20 19:48:17 INFO  - org.apache.jmeter.report.processor.AbstractSampleConsumer: class org.apache.jmeter.report.processor.graph.impl.HitsPerSecondGraphConsumer#stopProducing(): hitsPerSecond produced 0 samples 
2017/08/20 19:48:58 ERROR - jmeter.JMeter: Uncaught exception:  java.lang.OutOfMemoryError: Java heap space
    at org.apache.commons.math3.util.ResizableDoubleArray.expand(ResizableDoubleArray.java:697)
    at org.apache.commons.math3.util.ResizableDoubleArray.addElement(ResizableDoubleArray.java:442)
    at org.apache.commons.math3.stat.descriptive.DescriptiveStatistics.addValue(DescriptiveStatistics.java:168)
    at 

看原因应该是jmeter在生成报告的时候内存不足,生成报告失败。
这时候就需要我们修改jmeter的执行文件,分配内存。

linux环境,修改jmeter.sh
修改如下配置:
java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"
注意:内存分配的大小根据自己的服务器性能和原来的配置设置

调整好内存再执行长时间打压,应该就不会报错了。

6.得出结论

像接口测试一样,最终我们会得到页面的TPS等一系列信息,列成表格发邮件出来即可:

使用Jmeter做web测试-实战_第5张图片
打压结果c.png

备注:如需转载,请私信联系我。

你可能感兴趣的:(使用Jmeter做web测试-实战)