Jmeter的命令行与ant等的集成及自定义报告模板

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Rainday666/article/details/102641484
·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)





猜你喜欢

转载自blog.csdn.net/Rainday666/article/details/102641484