截止目前為止:整體的自動(dòng)化集成測(cè)試基本已經(jīng)搞定,唯一美中不足的就是,在jmeter中沒有找到斷言失敗自動(dòng)發(fā)送郵件的判斷條件。有知道的同學(xué)可以給我留言解惑一下,問題是這樣的:我在jmeter中通過如果(if)控制器,來判斷cese中是否有斷言失敗的,如果有則發(fā)送郵件
-
先看看成果吧
-
現(xiàn)在有3個(gè)任務(wù)再跑。做的定時(shí)任務(wù),每天早晚各一次。
job.png
-
每個(gè)任務(wù)的配置在構(gòu)建成功后自動(dòng)發(fā)送郵件,為防止發(fā)送郵件服務(wù)器異常特地將發(fā)送郵件時(shí)間分開。
email.png
-
喜出望外的情況就是HTML Report 和 Performance Trend 兩個(gè)插件的功能,能夠一定程度彌補(bǔ)一下jmeter那個(gè)郵件的問題:其中HTML Report可以直接點(diǎn)擊查看測(cè)試報(bào)告,模板很清晰,執(zhí)行中的各項(xiàng)數(shù)據(jù)也很直觀:
HTML Report.png
- 如果有錯(cuò)誤在summary那里就能直接看出來了,另外一個(gè)優(yōu)點(diǎn)就是如果有錯(cuò)誤,直接點(diǎn)擊就可以實(shí)現(xiàn)跳轉(zhuǎn),算是一個(gè)小功能吧。
HTML Report.png
-
Performance Trend 這個(gè)插件也很強(qiáng)大,能直接檢測(cè)出當(dāng)前jmeter-case中斷言/執(zhí)行失敗的個(gè)數(shù),然后在視圖中都會(huì)顯示出來,線性圖表,另一個(gè)維度的感覺:
Performance Trend.png
- 從圖中可以看出來,第四次構(gòu)建沒有失敗但是有一個(gè)錯(cuò)誤,然后打開當(dāng)前的HTML Report,確實(shí)有一次失敗情況存在,這里提供的兩種視圖均可以點(diǎn)擊查看詳細(xì)。
特地上2張比較明顯的圖片供參考:
responding time.png
percentage of errors.png
-
通過建立3個(gè)job,所以對(duì)bild.xml有了一點(diǎn)小了解,也做了一點(diǎn)優(yōu)化,很簡(jiǎn)單的變動(dòng)了一下參數(shù),這樣在每次新建job的時(shí)候,只需要在原有的基礎(chǔ)上修改一下項(xiàng)目名稱就行了,(前提:workplace不變,否則需要把workplace修改下)
<?xml version="1.0" encoding="utf-8"?> <project name="JmeterTest" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 這里耍了個(gè)小聰明構(gòu)建項(xiàng)目配置信息--> <property name="project.name" value="a-client\" /> <property name="project.workspace" value="E:\Jenkins\workspace\" /> <!-- 需要改成自己本地的 Jmeter 目錄--> <property name="jmeter.home" value="E:\workplace-jenkins\apache-jmeter-2.13\" /> <!-- jmeter生成jtl格式的結(jié)果報(bào)告的路徑--> <property name="jmeter.result.jtl.dir" value="${project.workspace}${project.name}jtl" /> <!-- jmeter生成html格式的結(jié)果報(bào)告的路徑--> <property name="jmeter.result.html.dir" value="${project.workspace}${project.name}" /> <!-- 生成的報(bào)告的前綴 --> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <!-- 接收測(cè)試報(bào)告的郵箱 --> <property name="mail_to" value="XX@qq.com" /> <!-- 電腦地址 --> <property name="ComputerName" value="andre" /> <target name="all"> <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}"> <!-- 聲明要運(yùn)行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本 --> <testplans dir="${project.workspace}${project.name}case" includes="*.jmx" /> </jmeter> </target> <target name="report"> <xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> <!-- 因?yàn)樯厦嫔蓤?bào)告的時(shí)候,不會(huì)將相關(guān)的圖片也一起拷貝至目標(biāo)目錄,所以,需要手動(dòng)拷貝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> <!-- 發(fā)送郵件 --> </project>
- 每次新建項(xiàng)目,只需要在${project.workspace}下,新建一個(gè)叫做${project.name}的文件夾,然后將之前項(xiàng)目里面的文件夾全部拷貝過來即可。別忘了再將build.xm中${project.name}修改下就行了,很簡(jiǎn)單吧。
-
這次的持續(xù)集成接口測(cè)試,就暫時(shí)告一段落了,暫時(shí)能滿足我的需求了,如果后期還有進(jìn)一步的需求升級(jí),我在繼續(xù)研究!