·Jmeter的命令行与ant等的集成。
·为什么需要使用Jmeter的命令行模式(Non-GUI)。
·为了更好的利用负载机的资源。
GUI模式会消耗更多的系统资源。
·为了更好的掌握jmeter和其它工具的集成。
·如何使用jmeter的命令行呢?
·绝对路径的方式去调用jmeter的bin目录下的可执行程序。
·相对路径的方式去调用jmeter的bin目录下的可执行程序。
这种做法,要求我们把jmeter的bin目录添加到系统环境变量path中。
·Jmeter的命令参数:
-?:给出Jmeter的简要的命令参数列表及说明。
--help:
-v:显示jmeter的版本
-s:表示启动jmeter为server模式,等价于启动jmeter-server.bat
-D:表示指定jmeter启动时的属性。
格式为:-D属性名=属性值
在脚本中,通过${__P(,)} 或者 ${__property(,,)}来接收。
-n:表示jmeter以非GUI模式运行,即以命令行模式运行。
-t:用来指定要执行的jmeter的脚本。
-l:用来指定存储jmeter的执行结果的文件。要求后缀名为.jtl。
-j:用来指定存储jmeter的运行日志的日志文件。
-e:表示将结果输出为HTML报告。
-o:指定输出的HTML报告所存储的路径(文件夹)
-g:表示通过已经存在的jmeter执行结果jtl来生成报告,通常结合-e -o来使用。
-r:表示远程全部启动。即在jmeter.properties文件中所配置的remote_hosts上全部启动负载。
-R:格式为 -R host1:port1,host2:port2
表示在指定的负载机上远程启动脚本。
PS:此时jmeter.properties文件中所配置的remote_hosts将失效。
-X:退出,是指远程执行完毕之后,自动关闭jmeter-server。
·示例:
jmeter -n -t phpwind_fatie_badboy.jmx -l d:/report/test1.jtl
表示以非GUI模式执行当前路径下的脚本phpwind_fatie_badboy.jmx,并且将执行结果存入d:/report/test1.jtl。
PS:该jtl结果文件,可以在GUI模式下添加监听器,然后打开该文件即可查看。
jmeter -n -t phpwind_fatie_badboy.jmx -l d:/report/test1.jtl -Dthreadnum=5 -Dcount=10
表示以非GUI模式执行当前路径下的脚本phpwind_fatie_badboy.jmx,并且将执行结果存入d:/report/test1.jtl。并且传入两个properties变量分为:threadnum=5,count=10
jmeter -n -t phpwind_fatie_badboy.jmx -l d:/report/test1.jtl -Dthreadnum=5 -Dcount=10 -e -o d:/report/html
表示以非GUI模式执行当前路径下的脚本phpwind_fatie_badboy.jmx,并且将执行结果存入d:/report/test1.jtl。并且传入两个properties变量分为:threadnum=5,count=10
并且生成html报告,结果存入指定的路径d:/report/html。
jmeter -g d:/report/test7.jtl -e -o d:/report/html/t2
根据已经存在的结果文件d:/report/test7.jtl来生成html报告,结果存入指定的路径d:/report/html/t2。
·注意事项:
1、在使用jmeter的命令行运行脚本时,结果文件*.jtl是追加,而不是覆盖。
因此,要保证每一次命令执行时,所指定的jtl文件名是不存在的。
2、使用命令行执行jmeter时,jtl结果文件中最终存储哪些信息,和GUI模式下的监听器组件没有任何关系,而是由jmeter.properties中的结果文件配置属性决定的。
3、-o属性所指定的目录必须是空目录。
·Ant+Jmeter的集成。
·安装Ant
Jmeter是没有提供ant的,需要我们自己安装。
下载地址:
https://ant.apache.org/bindownload.cgi
配置:
下载解压之后,将ant的bin目录配置到系统环境变量path中即可。
·相关的文件:
在jmeter的extras目录下,存放了jmeter和ant集成所需要的文件。
·自定义报告模板:
因为默认的ant提供的报告模板,是没有tps和90%line这样的数据。
但是在实际工作中,这两个统计数据又是必须的,那么我们可以通过自定义(修改)的方式来进行修改,达到我们的目的。
ant的报告模板采用的xlst语法来对jmeter的xml类型的结果进行的操作。中间元素定位的方式是和xpath基本一致。
·TPS:每秒事务数。
工具是如何计算的每秒事务数呢?
TPS=总的事务数/总的执行时间(场景时间)
总的执行时间=最后的启动时间-最开始的启动时间+最后一个请求的响应时间。
·在Jmeter的结果文件jtl中,t属性表示请求的响应时间,ts属性表示请求的开始时间。
操作:
1、添加Summary的列名。
<!-- add -->
<th>Last Time</th>
<th>每秒事务数</th>
2、添加对应数据。
获取场景开始时间。表示将所有的ts属性的值传入
<xsl:variable name="startTime">
<xsl:call-template name="sTime">
<xsl:with-param name="nodes" select="/testResults/*/@ts" />
</xsl:call-template>
</xsl:variable>
template模板如下:
<xsl:template name="sTime">
<xsl:param name="nodes" select="/.." />
<xsl:choose>
<xsl:when test="not($nodes)">NaN</xsl:when>
<xsl:otherwise>
<xsl:for-each select="$nodes">
<xsl:sort data-type="number" />
<xsl:if test="position() = 1">
<xsl:value-of select="number(.)" />
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
添加数据列。
<!-- lastTime -->
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$lastTime" />
</xsl:call-template>
</td>
<!-- QPS -->
<td align="right">
<xsl:call-template name="display-tps">
<xsl:with-param name="value" select="$tps" />
</xsl:call-template>
</td>
·90%line这样的数据。
这个叫用户体验数据。百分比可以修改。
90%line=将所有的响应时间数据,从小到大排列,取位置为90%的值。
因此本质上也是获取响应时间,只是要获取特定位置的数据,和获取最小和最大响应时间是接近的。
区别在于:
最小响应时间:位置是1
90%line响应时间:位置是 round($allcount*0.9)
Jmeter的命令行与ant等的集成及自定义报告模板
最新推荐文章于 2023-01-16 10:01:17 发布