1. 程式人生 > >Jmeter做介面測試

Jmeter做介面測試

1. 什麼是介面測試?為什麼要做介面測試?

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

由於如今的系統複雜度不斷上升,傳統的測試方法成本急劇增加且測試效率大幅下降,所以就要做介面測試。同時,介面測試相對容易實現自動化持續整合,且相對UI自動化也比較穩定,可以減少人工迴歸測試人力成本與時間,縮短測試周期,支援後端快速發版需求。介面持續整合是為什麼能低成本高收益的根源。現在很多系統前後端架構是分離的,從安全層面來說,只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要後端同樣進行控制,在這種情況下就需要從介面層面進行驗證。前後端傳輸、日誌列印等資訊是否加密傳輸也是需要驗證的,特別是涉及到使用者的隱私資訊,如身份證,銀行卡等。

2. 後端介面測試測什麼?

  從下面這張圖可以看出後端介面測試主要測了些什麼:

3. 怎麼做介面測試?

  一般情況下,由於我們專案前後呼叫主要是基於http協議的介面,所以測試介面時主要是通過工具或程式碼模擬http請求的傳送和接收。所以我們下面整理了一下使用Jmeter工具進行http介面測試。

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

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

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

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

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

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

  3.2 介面自動化適用場景

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

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

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

  3.3 介面測試環境準備

  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) 安全指標是否滿足要求