Jmeter+Ant+Jenkins構建接口自動化測試平台(Windows)


 

一、首先先介紹下我的環境:

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.1extras目錄下: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這個工具的功能很強大,感興趣的可以自行的去學習。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM