手把手教你做介面測試

手把手教你做介面測試

8 人贊了文章

介面測試是測試系統組件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。

簡答的說就是通過URL像伺服器或者其他模塊等,傳輸我們想傳輸的數據,然後看看他們返回的是不是我們預期想要的。

為什麼要做介面測試?

1.越底層發現bug,它的修復成本是越低的。

2.前端隨便變,介面測好了,後端不用變,前後端是兩撥人開發的。

3.檢查系統的安全性、穩定性,前端傳參不可信,比如京東購物,前端價格不可能傳入-1元,但是通過介面可以傳入-1元。

4.如今的系統複雜度不斷上升,傳統的測試方法成本急劇增加且測試效率大幅下降,介面測試可以提供這種情況下的解決方案。

5. 介面測試相對容易實現自動化持續集成,且相對UI自動化也比較穩定,可以減少人工回歸測試人力成本與時間,縮短測試周期,支持後端快速發版需求。介面持續集成是為什麼能低成本高收益的根源。

6. 現在很多系統前後端架構是分離的,從安全層面來說:

(1)只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要後端同樣進行控制,在這種情況下就需要從介面層面進行驗證。

(2)前後端傳輸、日誌列印等信息是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私信息,如身份證,銀行卡等。

介面測試原理

通過測試程序模擬客戶端向伺服器發送請求報文,伺服器接收請求報文後對相應的報文做出處理然後再把應答報文發送給客戶端,客戶端接收應答報文這一過程(request(請求)→response(響應))

劃重點!怎樣做介面測試?

--由於我們項目前後端調用主要是基於http協議的介面,所以測試介面時主要是通過工具或代碼模擬http請求的發送與接收。工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

--也可以用介面自動化來實現,就是用代碼實現,框架和UI自動化差不多,發送請求用斷言來判斷。所以我們下面整理了一下使用Jmeter工具進行http介面測試。

1 開發介面測試案例的整體方案

第一步: 分析出測試需求,並拿到開發提供的介面說明文檔;

第二步: 從介面說明文檔中整理出介面測試案例,裡面要包括詳細的入參和出參數據以及明確的格式和檢查點;

第三步: 和開發一起對介面測試案例進行評審;

第四步: 結合開發庫,準備介面測試案例中的入參和出參數據,並整理成csv格式的文件;

第五步: 結合介面測試案例文檔和csv格式的數據文檔,做介面測試案例的自動化案例開發。

2 介面自動化適用場景

目前設計的自動化介面測試案例有兩個運行場景:

(1)測試前置、開發自測:一個新的自動化介面測試案例開發完成後,直接發給介面對應的開發,安排在開發本地環境執行,一旦開發確認完成介面開發,就開始執行介面測試案例,基本上可以實時拿到測試結果,方便開發快速做出判斷。(開發本地運行的方式就是打開JMeter工具,導入JMX文件,開始執行可。)

(2)回歸測試:開發本地測試通過後,或整個需求手工測試通過後,把自動化的介面測試案例做分類整理,挑選出需要納入到回歸測試中的案例,在持續集成環境重新準備測試數據,並把案例納入到持續集成的job中來,這些用於回歸的介面測試案例需要配置到持續集成平台自動運行。

3 介面測試環境準備

Jdk1.6或以上:oracle.com/technetwork/

Jmeter, 下載地址:jmeter.apache.org/downl

插件的下載安裝地址: jmeter-plugins.org/

4 創建工程

①打開Jmeter:下載好Jmeter後,雙擊bin目錄下的jmeter.bat文件: 

②添加線程組:在「測試計劃」上點擊滑鼠右鍵-->添加-->threads(Users)-->線程組,添加測試場景設置組件,介面測試中一般設置為1個「線程數」,根據測試數據的個數設定「循環次數」。

③添加「HTTP Cookie管理器」:

④添加「Http請求默認值」組件,當被測系統有唯一的訪問域名和埠時,這個組件很好用:

⑤在「HTTP 請求默認值」組件配置頁面,填寫被測系統的域名和埠,http請求的實現包版本以及具體協議類型,線程組裡的所有「HTTP Sampler」可默認使用此設置。

⑥在「線程組」里添加「HTTP 請求」的Sampler

⑦在HTTP請求設置頁面,錄入被測介面的詳細信息,包括請求路徑,對應的請求方法,以及隨請求一起發送的參數列表:

⑧設置檢查點:在被測介面對應的「HTTP 請求」上,添加「響應斷言」: 

⑨在設置頁面上添加對相應結果的正則表達式存在性判斷即可:

⑩添加監聽器:方便查看運行後的結果

運行結果:  

上述步驟完成了一個簡單測試案例的創建,複雜測試案例均在此基礎上擴展完成。使用Jmeter工具開發的介面測試案例,一個子系統建議放在同一個 「測試計劃」中,流程測試可以通過「線程組」來區分,這樣也便於設定不同的測試數據個數。比較獨立的介面,可以統一放在一個線程組內,順序完成測試。

流程性介面的測試:如果要測試的介面可以組成一個流程,只需要順序添加多個「HTTP 請求」的Sampler,各請求之間可以提取需要在上下文傳遞的數據作為參數,以保證流程中數據的一致性。

介面測試持續集成

對介面測試而言,持續集成自動化是核心內容,通過持自動化的手段我們才能做到低成本高收益。目前我們已經實現了介面自動化,主要應用於回歸階段,後續還需要加強自動化的程度,包括但不限於下面的內容:

a) 流程方面:在回歸階段加強介面異常場景的覆蓋度,並逐步向系統測試,冒煙測試階段延伸,最終達到全流程自動化。

b) 結果展示:更加豐富的結果展示、趨勢分析,質量統計和分析等

c) 問題定位:報錯信息、日誌更精準,方便問題復現與定位。

d) 結果校驗:加強自動化校驗能力,如資料庫信息校驗。

e) 代碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提高代碼覆蓋率。

f) 性能需求:完善性能測試體系,通過自動化的手段監控介面性能指標是否正常。

介面測試質量評估標準

a) 業務功能覆蓋是否完整

b) 業務規則覆蓋是否完整

c) 參數驗證是否達到要求(邊界、業務規則)

d) 介面異常場景覆蓋是否完整

e) 介面覆蓋率是否達到要求

f) 代碼覆蓋率是否達到要求

g) 性能指標是否滿足要求

h) 安全指標是否滿足要求

到這裡,我們就完成了介面測試自動執行並生成報告的設置,然而,這並不是大結局,介面測試是一個需要長期維護的工作,大家還要定期增減介面,避免介面測試和系統脫節。

關注51Testing軟體測試網,提升it技能,從不會到熟練只差一步。

推薦閱讀:

如何成為一個優秀的測試人員
什麼是 「調試」 ?
我對軟體測試的理解
如何用Python操作MySQL
項目上線流程

TAG:自動化測試 | 軟體測試 |