Jenkins+Jmeter+Ant接口持續集成

   

修改時間css

修改內容html

修改人前端

2016.5.22node

建立mysql

劉永志git

2016.6.15sql

完成數據庫

劉永志apache

   

前言:

爲何要用Jmeter作接口測試:

當選擇這套方案的時候,不少人會問,爲何選擇Jmeter作Case管理?爲何不本身寫框架?說實話,本身寫框架有很大優點,好比易於拓展,易於定製。Testhome上也有不少很牛逼的框架,看着就讓人流口水的。不少大公司都是本身寫的框架,有WEB界面(我對界面有偏心),有簡潔的Case編寫方式,有很好用的錄製方法以致於我曾經也嘗試寫過一個(Java+Testng執行+Xml管理Case),可是過程很坎坷,遇到了不少坑(技術積累不足是很重要的一方面)。例如編寫Case的時候調試很麻煩,後續拓展須要不斷維護(不斷封裝新的參數獲取方法)等等。因此,最終選擇了它,你們能夠本身嘗試體會下。編程

Jmeter作接口測試的優點:

  1. Jmeter支持錄製,工具備Gui界面,入手相對簡單。
  2. Gui便於調試,本地調試經過上傳,管理容易。
  3. 維護成本很小,Jmeter功能比較全面,不會讓本身陷入不停的維護框架的坑。
  4. Jmeter Case是基於xml的(雖而後綴是jmx格式),執行結果也能夠導出xml格式(結果爲jtl後綴)

Jmeter作接口測試的缺陷:

  1. 單條Case執行依賴本地
  2. Jmeter編寫Case有必定學習成本
  3. 拓展性稍差,Case基於xml格式管理,後續若是想要本身編寫平臺,導出這些Case是個不小的工做量。

Jmeter+Jenkins+Ant實施方案的適用範圍:

  1. 小型公司或小團隊,大公司有本身的平臺,後續需求也多,仍是本身寫一套吧。
  2. 測試團隊較小,沒有專門的測試開發部門支持。
  3. 編程不是很牛逼的,若是你很厲害,本身能搞定全部前端,後臺,本身搞比較好。
  4. 須要馬上出活的,不想將有限的精力放到後期維護當中的。

Jmeter相關插件安裝:

插件安裝:

Jmeter的插件安裝很簡單,只須要下載對應插件解壓便可。

  • 下載地址:http://jmeter-plugins.org/downloads/all/
  • 下載後解壓放入:apache-jmeter-2.12\lib\ext\目錄下
  • 重啓jmeter

    ps:數據庫連接驅動若是須要須要專門下載,例如mysql須要jdbc的jar包,地址:http://dev.mysql.com/downloads/file/?id=462850

用例生成與導出:

Jmeter的用例格式爲jmx文件,實際爲xml格式,感興趣能夠學習下本身定製生成想要的jmx文件。

  • 生成原則:
    • 每一個功能模塊爲一個獨立的jmx文件。增長可維護性。(儘可能不要將一個jmx文件放入太多功能,後期維護成本會很高。)
    • 模塊的私有變量保存在模塊中,多模塊共有的(例如服務器ip端口等)能夠考慮存在單獨的文件中讀取。
    • 接口測試不要放太多線程,畢竟不是作壓力測試,意義也不大。
  • 導出方法:
    • 編寫測試用例
    • 文件——保存爲——肯定:

Jmeter配置文件修改:

  • 爲何要修改配置文件
    • jmeter執行結果文件默認保存的不是xml格式,沒法轉化成html格式
    • jmeter執行結果文件默認有不少執行數據是不保存的,而測試報告須要這些數據
  • 配置文件路徑

    ${jmeterhome}/bin/jmeter.profile

  • 配置文件修改內容:
    • 修改jtl 文件格式:

      去掉註釋(#),修改csv爲xml

    • 添加jtl文件結果參數:

      根據想要保存的參數修改,若不會可參照後文第三方模板網址給出的參數修改。

      修改後別忘記去掉註釋(#)

Jenkins相關插件介紹與配置:

Jenkins插件安裝方法本文不作介紹,感興趣的能夠查資料學習下。

Jmeter插件:Performance plugin

  • 功能:用來展現jmeter執行結果
  • 配置截圖:

  • 配置說明:
    • Report files:配置jtl文件路徑,相對路徑與絕對路徑都可,圖爲相對路徑
    • 其餘選項:配置失敗比例顯示圖形等參數,按需配置

Ant插件:Ant Plugin

  • 功能:用來執行Ant
  • 配置截圖:

       

  • 配置說明:
    • Ant Plugin能夠在構建步驟中添加,直接執行構建
    • 另一種方式就添加shenll腳本(windows下添加dos腳本)執行構建,截圖中就是這樣操做
    • 相比用插件構建,命令行構建有如下優缺點:
      • 須要在服務器中直接安裝ant並配置環境變量,確保jenkins能夠直接執行ant命令
      • 若是Jenkins是放在tomcat容器中,須要在tomcat中配置環境變量,不然會報找不到Ant命令,具體配置以下:
        • 編輯 catalina.sh 文件,加入環境變量,不然 jenkins 會報找不到 Ant 錯誤

          #See the license for the……

          JAVA_HOME=/usr/lib/jvm/jdk1.8.0_31

          Export JENKINS_HOME="/root/.jenkins"

    • 靈活性更強,能夠直接指定 Ant 的執行參數

         

Svn插件:Subversion Plug-in

  • 功能:版本管理,按需使用
  • 配置截圖:

  • 配置說明:
    • Reponsitory URL:填寫倉庫url地址
    • Add按鈕:添加svn的用戶名密碼
    • 其餘選項:按需配置

         

Html展現插件:HTML Publisher plugin

  • 功能:html報告展現
  • 配置截圖:

  • 配置說明:
    • HTML directory to archive:填寫生成html文件的路徑
    • index page[s]:填寫展現報告的主頁
    • 其餘選項:按需填寫
  • 原理說明:
    • 本插件並不會本身產生html文件,而是經過xslt轉化xml生成的報告
    • xslt能夠本身在服務器中安裝,也能夠經過經過Ant配置文件指定jar包,本文就是經過Ant指定jmeter內部集成的jar包
    • 生成的html文件並非在jenkins中默認的報告路徑展現,而是會複製到${jenkinshome}/jobs/projectname/htmlreports/HTML_REPORT

      目錄下

    • 每次只能展現最新版本的html報告,也就是說上一次編譯的html報告會被覆蓋
    • 由於jenkins安全性的問題,默認加載出來的報告是無css的,經過如下配置解決:

      HTML Publisher Plugin 插件在新的Jenkins版本中會致使打開的網頁中沒法加載CSS以及沒法點擊按鈕的狀況,因爲CSP致使,可在Jenkins控制檯中執行:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")以解決此問題。其餘因爲CSP緣由致使的html插件也可用此方法解決。

         

         

Git插件:

  • 功能:版本管理,按需使用
  • 配置截圖:

  • 配置說明:
    • Reponsitory URL:倉庫地址
    • Add添加git的帳號
  • 使用技巧:在只能經過http鏈接,須要每次輸入帳號密碼的狀況下,能夠按以下配置,配置後便可按照填寫帳號密碼權限獲取內容。

cd /root

vim .netrc

添加配置以下:

machine git服務器路徑

login git帳號

password git密碼

Jenkins項目整體配置:

  • 服務器環境與依賴
    • Jdk:安裝並配置環境變量
    • Ant:安裝並配置環境變量
    • Jmeter:安裝並添加須要的插件
    • 其餘:
      • Jmeter+Ant,須要將${jmeterhome}/extras/ant-jmeter-1.1.1.jar文件拷貝到${anthome}/lib目錄下,不然編譯會報錯
      • Jmeter如需連接數據庫,需添加jdbc插件
      • 若是不引入jmeter中的xslt,須要手動安裝該軟件
  • Jenkins項目配置:
    • jenkins的工做路徑,一樣的jar包均可能會生成不一樣的路徑。

      jenkins——系統設置——高級

         

   

Ant相關使用:

Ant的具體使用方法本文不詳細介紹,感興趣能夠本身閱讀相關資料學習一下。

定製集成Ant配置文件:

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

   

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

<!-- 須要改爲本身本地的 Jmeter 目錄-->

<property name="jmeter.home" value="/home/apache-jmeter-2.13" />

<!-- jmeter生成jtl格式的結果報告的路徑-->

<property name="jmeter.result.jtl.dir" value="/root/.jenkins/jobs/ApiTest/workspace/report/jtl" />

<!-- jmeter生成html格式的結果報告的路徑-->

<property name="jmeter.result.html.dir" value="/root/.jenkins/jobs/ApiTest/workspace/report/html" />

<!-- 生成的報告的前綴-->

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

<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/report.jtl" />

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

<property name="lib.dir" value="${jmeter.home}/lib"/>

   

<path id="xslt.classpath">

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

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

</path>

   

   

<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="/root/.jenkins/jobs/ApiTest/workspace/jmx" includes="*.jmx" />

   

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

   

</jmeter>

</target>

          

<target name="report">

<xslt classpathref="xslt.classpath"

force="true"

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

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

style="${jmeter.home}/extras/jmeter-results-lyz.xsl">

<!-- 由於上面生成報告的時候,不會將相關的圖片也一塊兒拷貝至目標目錄,因此,須要手動拷貝 -->

</xslt>

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

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

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

</project>

  • 如上,標紅的文字,爲路徑信息,須要修改成本身的本地路徑
  • style參數爲生成html文件的模板文件,能夠修改成本身的模板文件,jmeter提供了多個模板文件可供使用

Case管理目錄結構:

關於Case的管理,因測試主要依賴Jmeter+Ant來作,結構以下:

  1. ./jmx/目錄用來放Jmeter生成的Case文件(編寫時注意,不要用絕對路徑,不然後續維護成本會提升)
  2. ./res/目錄用來放Jmeter測試須要的相關配置文件與資源,例如賬號信息,上傳圖片接口測試所需的圖片等
  3. build.xml文件,Ant的配置文件
  4. 閱讀build.xml文件,會發先還有一個自動生成的目錄./report,該目錄下有兩個目錄jtl以及html,用來放置不一樣格式的測試報告。

測試執行與報告優化:

測試報告模板介紹:

  • jmeter 自帶模板
    • jmeter自帶了4個模板(jmeter3後下降爲2個)
    • 模板路徑:${jmeterhome}/extras/jmeter-results*.xsl
    • 模板效果(jmeter-result-detail_21.xsl ):

    • 模板使用:
      • 修改${jmeterhome}/bin/jmeter.profile配置文件,添加所需的報告參數
      • build.xml文件中指定,手動操做學習下xslt工具的使用說明
  • 第三方模板(本人只找到了一個第三方模板)
    • 下載地址:http://shanhe.me/node/18/314
    • 模板效果:

    • 注意事項:
      • 千萬不要忘記修改jmeter.profile文件
      • 地址中介紹build.xml文件以及jmeter.profile文件具體的參數修改,不要忽視

測試報告模板優化:

  • 爲何要優化模板:
    • 第三方模板看起來不夠歸納
    • 自定義模板格局比較漂亮,默認沒法查看響應數據,不便於調試
  • 修改後結果:
    • 基於自帶模板修改
    • 添加展現響應數據內容
    • 添加響應數據過長換行功能
  • 修改步驟:
    • 編輯jmeter-results-detail-report_21.xsl

      查看響應數據,修改成

         

    • 須要刪除build 文件中的showData 配置,不然會致使編譯出來的仍然不顯示

    • 結果

   

關於拓展的思考:

Case管理的優化拓展:

  1. 編寫Gui工具導出與生成Case,下降Jmeter學習成本。
  2. jmeter的case其實xml格式,若是想要導出管理,能夠編寫工具導出存儲以及編輯
  3. Jmeter3支持直接生成html 格式的report,目前還沒研究,有興趣的能夠學習一下

相關文章
相關標籤/搜索