Jmeter+Ant自定義接口測試報(bào)告以及集成jenkins

(文檔包含自定義接口測試報(bào)告以及集成jenkins)

??????Jmeter是壓力測試、接口測試工具,Ant是基于Java的構(gòu)建工具,具有跨平臺(tái)的作用,jenkins是持續(xù)集成工具。將這三者結(jié)合起來可以搭建一套webservice接口測試的持續(xù)構(gòu)建環(huán)境。

? 1、安裝JDK,配置java環(huán)境變量(略過)

??2、安裝Jmeter,這里用到的版本是3.1(安裝過程略過)

??3、安裝 ANT

???3.1 下載安裝

?????下載地址 http://ant.apache.org/bindownload.cgi,下載后解壓到指定位置即可,

?????比如:D:/program files/apache-ant-1.9.0

???3.2 配置環(huán)境變量

windows中設(shè)置ant變量:

ANT-HOME D:/program files/apache-ant-1.9.0

path D:/program files/apache-ant-1.9.0/bin

classpath D:/program files/apache-ant-1.9.0/lib

? ?3.3 安裝驗(yàn)證

?????驗(yàn)證安裝結(jié)果,命令行輸入ant -v?,出現(xiàn)版本信息則安裝成功(本人安裝的是1.10.5版)

??4、ANT中配置Jmeter???

??????????4.1、配置庫文件

? ? ? ? ? 將jmeter extras目錄下的ant-jmeter-1.1.1.jar?文件拷貝到ant安裝目錄下的lib文件夾中(本人安裝的是jmeter3.1)

??????copy from:

??????paste to:

????4.2??配置ANT與Jmeter的配置文件

?????????4.2.1?配置ant 編譯文件?build.xml

??????拷貝下面的內(nèi)容與新建的txt文件中,并將此文件改名為:build.xml????????????

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 <project name="ant-jmeter-test" default="run" basedir=".">

4? ? <tstamp>

5? ? ? ? <format property="time" pattern="yyyyMMddhhmm" />

6? ? </tstamp>

7? ? <!-- 需要改成自己本地的 Jmeter 目錄-->?

8? ? <property name="jmeter.home" value="D:\測試工具\(yùn)JMETER\apache-jmeter-3.1" />

9? ? <!-- jmeter生成jtl格式的結(jié)果報(bào)告的路徑-->

10? ? <property name="jmeter.result.jtl.dir" value="D:\測試工具\(yùn)JMETER\apache-jmeter-3.1\bin\ant-test\smoke_report\jtl" />

11? ? <!-- jmeter生成html格式的結(jié)果報(bào)告的路徑-->

12? ? <property name="jmeter.result.html.dir" value="D:\測試工具\(yùn)JMETER\apache-jmeter-3.1\bin\ant-test\smoke_report\html" />

13? ? <!-- 生成的報(bào)告的前綴-->?

14? ? <property name="ReportName" value="TestReport" />

15? ? <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

16? ? <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />

17? ?

18? ? <target name="run">

19? ? ? ? <antcall target="test" />

20? ? ? ? <antcall target="report" />

21? ? </target>

22? ?

23? ? <target name="test">

24? ? ? ? <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />

25? ? ? ? <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">

26? ? ? ? ? ? ? <!-- 聲明要運(yùn)行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本-->

27? ? ? ? ? ? <testplans dir="D:\測試工具\(yùn)JMETER\apache-jmeter-3.1\bin\ant-test\測試" includes="*.jmx" />

28

29? ? ? ? ? ? ? <property name="jmeter.save.saveservice.output_format" value="xml"/>

30? ? ? ? </jmeter>

31? ? </target>

32? ?

33? ? ? <path id="xslt.classpath">

34? ? ? ? <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>

35? ? ? ? <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>

36? ? ? </path>

37? ? ? ?

38? ? <target name="report">

39? ? ? ? <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>? ?

40? ? ? ? <xslt? ? ? ? ? ? ?

41? ? ? ? ? ? ? classpathref="xslt.classpath"

42? ? ? ? ? ? ? force="true"

43? ? ? ? ? ? ?

44? ? ? ? ? ? ? in="${jmeter.result.jtlName}"

45? ? ? ? ? ? ? out="${jmeter.result.htmlName}"

46? ? ? ? ? ? ? style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />?

47? ? ? ?

48? ? ? ? <!-- 因?yàn)樯厦嫔蓤?bào)告的時(shí)候,不會(huì)將相關(guān)的圖片也一起拷貝至目標(biāo)目錄,所以,需要手動(dòng)拷貝 -->

49? ? ? ? <copy todir="${jmeter.result.html.dir}">

50? ? ? ? ? ? <fileset dir="${jmeter.home}/extras">

51? ? ? ? ? ? ? ? <include name="collapse.png" />

52? ? ? ? ? ? ? ? <include name="expand.png" />

53? ? ? ? ? ? </fileset>

54? ? ? ? </copy>

55? ? </target>? ?

56? ?

57 </project>

View Code(復(fù)制代碼記得刪除每行數(shù)列的數(shù)字序號(hào)

?4.2.2 配置jmeter.properties

????配置jmeter報(bào)告輸出格式為xml在jmeter目錄下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv?為


????????jmeter.save.saveservice.output_format=xml,并去掉前面的注釋符號(hào)#





??4.3 驗(yàn)證配置,執(zhí)行構(gòu)建測試

??4.3.1 準(zhǔn)備測試腳本數(shù)據(jù)

????build配置文件放在與測試腳本同目錄


??4.3.2 執(zhí)行測試?????

??????????命令行cd到build.xml文件所在目錄,輸入ant run?,執(zhí)行測試


???看到build successful 則說明構(gòu)建測試成功

???4.3.3 報(bào)告輸出路徑下查看測試結(jié)果報(bào)告

????按build.xml文件中設(shè)置的測試報(bào)告地址找到html版測試報(bào)告


????打開看看:測試結(jié)果展現(xiàn)了用例數(shù)、成功率、用例執(zhí)行時(shí)間等結(jié)果參數(shù)



??4.4、 測試報(bào)告優(yōu)化

???用jmeter自帶的測試報(bào)告得到的測試報(bào)告信息并不是很全,這里參考網(wǎng)上的方法,做一個(gè)優(yōu)化

???4.4.1、下載優(yōu)化模板 jmeter-results-shanhe-me.xsl,拷貝到j(luò)meter的extras目錄中,

??????如D:\測試工具\(yùn)JMETER\apache-jmeter-3.1\extras

鏈接:https://pan.baidu.com/s/1dWvwufys0YtYDC6w8bnSMQ 密碼:7m03

上面的為請(qǐng)求結(jié)果自動(dòng)換行,且用json格式化請(qǐng)求結(jié)果

??????4.4.2、設(shè)置測試輸出報(bào)告要輸出的內(nèi)容

?????同樣在jmeter.properties中,設(shè)置需要輸出的內(nèi)容為true,并去掉前面的注釋符號(hào)#,這里全部設(shè)置成true

?4.4.3?設(shè)置build文件的報(bào)告模板為優(yōu)化后的模板jmeter-results-shanhe-me.xsl

鏈接:https://pan.baidu.com/s/1ogCJRfdsZ6s2m-PHN1nSEA 密碼:rk81

4.4.4、按前面的方式再次用ant構(gòu)建測試,查看優(yōu)化后的測試報(bào)告

??5、配置jenkins

?5.1 、jenkins.war的下載與安裝,下載后放到d盤根目錄

???????5.2 、配置環(huán)境變量,設(shè)置JENKINS_HOME?,例如jenkins文件在d盤根目錄,JENKINS_HOME=d:\jenkins???????

???????5.3 、啟動(dòng)jenkins(jenkins.war文件我放在D盤根目錄的)

?????????????命令行輸入java -jar jenkins.war

瀏覽器中輸入url:jenkins所在主機(jī)IP 端口:8080 ,打開jenkins

????配置用戶名、密碼及插件,這里需要配置invoke ant插件、HTML測試報(bào)告展示的插件

invoke ant插件

HTML插件

???5.4、新建并配置一個(gè)JOB


????設(shè)置項(xiàng)目名稱:


????配置構(gòu)建:


????配置構(gòu)建:invoke ant

配置build文件路徑:?

?配置測試報(bào)告插件,用于打開測試結(jié)果報(bào)告

基本配置完成

? ? ?5.5、JOB主頁,點(diǎn)擊立即構(gòu)建,執(zhí)行測試,構(gòu)建完成即可通過HTML_Report來查看測試結(jié)果

? ? ? ? ? ?繼續(xù)構(gòu)建基本完成

配置郵件插件來發(fā)送測試報(bào)告(引用他人截圖)

1、在Jenkins安裝Email Extension Plugin插件,如下圖:

2、設(shè)置Extended E-mail Notification

進(jìn)入“系統(tǒng)管理”-“系統(tǒng)設(shè)置”,對(duì)Extended E-mail Notification進(jìn)行配置,具體參考下圖:?

注意:上圖中的Password不是qq密碼,而是在QQ郵箱申請(qǐng)開通IMAP/SMTP服務(wù)后收到的密碼

3、設(shè)置郵件通知

還是在系統(tǒng)管理-系統(tǒng)設(shè)置里面設(shè)置,內(nèi)容和Extended E-mail Notification差不多,具體如下圖:?

4、Jenkins任務(wù)的配置

a、在進(jìn)入任務(wù)的配置頁面,然后在構(gòu)建后操作模塊增加構(gòu)建后的操作“Editable Email Notification”,如圖:?

b、我的Editable Email Notification配置如下:?

注釋:當(dāng)測試郵件配置失敗,看下系統(tǒng)管理員郵箱有沒有配置。

c、注意:還要在高級(jí)里設(shè)置郵件的觸發(fā)條件,如下:?

d、我的郵件內(nèi)容如下,可參考

第一個(gè)

<!DOCTYPE html>??

<html>??

<head>??

<meta charset="UTF-8">??

<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構(gòu)建日志</title>??

</head>??

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"??

??offset="0">??

??<div>

??<table width="95%" cellpadding="0" cellspacing="0"?

????style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">?

????<tr>

??????<th align="center" colspan="2"><br />

????????<h2>構(gòu)建信息</h2>?

??????</th>

????</tr>

????<tr>??

??????<td>??

????????<ul>??

??????????<li>項(xiàng)目名稱 : ${PROJECT_NAME}</li><br />??

??????????<li>詳細(xì)測試報(bào)告 : <a href="${PROJECT_URL}測試報(bào)告">${PROJECT_URL}測試報(bào)告</a></li><br />

??????????<li>觸發(fā)原因: ${CAUSE}</li><br />???????????

??????????<li>項(xiàng)目?Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />

????????</ul>??

??????</td>?

??????<td>${JELLY_SCRIPT,template="html"}<br/>?

????</tr>??

????<tr>??

??????<td colspan="2" align="center"><br />

??????<h2>測試報(bào)告</h2>

??????</td>??

????</tr>

????<tr>

??????<td colspan="2" align="center">

????????<div>${FILE ,path="C:/Users/kingdee/.jenkins/workspace/AutoTestDemo/target/surefire-reports/emailable-report.html"}</div>

??????</td>

????</tr>

??</table>?

??</div>

?</body>??

</html>

注意這行代碼:

${FILE ,path=”D:/測試工具/JMETER/apache-jmeter-3.1/bin/ant-test/smoke_report/TestReport.htmll”}

作用是引入了testng生成的測試報(bào)告,然后在郵件的html里顯示出來。

第二個(gè):

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構(gòu)建日志</title>

</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"

??offset="0">

??<table width="95%" cellpadding="0" cellspacing="0"

????style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">

????<tr>

??????<td>(本郵件是程序自動(dòng)下發(fā)的,請(qǐng)勿回復(fù)!)</td>

????</tr>

????<tr>

??????<td><h2>

??????????<font color="#0000FF">構(gòu)建結(jié)果 - ${BUILD_STATUS}</font>

????????</h2></td>

????</tr>

????<tr>

??????<td><br />

??????<b><font color="#0B610B">構(gòu)建信息</font></b>

??????<hr size="2" width="100%" align="center" /></td>

????</tr>

????<tr>

??????<td>

????????<ul>

??????????<li>項(xiàng)目名稱&nbsp;:&nbsp;${PROJECT_NAME}</li>

??????????<li>構(gòu)建編號(hào)&nbsp;:&nbsp;第${BUILD_NUMBER}次構(gòu)建</li>

??????????<li>觸發(fā)原因:&nbsp;${CAUSE}</li>

??????????<li>構(gòu)建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>

??????????<li>構(gòu)建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>

??????????<li>工作目錄&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>

??????????<li>項(xiàng)目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>

????????</ul>

??????</td>

????</tr>

????<tr>

??????<td><b><font color="#0B610B">Changes Since Last

????????????Successful Build:</font></b>

??????<hr size="2" width="100%" align="center" /></td>

????</tr>

????<tr>

??????<td>

????????<ul>

??????????<li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>

????????</ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}

??????</td>

????</tr>

????<tr>

??????<td><b>Failed Test Results</b>

??????<hr size="2" width="100%" align="center" /></td>

????</tr>

????<tr>

??????<td><pre

??????????style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>

????????<br /></td>

????</tr>

????<tr>

??????<td><b><font color="#0B610B">構(gòu)建日志 (最后 100行):</font></b>

??????<hr size="2" width="100%" align="center" /></td>

????</tr>

????<!-- <tr>

??????<td>Test Logs (if test has ran): <a

????????href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>

????????<br />

??????<br />

??????</td>

????</tr> -->

????<tr>

??????<td><textarea cols="80" rows="30" readonly="readonly"

??????????style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>

??????</td>

????</tr>

??</table>

</body>

</html>

設(shè)置構(gòu)建時(shí)間來定時(shí)自動(dòng)執(zhí)行測試?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容