JMeter 系列之—-05 支持CI扩展
思路
- 配置Jenkins,设置入参(jmx_name,JthreadNum,JtestTime),设置ant触发测试执行
- 新建build.xml文件,组织测试执行,其中用到步骤1中设置的参数;
- Jmeter脚本中配置使用这些外部变量
- 将Jmeter脚本文件上传到svn对应目录,Jenkins触发测试执行
实现
1. Jenkins配置
设置入参
-jmx_name
-thread_num=50
-test_time=120
设置ant触发测试执行
2. Ant配置--build.xml文件
<?xml version="1.0" encoding="utf-8"?>
<project name="jmeter_test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm"/>
</tstamp>
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\java\apache-jmeter-5.2.1"/>
<!-- 生成的报告的前缀 -->
<property name="JobName" value="${jobName}"/>
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.space.dir" value="D:\java\apache-jmeter-space/${JobName}_${time}/"/>
<property name="jmeter.result.jtlName" value="${jmeter.space.dir}/${JobName}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.space.dir}/${JobName}.html"/>
<target name="run" depends="test,report"/>
<target name="test">
<copy todir="${jmeter.space.dir}/script">
<fileset dir="script">
<include name="${JobName}.jmx"/>
</fileset>
</copy>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter
jmeterhome ="${jmeter.home}"
testplan ="${jmeter.space.dir}/script/${JobName}.jmx"
resultlog ="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<jmeterarg value="-JthreadCount=${threadNum}" />
<jmeterarg value="-Jduration=${randmpUp}" />
<!-- 加入jmeter的参数,这样可以根据需要生成jmeter的CSV报告,需要设置 jmeter.save.saveservice.output_format的value=csv
<jmeterarg value="-e" />
<jmeterarg value="-o${jmeter.space.dir}" />
-->
</jmeter>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="report">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp>
<xslt classpathref="xslt.classpath"
force="true"
in="${jmeter.result.jtlName}"
out="${jmeter.result.htmlName}"
style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl">
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy todir="${jmeter.space.dir}/">
<fileset dir="${jmeter.home}/extras">
<include name="collapse.png"/>
<include name="expand.png"/>
</fileset>
</copy>
<!-- 手动拷贝 -->
<copy todir="">
<fileset dir="${jmeter.space.dir}">
<exclude name="script"/>
</fileset>
</copy>
</target>
</project>
3. Jmeter配置--脚本中使用外部变量
{__P(,)}函数用于接收系统传递的参数,格式为:{__P(外部变量名,默认值)}。
- 上传脚本测试执行
控制台输出
【Quality】
Quality is the value to someone who matters。做测试,首先要找到这个someone是谁,以及这个 someone重视的 value是什么。