1. 什么是接口測試?為什么要做接口測試?
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。
由於如今的系統復雜度不斷上升,傳統的測試方法成本急劇增加且測試效率大幅下降,所以就要做接口測試。同時,接口測試相對容易實現自動化持續集成,且相對UI自動化也比較穩定,可以減少人工回歸測試人力成本與時間,縮短測試周期,支持后端快速發版需求。接口持續集成是為什么能低成本高收益的根源。現在很多系統前后端架構是分離的,從安全層面來說,只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要后端同樣進行控制,在這種情況下就需要從接口層面進行驗證。前后端傳輸、日志打印等信息是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。
2. 后端接口測試測什么?
從下面這張圖可以看出后端接口測試主要測了些什么:
3. 怎么做接口測試?
一般情況下,由於我們項目前后調用主要是基於http協議的接口,所以測試接口時主要是通過工具或代碼模擬http請求的發送和接收。所以我們下面整理了一下使用Jmeter工具進行http接口測試。
3.1 開發接口測試案例的整體方案
第一步: 分析出測試需求,並拿到開發提供的接口說明文檔;
第二步: 從接口說明文檔中整理出接口測試案例,里面要包括詳細的入參和出參數據以及明確的格式和檢查點;
第三步: 和開發一起對接口測試案例進行評審;
第四步: 結合開發庫,准備接口測試案例中的入參和出參數據,並整理成csv格式的文件;
第五步: 結合接口測試案例文檔和csv格式的數據文檔,做接口測試案例的自動化案例開發。
3.2 接口自動化適用場景
目前設計的自動化接口測試案例有兩個運行場景:
(1)測試前置、開發自測:一個新的自動化接口測試案例開發完成后,直接發給接口對應的開發,安排在開發本地環境執行,一旦開發確認完成接口開發,就開始執行接口測試案例,基本上可以實時拿到測試結果,方便開發快速做出判斷。(開發本地運行的方式就是打開JMeter工具,導入JMX文件,開始執行可。)
(2)回歸測試:開發本地測試通過后,或整個需求手工測試通過后,把自動化的接口測試案例做分類整理,挑選出需要納入到回歸測試中的案例,在持續集成環境重新准備測試數據,並把案例納入到持續集成的job中來,這些用於回歸的接口測試案例需要配置到持續集成平台自動運行。
3.3 接口測試環境准備
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/
3.4 創建工程
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) 安全指標是否滿足要求