一、环境准备:
1Jdk1.6 或 以 上 : http://www.oracle.com/technetwork/java/javase/downloads/index.html
命令行输入:java -version,出现如下提示说明安装成功
2、ANT 下载:http://ant.apache.org/bindownload.cgi
ant 环境变量: ANT_HOME:F:\apache-ant-1.9.4
Path:%ANT_HOME%\bin; CLASSPATH:%ANT_HOME%\lib
命令行输入:ant -v,出现如下提示说明安装成功
3、Jmeter 下载:http://jmeter.apache.org/download_jmeter.cgi
二、Jmeter 脚本:
1、脚本目录:D:\apache-jmeter-2.13\work
2、脚本内容
三、build.xml 代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir="."> <tstamp>
<format property="time" pattern="yyyyMMddhhmm" /> </tstamp>
<property name="encoding" value="UTF-8" />
<!-- 需要改成自己本地的 Jmeter 目录-->
<property name="jmeter.home" value="D:\apache-jmeter-2.13" />
<!-- jmeter 生成 jtl 格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-2.13\work\resul
tLog\jtl" />
<!-- jmeter 生成 html 格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="D:\apache-jmeter-2.13\work\re sultLog\html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${Report
Name}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${Re
portName}${time}.html" />
<target name="all">
<antcall target="test" /> <antcall target="report" /> <antcall target="mail" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jme ter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有 jmeter 脚本--> <testplans dir="D:\apache-jmeter-2.13\work" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter>
</target>
<target name="report">
<xslt in="${jmeter.result.jtlName}"
out="${ jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需 要手动拷贝 -->
<copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras">
<include name="collapse.png" />
<include name="expand.png" /> </fileset>
</copy>
</target>
<property name="mail_from" value="邮箱地址" />
<property name="password" value="邮箱登录密码" />
<!--mail_to: 发 送 列 表 , 多 个 之 间 逗 号 间 隔
<property name="mailhost" value="smtp.exmail.qq.com" /> -->
<property name="mail_to" value="接收邮件的邮箱地址" /> <property name="mailport" value="25" />
<property name="mailhost" value="smtp.qq.com" />
<target name="mail">
<loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding=" ${encoding}" />
<mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailho st="${mailhost}" user="${mail_from}" password="${password}" subject="TestRepo
rt-${ant.project.name}" messagemimetype="text/html"> <message>
本轮构建的结果如下:
${report} </message>
</mail>
<delete file="${jmeter.result.htmlName}" /> </target>
</project>
四、运行脚本:
执行结果:
D:\apache-jmeter-2.13\work>ant
Buildfile: D:\apache-jmeter-2.13\work\build.xml
all:
test:
[jmeter] Executing test plan: D:\apache-jmeter-2.13\work\api_2065.jmx ==> D:\
apache-jmeter-2.13\work\resultLog\jtl\TestReport201511090354.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using D:\apache-jmeter-2.13\work\api_2
065.jmx
[jmeter] Starting the test @ Mon Nov 09 15:54:53 CST 2015 (1447055693166) [jmeter] Waiting for possible shutdown message on port 4445
[jmeter] summary = 1 in 22s = 0.0/s Avg: 21118 Min: 21118 Max: 211
18 Err: 1 (100.00%)
[jmeter] Tidying up ... @ Mon Nov 09 15:55:15 CST 2015 (1447055715021) [jmeter] ... end of run
[jmeter] Executing test plan: D:\apache-jmeter-2.13\work\轨迹分析.jmx ==> D:\
apache-jmeter-2.13\work\resultLog\jtl\TestReport201511090354.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using D:\apache-jmeter-2.13\work\轨迹
分析.jmx
[jmeter] Starting the test @ Mon Nov 09 15:55:16 CST 2015 (1447055716113) [jmeter] Waiting for possible shutdown message on port 4445
[jmeter] summary = 1 in 0.4s = 2.8/s Avg: 105 Min: 105 Max: 1
05 Err: 0 (0.00%)
[jmeter] Tidying up ... @ Mon Nov 09 15:55:16 CST 2015 (1447055716566) [jmeter] ... end of run
report:
[xslt] Processing D:\apache-jmeter-2.13\work\resultLog\jtl\TestReport201511
090354.jtl to D:\apache-jmeter-2.13\work\resultLog\html\TestReport201511090354. h
tml
[xslt] Loading stylesheet D:\apache-jmeter-2.13\extras\jmeter-results-detai l-report_21.xsl
[copy] Copying 2 files to D:\apache-jmeter-2.13\work\resultLog\html
BUILD SUCCESSFUL Total time: 26 seconds
3、测试报告目录: D:\apache-jmeter-2.13\work\resultLOg\html
四:最后,说一个我在使用过程中碰到一个问题,上面 build.xml 文件第 29 行有 一 句 必 须 要 加 上 : <property name="jmeter.save.saveservice.output_format" value="xml"/>,否则会报如下的错误:
report:
[xslt] Processing
D:\Tools\apache-jmeter-2.13\demo\report\jtl\TestReport201509210923.jtl to D:\Tools\apache-jmeter-2.13\demo\report\html\TestReport201509210923.html
[xslt] Loading stylesheet D:\Tools\apache-jmeter-2.13\extras\jmeter-results-detail-report_21.xsl
[xslt] : Error! 前言中不允许有内容。
[xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException:
前言中不允许有内容。
[xslt] Failed to process D:\Tools\apache-jmeter-2.13\demo\report\jtl\TestReport201509210923.jtl
因为不加上这一句,生成的.jtl 文件是文本文件不是 xml 文件,使用 xsl 去转换.jtl 文件时就会报错。
五、部署到持续集成平台
部署到持续集成平台可以实现脚本的定时运行,这是接口测试的核心。
这里我们选用了 jenkins,,jenkins 是一个强大的持续集成系统,使用起来也很 简单。
使用步骤如下:
1、 安装 jenkins
把 Jenkins 的 war 包复制到 tomcat 的 webapps 下面
2、启动 tomcat,访问 URL:http://ip:端口/jenkins
注意:请将 jenkins 安装到一个空间比较大的系统盘中。因为 jenkins 运行起 来,生成的文件比较占空间。
出现如下界面说明 jenkins 部署成功
3、 使用 jenkins
1)注册 jenkins 用户
第一次进入 jenkins 界面需要设置全局安全才能够注册用户
点击应用按钮,保存按钮。
保存过后,就可以注册 jenkins 用户了
2)新建一个项目
旧的构建保存了你在一次构建中的所有临时文件,如果构建没有保留的必要,就 勾选丢弃旧的构建,同时设置保持构建天数和保持构建的最大个数两个参数。
注意:三个设置必须同时设置,否则无效
4、 设置定时运行间隔,这里,设置间隔时间为每天 8 点运 行一次
第一个参数代表的是分钟 minute,取值 0~59; 第二个参数代表的是小时 hour,取值 0~23; 第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天 特殊格式; * 指所有有效的值 M-N 指定值的范围 M-N/ X 或*/ X 是指以 X 为步长,指定的区域或整个有效范围区间的值 A,B,...,Z 列举多个值 eg.H/15 * * * * 每十五分钟执行一次 H(0-29)/10 * * * * 每小时的 0-29 分内每隔十分钟执 行一次 H 9-16/2 * * 1-5 每个工作日的 9-16 点内每隔两小时执行一次 H H 1,15 1-11 * 1-11 月的每月 1 号和 15 号各执行一次
JENKINS |
新建项目流程 |
通过设置 invoke ant,就可以调用 ant,执行打包过程。在这里,也就是执行生成 测试报告的步骤