<p>JMeter压力测试教程及结果分析。jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。 Jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。</p><p><strong>Java环境的安装与配置</strong></p><p>因为JMeter是使用JAVA写的,所以使用JMeter之前,先安装JAVA环境,oracle官网下载JDk https://www.oracle.com/technetwork/java/javase/downloads/index.html</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560618528793.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>配置变量</p><p>1、系统变量→新建 JAVA_HOME 变量 ;</p><p>变量值填写jdk的安装目录(本人是 E:\Java\jdk1.7.0)</p><p>2、系统变量→寻找 Path 变量→编辑;</p><p>在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码)</p><p>3、系统变量→新建 CLASSPATH 变量;</p><p>变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)</p><p>4、系统变量配置完毕</p><p>测试jdk是否安装成功,可在【开始】中搜索cmd,输入【java -version】</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560635741377.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p><span style="font-size: 18px;"><strong>JMeter下载与使用</strong></span></p><p>1、JMeter下载地址:在官网 http://jmeter.apache.org/</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560649227398.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>2、解压下载的二进制包,使用cmd命令进入bin目录,使用jmeter.bat启动程序。(注意直接双击jmeter.bat无法启动时需要使用Window+R,输入cmd,然后进入bin目录如下)</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560663205441.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>3、启动之后会有两个窗口,一个cmd窗口,一个JMeter的 GUI</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560673927016.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>上面的意思就是:不要使用GUI运行压力测试,GUI仅用于压力测试的创建和调试;执行压力测试请不要使用GUI。使用下面的命令来执行测试:</p><pre class="brush:bash;toolbar:false">jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]</pre><p></p><p style="text-align: center;"><strong><img src="/upload/content/20200516/1589560692466044.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></strong></p><p></p><p><strong>JMeter创建测试</strong></p><p>1、创建线程组</p><p>在“测试计划”上右键 【添加】-->【Threads(Users)】-->【线程组】</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560704786612.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>2、设置线程数和循环次数。我这里设置线程数为500,循环一次。</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560714636699.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>3、创建Http请求</p><p>在“线程组”右键 【添加-】->【samlper】-->【HTTP 请求】</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560727943151.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>4、添加察看结果树和聚合报告</p><p>在我们刚刚创建的线程组上右键 【添加】-->【监听器】-->【察看结果树】。添加聚合报告,右键 【添加】-->【监听器】-->【聚合报告】。</p><p>直接添加,然后点击运行按钮就可以看到结果了。</p><p><strong>JMeter结果树分析</strong></p><p style="text-align: center;"><img src="/upload/content/20200516/1589560740643779.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>通过察看结果树,我们可以看到每个请求的结果,其中红色的是出错的请求,绿色的为通过。Thread Name(线程组名称): 线程组 1-24</p><p>Sample Start( 启动开始时间): 2019-02-15 15:00:14 CST</p><p>Load time(加载时长): 290</p><p>Connect Time:(连接时长) 86</p><p>Latency(等待时长): 174</p><p>Size in bytes(发送的数据总大小): 2212</p><p>Sent bytes:821</p><p>Headers size in bytes(发送数据的其余部分大小): 1162</p><p>Body size in bytes: 1050</p><p>Sample Count(发送统计): 1</p><p>Error Count(错误统计): 0</p><p>Data type ("text"|"bin"|""): text</p><p>Response code(返回状态码): 200</p><p>Response message(返回信息): OK</p><p>这里绿色的就说明请求是通过的,返回值是200,如果出现红色的×就说明请求失败,这时候可以通过右边的取样器结果和响应数据来查看结果。</p><p style="text-align: center;"><img src="https://panxu.net/upload/content/20200516/1589560760262584.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>聚合报告分析:</p><p>Sample:本次测试场景共运行多少线程;</p><p>Average:平均响应时间;</p><p>Median:统计意义上的响应时间中值;</p><p>90% line:所有线程中90%的线程响应时间都小于xx的值;</p><p>Min:响应最小时间;</p><p>Max:响应最大时间;</p><p>Error:出错率;</p><p>Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”来衡量。 时间单位已经被选取为second,所以,显示速率至少是1.0,即每秒1个请求。 当吞吐量被保存到CVS文件时,采用的是requests/second,所以30.0 requests/second 在CVS中被保存为0.5</p><p>Kb/sec - 以Kilobytes/seond来衡量的吞吐量</p><p><strong>JMeter测试结果</strong></p><p>1、50个用户同时访问企业用户会议室预定页面,平均响应时间是0.146秒,最大的响应时间0.387秒,最小的响应时间是0.096秒,错误率为0。</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560787807613.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p><p>2、100个用户同时访问企业用户会议室预定页面,平均响应时间是2.295秒,最大的响应时间8.132秒,最小的响应时间是0.425秒,错误率为0。</p><p style="text-align: center;"><img src="/upload/content/20200516/1589560793943313.jpg" alt="JMeter压力测试教程及结果分析" title="JMeter压力测试教程及结果分析" width="550px"/></p>