接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。html
因爲現在的系統複雜度不斷上升,傳統的測試方法成本急劇增長且測試效率大幅降低,因此就要作接口測試。同時,接口測試相對容易實現自動化持續集成,且相對UI自動化也比較穩定,能夠減小人工迴歸測試人力成本與時間,縮短測試周期,支持後端快速發版需求。接口持續集成是爲何能低成本高收益的根源。如今不少系統先後端架構是分離的,從安全層面來講,只依賴前端進行限制已經徹底不能知足系統的安全要求(繞過前面實在太容易), 須要後端一樣進行控制,在這種狀況下就須要從接口層面進行驗證。先後端傳輸、日誌打印等信息是否加密傳輸也是須要驗證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。前端
從下面這張圖能夠看出後端接口測試主要測了些什麼:java
通常狀況下,因爲咱們項目先後調用主要是基於http協議的接口,因此測試接口時主要是經過工具或代碼模擬http請求的發送和接收。因此咱們下面整理了一下使用Jmeter工具進行http接口測試。正則表達式
第一步: 分析出測試需求,並拿到開發提供的接口說明文檔;數據庫
第二步: 從接口說明文檔中整理出接口測試案例,裏面要包括詳細的入參和出參數據以及明確的格式和檢查點;apache
第三步: 和開發一塊兒對接口測試案例進行評審;後端
第四步: 結合開發庫,準備接口測試案例中的入參和出參數據,並整理成csv格式的文件;安全
第五步: 結合接口測試案例文檔和csv格式的數據文檔,作接口測試案例的自動化案例開發。架構
目前設計的自動化接口測試案例有兩個運行場景:oracle
(1)測試前置、開發自測:一個新的自動化接口測試案例開發完成後,直接發給接口對應的開發,安排在開發本地環境執行,一旦開發確認完成接口開發,就開始執行接口測試案例,基本上能夠實時拿到測試結果,方便開發快速作出判斷。(開發本地運行的方式就是打開JMeter工具,導入JMX文件,開始執行可。)
(2)迴歸測試:開發本地測試經過後,或整個需求手工測試經過後,把自動化的接口測試案例作分類整理,挑選出須要歸入到迴歸測試中的案例,在持續集成環境從新準備測試數據,並把案例歸入到持續集成的job中來,這些用於迴歸的接口測試案例須要配置到持續集成平臺自動運行。
Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html
Jmeter, 下載地址:http://jmeter.apache.org/download_jmeter.cgi
插件的下載安裝地址: http://www.jmeter-plugins.org/
1.打開Jmeter:下載好Jmeter後,雙擊bin目錄下的jmeter.bat文件:
2.添加線程組:在「測試計劃」上點擊鼠標右鍵-->添加-->threads(Users)-->線程組,添加測試場景設置組件,接口測試中通常設置爲1個「線程數」,根據測試數據的個數設定「循環次數」。
3.添加「HTTP Cookie管理器」:
4.添加「Http請求默認值」組件,當被測系統有惟一的訪問域名和端口時,這個組件很好用:
5.在「HTTP 請求默認值」組件配置頁面,填寫被測系統的域名和端口,http請求的實現包版本以及具體協議類型,線程組裏的全部「HTTP Sampler」可默認使用此設置。
6.在「線程組」裏添加「HTTP 請求」的Sampler
7.在HTTP請求設置頁面,錄入被測接口的詳細信息,包括請求路徑,對應的請求方法,以及隨請求一塊兒發送的參數列表:
8.設置檢查點:在被測接口對應的「HTTP 請求」上,添加「響應斷言」:
9.在設置頁面上添加對相應結果的正則表達式存在性判斷便可:
10.添加監聽器:方便查看運行後的結果
運行結果:
上述步驟完成了一個簡單測試案例的建立,複雜測試案例均在此基礎上擴展完成。使用Jmeter工具開發的接口測試案例,一個子系統建議放在同一個 「測試計劃」中,流程測試能夠經過「線程組」來區分,這樣也便於設定不一樣的測試數據個數。比較獨立的接口,能夠統一放在一個線程組內,順序完成測試。
流程性接口的測試:若是要測試的接口能夠組成一個流程,只須要順序添加多個「HTTP 請求」的Sampler,各請求之間能夠提取須要在上下文傳遞的數據做爲參數,以保證流程中數據的一致性。
4. 接口測試持續集成
對接口測試而言,持續集成自動化是核心內容,經過持自動化的手段咱們才能作到低成本高收益。目前咱們已經實現了接口自動化,主要應用於迴歸階段,後續還須要增強自動化的程度,包括但不限於下面的內容:
a) 流程方面:在迴歸階段增強接口異常場景的覆蓋度,並逐步向系統測試,冒煙測試階段延伸,最終達到全流程自動化。
b) 結果展現:更加豐富的結果展現、趨勢分析,質量統計和分析等
c) 問題定位:報錯信息、日誌更精準,方便問題復現與定位。
d) 結果校驗:增強自動化校驗能力,如數據庫信息校驗。
e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提升代碼覆蓋率。
f) 性能需求:完善性能測試體系,經過自動化的手段監控接口性能指標是否正常。
5. 接口測試質量評估標準
a) 業務功能覆蓋是否完整
b) 業務規則覆蓋是否完整
c) 參數驗證是否達到要求(邊界、業務規則)
d) 接口異常場景覆蓋是否完整
e) 接口覆蓋率是否達到要求
f) 代碼覆蓋率是否達到要求
g) 性能指標是否知足要求
h) 安全指標是否知足要求