>[danger] # Ant + Jmeter自动执行脚本并且生成测试报告
>[info]## 前置条件
windows (所有工具均支持linux,故linux也可以)
1.下载安装jdk并且正确配置环境变量(包含java开发工具包和java运行环境(jre),因jmeter是java开发,故需要安装jdk)
http://www.oracle.com/technetwork/java/javase/downloads/index.html
~~~
变量名:JAVA_HOME
变量值:电脑上JDK安装的绝对路径
~~~
~~~
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
~~~
~~~
变量名:path
%JAVA_HOME%\bin
%JAVA_HOME%\jre\bin
~~~

2.下载ant并且正确配置环境变量(一个自动化工具,通过配置文件,执行一些重复性的任务)
http://ant.apache.org/bindownload.cgi
ant环境配置:
ANT\_HOME:C:\\apache-ant-1.9.13
CLASSPATH:C:\\apache-ant-1.9.13\\lib
Path:C:\\apache-ant-1.9.13\\bin

3.下载jmeter并且正确配置环境变量(性能测试工具,java语言开发。官方提供了与ant结合的jar包,可在ant的配置文件直接使用)
jmeter最新版本下载地址:https://jmeter.apache.org/
jmeter历史版本下载地址:http://archive.apache.org/dist/jmeter/binaries/
* JMETER_HOME=> F:\CYL\test\jmeter\apache-jmeter-3.0(根据实际的jmeter解压路径填写)
*CLASSPATH=>%JMETER_HOME%\lib\\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
* path =%JMETER_HOME%\bin

>[info]## 拷贝jar包
将/jmeter/extras/ant-jmeter-1.1.1文件拷贝至/ant/lib/下


>[info]## 改配置
修改配置文件/jmeter/bin/jmeter.properties,去掉“#”,将jmeter.save.saveservice.output\_format=csv修改为jmeter.save.saveservice.output\_format=xml

>[info]## 构造测试目录

build.xml文件如下
```
<?xml version="1.0" encoding="UTF8"?>
<project name="Jmeter-TestCase" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!--jmeter的目录-->
<property name="jmeter.home" value="D:\soft\jmeter\apache-jmeter-5.4.1\apache-jmeter-5.4.1" />
<property name="jmeter.result.jtl.dir" value="D:\soft\testDemo\resultLog\jtl" />
<property name="jmeter.result.html.dir" value="D:\soft\testDemo\resultLog\html" />
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
<target name="run">
<antcall target="test" />
<antcall target="report" />
</target>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<testplans dir="D:\soft\testDemo\script" includes="Test.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>
</project>
```
jmeter的安装目录及运行脚本后生成的结果目录
~~~
<!--jmeter的目录-->
<property name="jmeter.home" value="C:\apache-jmeter-4.0" />
<property name="jmeter.result.jtl.dir" value="C:\apache-jmeter-4.0\ant_demo\resultLog\jtl" />
<property name="jmeter.result.html.dir" value="C:\apache-jmeter-4.0\ant_demo\resultLog\html" />
~~~
jmeter运行脚本后生成的文件名称
~~~
<property name="ReportName" value="TestReport" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
~~~
jmeter所运行的脚本
```
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<testplans dir="C:\apache-jmeter-4.0\ant_demo\script" includes="Test.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
```
打开cmd运行ant

运行后目录

浏览器打开HTML文件,显示正确(缺点是min time和max time没有值)

MinTime、MaxTime为什么显示为NaN呢?
解决办法:jmeter 根目录中找到lib下的serializer-2.7.2.jar、xalan-2.7.2.jar,复制到ant的lib中即可!
最终结果如下

>[danger] # Ant + Jenkins自动执行脚本并且生成测试报告
新建并配置一个项目
(一、Jenkins 定时任务触发时间表达式 )
Jenkins采用了著名的UNIX任务调度工具CRON所使用的配置方式。用5个字段代表5个不同的时间单位(中间用空格隔开):
分 时 日 月 星期几
0 2 \* \* \* 表示每天凌晨2点
\*/10 \* \* \* \* 每隔10分钟一次
45 10 \* \* 1-5 每星期的星期一到星期五的10:45分执行
· M-N 指定范围值
· M-N/X 或 \*/X 在指定范围或整个有效范围内按 X 间隔的步骤
· A,B,...,Z 列举了多个值
```
每天凌晨2:00跑一次
H 2 * * *
每隔5分钟构建一次
H/5 * * * *
每两小时构建一次
H H/2 * * *
每天中午12点定时构建一次
H 12 * * * 或0 12 * * *(0这种写法也被H替代了)
每天下午18点前定时构建一次
H 18 * * *
每15分钟构建一次
H/15 * * * * 或*/5 * * * *(这种方式已经被第一种替代了,jenkins也不推荐这种写法了)
周六到周日,18点-23点,三小时构建一次
H 18-23/3 * * 6-7
---------------------
```
前置条件:正确安装jenkins且成功安装一下插件


集成时尽量先创建jenkins项目再构建ant工作目录



**注意:ant构建项目,默认执行的是Jenkins中workspace下的脚本,如果workspace下没有脚本则构建会不错的,我的做法是将脚本和build.xml文件都放置workspace目录下了。**

**注意:Index page\[s\]:的值(TestReport.html)是与build.xml中设置的测试报告名称一致,否则在Jenkins中查看不了测试报告。**

脚本配置完成。
5.5、项目主页,点击立即构建,执行测试

继续构建基本完成,打开测试报告存放路径会看到新生成的报告文档
- 接口测试
- 5.1 postman 接口测试简介
- 5.2 postman 安装
- 5.3 postman 创建请求及发送请求
- 5.4 postman 菜单及设置
- 5.5 postman New菜单功能介绍
- 5.6 postman 常用的断言
- 5.7 请求前脚本
- 5.8 fiddler网络基础及fiddler简介
- 5.9 fiddler原理及使用
- 5.10 fiddler 实例
- 5.11 Ant 介绍
- 5.12 Ant 环境搭建
- 5.13 Jmeter 简介
- 5.14 Jmeter 环境搭建
- 5.15 jmeter 初识
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP请求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域与执行顺序
- 5.20 jmeter 定时器
- 5.21 jmeter 断言
- 5.22 jmeter 逻辑控制器
- 5.23 jmeter 常用函数
- 5.24 soapUI概述
- 5.25 SoapUI 断言
- 5.26 soapUI数据源及参数化
- 5.27 SoapUI模拟REST MockService
- 5.28 Jenkins的部署与配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter脚本录制
- 5.31 badboy常见的问题