1、什麼是接口測試?php
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。html
接口測試適用於爲其餘系統提供服務的底層框架系統和中心服務系統,主要測試這些系統對外部提供的接口,驗證其正確性和穩定性。接口測試一樣適用於一個上層系統中的服務層接口,越往上層,其測試的難度越大。web
接口測試實施在多系統多平臺的構架下,有着極爲高效的成本收益比,接口測試天生爲高複雜性的平臺帶來高效的缺陷監測和質量監督能力。平臺越複雜,系統越龐大,接口測試的效果越明顯。express
基於接口測試的重要性,以及它比較容易自動化的特性,經過持續集成的接口監控可以及時的發現項目中存在的問題,這對持續運營的項目來講,很是重要。apache
2、接口測試的流程api
一、 項目啓動後,測試人員要儘早找到開發人員拿到接口測試文檔併發
二、 獲取接口測試文檔後,就能夠進行接口用例的編寫和調試框架
三、 接口用例編寫調試完成後,部署到持續集成的測試環境中,ide
四、 設定腳本運行頻率,告警方式等基本參數,進行接口的平常監控工具
五、 每日進行接口腳本的維護更新,接口異常的處理
3、編寫接口測試腳本
大部分性能工具均可以用來進行接口測試,jmeter就是一個好用的性能測試工具, 他也一樣能夠用來進行接口測試,jmeter比較適用於CGI、webservice、DB等類型的接口測試。下面以websevice api接口爲例說明如何編寫接口測試用例(本文側重於接口測試平臺的搭建,對於具體工具是使用只進行簡單介紹,對於工具不瞭解的,能夠自行百度):
jimter接口腳本的編寫步驟以下:
一、 編寫接口請求
經過錄制或者查看接口文檔,編寫接口請求,進行調試,確保接口調試經過
對於http的請求來講,就是正確的填寫域名,查詢字符串,查詢參數等信息
二、 對接口的返回結果進行斷言
斷言的目的是對輸出結果進行判斷,確認接口測試結果是否有異常
這些工做完成後,接口測試腳本就準備好了
4、生成接口測試報告
接口測試腳本運行後生成的是JTL(xml)格式的文件,這些文件不具有可讀性,所以咱們要把他轉化爲能夠閱讀的html格式報告。
轉化的步驟以下:
一、 安裝ant工具
Ant是一個功能強大的打包編譯工具。咱們使用他的目的是將xml文件轉化爲html格式的文件
二、 找到jmeter自帶的xsl文件
Xml文件要轉化爲html文件,須要編寫xsl文件,實際上,jmeter已經自帶了xsl文件,若是你不想本身定義格式的話,能夠直接使用自帶的格 式,這樣能夠省很多事情。這些文件的位置位於jmeter的extras文件夾下,只須要簡單修改一些文件路徑配置就能夠正常使用。
三、 編寫ant的buildfile文件
Ant自帶了把XML轉化爲html的lib庫,所以,這個轉化也是至關簡單的,示例以下:
<target name="xslt-report" depends="_message_xalan"> <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${resultpath}/${test}-${TODAY}.jtl" out="${resultpath}/${test}-${TODAY}.html" style="${jmeter.extras}/jmeter-results-detail-report${style_version}.xsl"> <param name="showData" expression="${show-data}"/> <param name="titleReport" expression="${report.title}"/> <param name="dateReport" expression="${report.datestamp}"/> </xslt> </target> |
完整的buildfile文件,請自行百度
四、 運行ant命令,生成html文件
Cmd運行ant –buildfile xsl文件,你就能夠生成html報告了
生成的測試報告以下:
5、部署到持續集成平臺
部署到持續集成平臺能夠實現腳本的定時運行,這是接口測試的核心。
這裏咱們選用了jenkins,,jenkins是一個強大的持續集成系統,使用起來也很簡單。
使用步驟以下:
一、 安裝jenkins
Jenkins的安裝是很是簡單的
注意:請將jenkins安裝到一個空間比較大的系統盤中。由於jenkins運行起來,生成的文件比較佔空間。
二、 安裝完成後,配置一個項目
三、 配置item參數
舊的構建保存了你在一次構建中的全部臨時文件,若是構建沒有保留的必要,就勾選丟棄舊的構建,同時設置保持構建天使和保持構建的最大個數兩個參數。
注意:三個設置必須同時設置,不然無效
四、 設置定時運行間隔,這裏,設置間隔時間爲10分鐘運行一次
五、設置invoke ant
經過設置invoke ant,就能夠調用ant,執行打包過程。在這裏,也就是執行生成測試報告的步驟
經過以上步驟,咱們就成功搭建了一個簡單的持續集成的接口測試平臺,固然,你也能夠根據本身的須要添加其餘更強大的功能
jmeter能夠經過ant自動執行測試腳本,而後集成到jenkins上,併發送測試報告
一、下載安裝ant
二、將jmeter安裝包extras文件夾裏ant-jemter-1.1.1.jar 複製到ant\lib下
三、進入到jmeter安裝包extras文件夾,ant後測試下可否生成test.jtl和test.html
四、將jmeter安裝包extras文件夾下build.xml和collapse.png、expand.png、jmeter-results-detail-report_21.xsl複製到bin目錄下
五、修改build.xml配置路徑
六、jenkins上安裝Performance plugin後,新建job
執行構建後就可啓動jmeter的測試腳本並在jenkins上看大生成的測試報告
實際配置
對應的目錄
設置的主目錄
絕對路徑
build.xml 內容
<?xml version="1.0" encoding="utf-8"?><project name="JmeterTest" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <!-- 須要改爲本身本地的 Jmeter 目錄--> <property name="jmeter.home" value="/usr/local/JmeterTest/apache-jmeter-2.13" /> <!-- jmeter生成jtl格式的結果報告的路徑--> <!-- <property name="jmeter.result.jtl.dir" value="/usr/local/JmeterTest/results/jtl" /> --> <property name="jmeter.result.jtl.dir" value="/var/lib/jenkins/workspace/Jmeter/results/jtl" /> <!-- jmeter生成html格式的結果報告的路徑--> <property name="jmeter.result.html.dir" value="/usr/local/JmeterTest/results/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" /> <!-- 接收測試報告的郵箱 --> <property name="mail_to" value="11111@163.com" /> <!-- 電腦地址 --> <property name="ComputerName" value="bogon" /> <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}"> <!-- 聲明要運行的腳本。"*.jmx"指包含此目錄下的全部jmeter腳本 --> <testplans dir="/usr/local/JmeterTest/script" 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" /> <!-- 由於上面生成報告的時候,不會將相關的圖片也一塊兒拷貝至目標目錄,因此,須要手動拷貝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> <!-- 發送郵件 --></project>
執行構建後就可啓動jmeter的測試腳本並在jenkins上看大生成的測試報告