一、首先先介紹下我的環境:
1、 win10系統
2、 ant版本:apache-ant-1.10.1(作用:執行腳本,便於后期的持續集成,下載地址:http://ant.apache.org/bindownload.cgi)
3、 jmeter版本:apache-jmeter-3.1(即下即用,無需配置環境變量,自行百度解決下載問題)
4、 另外我的電腦有python的環境,可以利用python寫的讀取最新生成的html測試報告實現自動發送郵件到郵箱的功能。
二、搭建前准備工作:
1、配置ant環境變量:我的ant安裝在D:\2017.9.21\下面(安裝過程省略,下載內容解壓出來即可,根據自己的安裝目錄進行配置)
圖2-1
所以我的環境變量為:
ANT_HOME=D:\2017.9.21\apache-ant-1.10.1
CLASSPATH=D:\2017.9.21\apache-ant-1.10.1\lib;
path=D:\2017.9.21\apache-ant-1.10.1\bin
安裝完成之后,打開運行,輸入cmd,輸入ant –v,出現以下信息,表示安裝正確
注:安裝過程遇到的問題:
輸入 ant -v 后可能存在報錯的問題,如下:Exception in thread “main" java.lang.UnsupportedClassVersionError
可能電腦太老,ant太新,換了個低點的版本的試試。
2、jmeter的配置文件修改(一樣,安裝過程省略)。
找到jmeter的bin目錄,修改jmeter.properties的文件(Notepad++工具打開),修改內容如下:
1、
將CookieManager.save.cookies=false 去掉注釋#,將false改成true,即:CookieManager.save.cookies=true
目的:能夠保持登陸狀態,進行登陸之后請求的發送,例如:登陸之后的新增、修改操作(后期再說jmeter接口請求)。
2、去掉前面的#號,將 jmeter.save.saveservice.output_format=csv 改 jmeter.save.saveservice.output_format=xml
3、
,找到如圖所示內容,將紅色框的#號都去掉,並且將所有的false改成true。
目的:生成的html報告的調優(后期會說到生成報告模板的更換)。
三、開始進行環境搭建
1、配置庫文件
將jmeter 的extras目錄下的ant-jmeter-1.1.1.jar 文件拷貝到ant安裝目錄下的lib文件夾中,如下圖:
,過程簡單,如果錯了,自己打手吧。
2、配置ANT與Jmeter的配置文件。
拷貝下面的內容到新建的txt文件中,並將此文件改名為:build.xml。
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 需要改成自己本地的 Jmeter 目錄--> <property name="jmeter.home" value="C:\apache-jmeter-2.12" /> <!-- jmeter生成jtl格式的結果報告的路徑--> <property name="jmeter.result.jtl.dir" value="C:\apache-jmeter-2.12\bin\test\smoke_report\jtl" /> <!-- jmeter生成html格式的結果報告的路徑--> <property name="jmeter.result.html.dir" value="C:\apache-jmeter-2.12\bin\test\smoke_report\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}"> <!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的所有jmeter腳本--> <testplans dir="C:\apache-jmeter-2.12\bin\test\冒煙測試" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <target name="report"> <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> <xslt classpathref="xslt.classpath" force="true" 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>
注意以下幾個內容:
1、 一定要注意是自己電腦的路徑,否則出了問題我不負責,我的生成報告時間略有調整。
2、 需要自己創建存放jtl報告、html報告、jmx格式文件的文件夾。
3、 如果出現:執行ant時報錯“1字節的UTF-8序列的字節1無效”,請修改build.xml文件,並將里面的UTF-8修改為UTF8即可。
4、 jmeter自帶的html報告與我期望的有點差距,於是在網上找了一個優化后的測試報告模板jmeter.results.shanhe.me.xsl。放到jmeter的extras目錄下(這個不用多說了,錯了打手),並且在build.xml里面將最下面的測試報告模板的名字換成這個即可。
四、項目目錄的優化
前面說到幾個文件,build.xml、html格式的測試報告、jtl格式的報告、.jmx格式的文件、還有后面的python發送郵件的文件,我的做法是:
,這樣做的好處是結構目錄明顯且不混亂,而且還是在一個總的項目下,包括后期的參數化文件csv格式的、txt格式的文件都可以這么來建(當然這只是個人的建議)。
通過以上的准備工作,恭喜,我們已經完成ant+jmeter的環境的搭建了,下面就可以執行測試了。
五、執行測試
打開運行輸入cmd,命令行cd到build.xml文件所在目錄,輸入ant run(我之前已經寫好一個jmx格式的文件,所以這邊就不多說只說如何搭建環境;對於為什么執行ant run,不清楚的可以先仔細看下build.xml這個文件就明白),執行測試。
是不是很激動(我當時看到很激動滴),看到build successful 表明執行成功了,找到對應的html文件夾,就能看到生成的html報告了。
用瀏覽器打開即可(我電腦顯示有點問題,正常是瀏覽器圖標)。
為了進行比較新模板和jmetet自帶的模板區別,下面是一個jmeter自帶的模板生成的html測試報告,(敲個黑板,不同公司有不同要求,想要使用jmeter自帶的生成報告模板,在apache-jmeter-3.1的extras目錄下:jmeter-results-detail-report_21.xsl 這個文件就是自帶的jmeter,有需要的自己去build.xml文件替換報告生成的模板就行)。
通過對比,你是不是發覺優化后報告的更加具體點呢?新的報告有具體的post請求,有response的響應,相應結果等等。
六、python之郵件發送
我之前學過python+selenium、python+request,所以對於python的郵件發送還是比較熟悉,直接將之前寫過的內容拿過來用send_email.py,將里面需要更改的內容換成自己要用的內容即可(研究過jmeter和jenkins自帶的郵件發送功能,但不是我想要的效果,所以采用這個方法)
然后運行 cmd,cd到發送郵件的python腳本文件目錄,執行python send_email.py
然后到對應的郵箱就能收取到jmeter執行之后的html測試報告了。
七、持續集成環境搭建
接下來是持續集成環境Jenkins搭建,我下載的是mis格式的文件,值得一提的是雙擊mis安裝的過程是 windows的服務,那么jenkins就是一個后台服務,(如果想要執行python+selenium web ui自動化會提示報錯,因為ui自動化是一個頁面執行的過程,這是后話遇到再解答)因為接口是后台發送請求,所以用來執行完全沒有問題。
安裝之前先確認電腦上已經安裝好了jdk,並且已經配置好了環境變量了(這個對於jdk還是有要求的,建議是1.6以上的;不清楚的百度去);jenkins的安裝過程省略(注意安裝目錄的問題),過程中會遇到插件的安裝,建議整個插件都安裝一下。
下面就開始簡單的構建。
第一步:點擊新建。
第二步:構建執行時間,找到如下圖所示,進行填寫(根據實際構建時間;這個格式是:分 時 日 月 年,注意空格,網上有工具生成)
第三步:
因為是基於windows的環境,所以我們找到windows的構建方法。
第四步:
這邊做兩個windows的構建一個是運行到build.xml目錄執行,另外一個是到發送郵件的python腳本目錄執行。保存之后,輕松的喝茶等待執行時間的到來,或者說:第二天到公司的時候,打開郵箱就能發現昨晚執行測試的html報告就在你的郵箱。想想都有種高大上的感覺,天了嚕!
等待一段時間就能看到構建成功,點擊上圖的控制台輸出能夠查看到執行的過程,如下圖:
看到這些你是不是覺得很熟悉,對的,就是和運行 cmd里面執行的過程完全一致(控制台的看法還有一種,自己找資料去看吧;還有值得注意的是:如果在cmd執行成功,構建失敗的話,絕大部分原因是進入的目錄不對,通過同樣的方法在失敗的控制台查看,然后更改進入對應文件夾的方式)。
總結:以上就是一個完整的jmeter+ant+Jenkins的接口自動化平台搭建的方法,其中還運用了python的發送郵件功能;希望對你的平台搭建有一定的幫助;另外對於jenkins的安裝、用法寫的比較粗,我只是寫了我現在能夠用到的東西,其實jenkins這個工具的功能很強大,感興趣的可以自行的去學習。