>[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、項目主頁,點擊立即構建,執行測試

繼續構建基本完成,打開測試報告存放路徑會看到新生成的報告文檔
- 第一章-測試理論
- 1.1軟件測試的概念
- 1.2測試的分類
- 1.3軟件測試的流程
- 1.4黑盒測試的方法
- 1.5AxureRP的使用
- 1.6xmind,截圖工具的使用
- 1.7測試計劃
- 1.8測試用例
- 1.9測試報告
- 2.0 正交表附錄
- 第二章-缺陷管理工具
- 2.1缺陷的內容
- 2.2書寫規范
- 2.3缺陷的優先級
- 2.4缺陷的生命周期
- 2.5缺陷管理工具簡介
- 2.6缺陷管理工具部署及使用
- 2.7軟件測試基礎面試
- 第三章-數據庫
- 3.1 SQL Server簡介及安裝
- 3.2 SQL Server示例數據庫
- 3.3 SQL Server 加載示例
- 3.3 SQL Server 中的數據類型
- 3.4 SQL Server 數據定義語言DDL
- 3.5 SQL Server 修改數據
- 3.6 SQL Server 查詢數據
- 3.7 SQL Server 連表
- 3.8 SQL Server 數據分組
- 3.9 SQL Server 子查詢
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函數
- 3.10.3 SQL Server 日期函數
- 3.10.4 SQL Server 字符串函數
- 第四章-linux
- 第五章-接口測試
- 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常見的問題
- 第六章-性能測試
- 6.1 性能測試理論
- 6.2 性能測試及LoadRunner簡介
- 第七章-UI自動化
- 第八章-Maven
- 第九章-測試框架
- 第十章-移動測試
- 10.1 移動測試點及測試流程
- 10.2 移動測試分類及特點
- 10.3 ADB命令及Monkey使用
- 10.4 MonkeyRunner使用
- 10.5 appium工作原理及使用
- 10.6 Appium環境搭建(Java版)
- 10.7 Appium常用函數(Java版)
- 10.8 Appium常用函數(Python版)
- 10.9 兼容性測試