使用jmeter 压测并生成HTML测试报告
hello 大家好!这是我入园3来以来写的第一篇博客文章,之前也总想写点什么,但终究是因为懒~~的动笔吧,就一直搁置了。。。今天想起动笔是因为刚刚在项目中实践并折腾了一大圈,最终解决了一系列问题,故而记录下心酸历程。写的不太好,大家见谅!!
压测环境准备
- 安装jdk 1.8以上版本 + jmeter 5.0以上版本(特别是jdk版本很重要,之前小编使用的是jdk1.7生成HTML报告就会有问题,下面另说。)大家在做压测之前可以首先检查下自己的环境是否符合以上标准,否则会半途而废哦~下面就具体说下环境安装和卸载
检查jdk版本:
- 打开终端输入以下命令, 如果是低于jdk1.8以下版本那么就需要先卸载1.7版本在安装1.8版本的
ls /Library/Java/JavaVirtualMachines/
jdk1.8.0_172.jdk
卸载低版本jdk
sudo rm -rf /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -rf /Library/PreferencePanes/JavaControlPanel.prefPane
ls /Library/Java/JavaVirtualMachines/
sudo rm -rf /Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk
java -version
安装1.8版本jdk
- 由于官方网站访问时常会异常,推荐使用国内源下载jdk
- 打开网址,找到8uxxxx开头的,点击进入,在里面找到macosx-x64.dmg的文件下载安装即可。
- 安装完出可以使用
命令ls /Library/Java/JavaVirtualMachines/ 检验下
修改jmeter.properties配置文件
- 环境都准备好后,最后一步就是修改jmeter/bin/jmeter.properties文件的参数,为了方便大家学习使用,我已经把修改好的文件放在下面啦~直接全部复制粘贴过去即可。
language=zh_CN
not_in_menu=org.apache.jmeter.protocol.mongodb.sampler.MongoScriptSampler,org.apache.jmeter.protocol.mongodb.config.MongoSourceElement,\
org.apache.jmeter.timers.BSFTimer,org.apache.jmeter.modifiers.BSFPreProcessor,org.apache.jmeter.extractor.BSFPostProcessor,org.apache.jmeter.assertions.BSFAssertion,\
org.apache.jmeter.visualizers.BSFListener,org.apache.jmeter.protocol.java.sampler.BSFSampler,\
org.apache.jmeter.protocol.http.control.gui.SoapSamplerGui
gui.quick_0=ThreadGroupGui
gui.quick_1=HttpTestSampleGui
gui.quick_2=RegexExtractorGui
gui.quick_3=AssertionGui
gui.quick_4=ConstantTimerGui
gui.quick_5=TestActionGui
gui.quick_6=JSR223PostProcessor
gui.quick_7=JSR223PreProcessor
gui.quick_8=DebugSampler
gui.quick_9=ViewResultsFullVisualizer
remote_hosts=127.0.0.1
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS
sampleresult.timestamp.start=true
upgrade_properties=/bin/upgrade.properties
HTTPResponse.parsers=htmlParser wmlParser cssParser
cssParser.className=org.apache.jmeter.protocol.http.parser.CssParser
cssParser.types=text/css
htmlParser.className=org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
htmlParser.types=text/html application/xhtml+xml application/xml text/xml
wmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
wmlParser.types=text/vnd.wap.wml
jdbc.config.check.query=select 1 from INFORMATION_SCHEMA.SYSTEM_USERS|select 1 from dual|select 1 from sysibm.sysdummy1|select 1|select 1 from rdb$database
jdbc.config.jdbc.driver.class=com.mysql.jdbc.Driver|org.postgresql.Driver|oracle.jdbc.OracleDriver|com.ingres.jdbc.IngresDriver|com.microsoft.sqlserver.jdbc.SQLServerDriver|com.microsoft.jdbc.sqlserver.SQLServerDriver|org.apache.derby.jdbc.ClientDriver|org.hsqldb.jdbc.JDBCDriver|com.ibm.db2.jcc.DB2Driver|org.apache.derby.jdbc.ClientDriver|org.h2.Driver|org.firebirdsql.jdbc.FBDriver|org.mariadb.jdbc.Driver|org.sqlite.JDBC|net.sourceforge.jtds.jdbc.Driver|com.exasol.jdbc.EXADriver
summariser.name=summary
beanshell.server.file=../extras/startup.bsh
csvdataset.file.encoding_list=UTF-8|UTF-16|ISO-8859-15|US-ASCII
cookies=cookies
view.results.tree.renderers_order=.RenderAsText,.RenderAsRegexp,.RenderAsBoundaryExtractor,.RenderAsCssJQuery,org.apache.jmeter.extractor.json.render.RenderAsJsonRenderer,.RenderAsXPath2,org.apache.jmeter.extractor.json.render.RenderAsJmesPathRenderer,.RenderAsXPath,.RenderAsHTML,.RenderAsHTMLFormatted,.RenderAsHTMLWithEmbedded,.RenderAsDocument,.RenderAsJSON,.RenderAsXML
classfinder.functions.contain=.functions.
classfinder.functions.notContain=.gui.
user.properties=user.properties
system.properties=system.properties
jmeter.reportgenerator.apdex_satisfied_threshold=500
jmeter.reportgenerator.apdex_tolerated_threshold=1500
- 至此环境已经全部准备完毕啦!下面可以根据需要编写压测脚本执行并生成HTML测试报告啦
根据需求编写脚本执行并生成HTML报告
- 脚本是根据具体问题具体分析,由于内容涉及到公司系统,这里不再赘述,下面讲下用命令行生成报告的方式
jmeter -n -t /Users/hufeiliang/Desktop/狮桥压测脚本/狮桥单个发送消息接口.jmx -l /Users/hufeiliang/Desktop/report/single_result.txt -e -o /Users/hufeiliang/Desktop/single_webreport
为存放HTML报告的路径,前提是这些路径文件夹先建好。
- 其中要特别注意一点:每执行过一次脚本后,生成的报告文件,再次执行会报错,原因是文件夹不为空写入失败,此时可将日志文件内的报告删除,不用更换目录,但存放HTML内的文件删除不掉,因为内有隐藏文件,需要重新更换存放目录。
- 到这里就介绍完啦!去single_webreport文件夹中打开index.html即可在浏览器中查看报告。下面上一张截图展示下效果
|