使用Jmeter做web测试实战篇

发表于:2017-9-30 15:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:飞翼_U    来源:51Testing软件测试网采编

  目的:打压epg页面,页面包含首页,列表页。看下页面的TPS。
  1.录制工具 BlazeMeter
  此处介绍一个脚本录制工具,因为epg的首页是有登录的,如果自己在jmeter里面录制脚本的话很难跑起来,老大给我推荐了 chrome的一个插件 BlazeMeter,直接在安装注册就可以录制。
  BlazeMeter.png
  2.优化脚本
  录制好的脚本使用 jmeter打开,然后跑一下,监控一下结果树。
  如果列表页需要先登录首页带入用户登录session,需要使用到 事务控制器,下面是基本的树结构。
  基本结构树.png
  3.执行脚本
  把调整好的脚本放到服务器上先打压几分钟。
  这样打压出来的TPS很低,下载资源网速占满了,百兆带宽都用完了。
  这些在jmeter报告里面的出来的。
  拿资源占用网速.png
  11537.88kb/s 约 11M/s,100M光纤的下载速度是 100M/8=12.5。
  4.分析结果
  为了解决上面问题,去掉如下选项的勾选即可。
  Paste_Image.png
  资源监控过程中还发现内存消耗比较大,dump下来观察内存使用较高的地方,发现如下问题:
  Paste_Image.png
  然后把应用的web.xml里面的 <session-timeout>180</session-timeout> 的 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等一系列信息,列成表格发邮件出来即可:
  打压结果c.png
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号