天天看點

如何做好接口測試?

本文轉載:http://www.51testing.com/html/95/n-3718695.html

一、接口測試簡介

1、什麼是接口測試?

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

2、為什麼要做接口測試

a)網際網路的快速發展,公司内部系統或與外部系統的關聯越來越多,一個業務流程關聯多個後端系統,它們的關聯都是基于接口來實作,接口測試可以将複雜的系統關聯進行簡化,隻要做好每個接口的測試就能夠較好的保證系統品質。

b)單個系統的變更,是否會影響到關聯業務系統,比較難用正常的測試方面來覆寫相關的應用系統(例如使用此接口的外部 系統有N個,不可能每個做功能相容性測試),但可以通過對接口功能的覆寫來驗證是否影響它人對接口的調用。

c)接口功能比較單一,能夠比較好的進行測試覆寫,也相對容易實作自動化持續內建,,可以減少人工回歸成本與時間,縮短測試周期。

d)接口相對于界面功能,會更底層一些,測試覆寫會更容易(如業務在調用接口時做了判斷,當不滿足條件時連結就不顯示,此時從界面無法測試相關功能是否做好判斷,通過接口就比較容易)

3、接口測試範圍

a)業務功能(包括正常、異常場景是否實作)

b)業務規則(覆寫度是否全面)

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

d)異常場景(重複送出、并發送出、事務中斷、多機環境、大資料量測試)

e)性能測試(響應時間、吞吐量、并發數、資源要求)

f)安全測試(權限驗證、SQL注入等)

4、接口測試的重點

1、檢查接口傳回的資料是否與預期結果一緻。

2、檢查接口的容錯性,假如傳遞資料的類型錯誤時是否可以處理。

3、接口參數的邊界值。例如,傳遞的參數足夠大或為負數時,接口是否可以正常處理。

4、接口的性能,http請求接口大多與後端執行的SQL語句性能、算法等比較相關。

5、接口的安全性,外部調用的接口尤為重要。

二、做好接口測試的前提

1、系統化的接口文檔

傳統的接口文檔,一般采用word或wiki等系統來記錄,從單次使用上似乎比較簡單,因為大家會更習慣這樣的操作,但這種形式存在比較大的問題:

a、接口文檔非标準化,無法直接與接口測試工具接口使用

b、接口維護困難,接口有變化時比較難辨別清楚,溝通成本很高

系統化接口文檔,例如rap(淘寶分源的一個系統),具備接口維護标準化、版本化管理、MOCK測試等功能;對标準化的接口内容做二次開發,可以直接導出Soapui等工具使用的格式,直接導入工具中使用,有以下好處:

A、接口測試時不再需要手工輸入相關字段,節省時間成本

B、版本化管理,能夠清晰的知道哪些接口有變化

Rap參考 http://rapapi.org/org/index.do

2、标準化的接口規範

接口管理是做好接口測試很重要的前提,如果一個系統有哪些接口都不太清楚,測試就很難覆寫到,接口管理建議采用以下方式:

A、按接口提供方為機關進行首次劃分,按接口使用方進行二次劃分,再按業務子產品進行細分,分類原則根據内容多少進行優化,不需要固定,如本身接口較少就沒有必要分得過細,較多時就需要多劃分子產品

如:系統A,提供有 1、2、3、4、5、6、7、8、9 這9個接口,接口分别給B系統、C系統使用,其中1、2為公用接口,3、4、5為B專用,6、7、8、9為C系統專用,劃分如下:

B、按接口連結URL做為唯一,不同的接口參數做為接口變量,接口有參數變更時在原來接口上進行維護,而不是新增加接口

C、為接口增加版本号,友善清楚哪些接口本次有變更,易于維護用例

三、接口測試常用工具

 工具名  類型  特點  使用建議
 JMeter  開源 個人覺得使用起來還是比較麻煩,對JMeter非常熟悉的建議使用,新手不建議使用
 開源&商業 開源版本有功能限制,不能直接使用循環等、支援groovy語言 操作比較簡單,但對具有一定的流程的接口測試用例不是太友善維護,對于獨立的接口推薦使用
 PostMan  免費 流利器插件,易用,功能相對簡單 相對比較簡單的接口
 Loadrunner 主要做性能測試使用,具備接口請求錄制自動生成腳本、添加判斷等功能 具有一定流程性的接口、及具備LR使用經驗的人使用

1、JMeter

JMeter是Apache組織開發的基于Java的壓力測試工具,能夠将請求轉換為腳本來實作,并允許使用正規表達式建立斷言來對請求傳回結果進行判斷,具備接口測試功能和性能的能力。

參考:http://www.51testing.com/html/79/n-3708579.html

2、SOAPUI

SoapUI是一個完整的自動化測試解決方案。支援SOAP和REST的Web服務,JMS企業消息層,資料庫,豐富的網際網路應用,等等。而在SoapUI,你從它的直覺和強大的使用者界面這一切。對于自動化程度較高,SoapUI還提供了指令行工具,讓您運作的功能/負載測試和幾乎所有的任務排程程式,或作為您的建構過程中的一個組成部分MockServices集。

3、PostMan

Postman是一款功能強大的網頁調試與發送網頁HTTP請求的Chrome插件,具備Fiddler\httpwatch之類的工具調試請求的功能,同時具備接口管理功能,官網提升腳本儲存同步功能,支援接口導入導出

http://blog.csdn.net/flowerspring/article/details/52774399

4、Loadrunner

HP公司的性能測試工具,使用C語言或JAVA語言編寫腳本,易學易用

四、接口自動化測試執行個體

RAP+SoapUI

1、接口文檔rap系統錄入

2、導出wadl格式檔案

3、接口導入測試工具進行測試

打開soapui,建立project,右鍵添加WADL

确認導入後結果如下:

右鍵對應的項目生成測試用例

界面如下:

備注:這裡可選擇為每一個資源生成一個單獨的用例,也可以選擇将所有請求生成到一個用例中,使用時建議,請求将多時選擇,較少時選擇

,以友善用例管理

确認後,将生成如下的測試用例集

接下來對每一個用例進行完善,進行參數化、添加檢查點來判斷結果

注:

1、參數化方式有多種形式,支援直接維護參數清單、讀取參數檔案、直接使用SQL語句查詢資料等。如果資料是比較固定的可以使用直接維護參數清單;如果資料狀态之類的會發生變化,建議使用SQL語句查詢,這樣能保證參數的有效性

2、檢查點也支援多種形式,常用contains、Xpatch Match,支援自己編寫腳本來判斷

RAP+PostMan

PostMan支援導入功能,可以直接導入

Postman Collection, Environment, data dump, curl command, or a RAML / WADL / Swagger(v1/v2) / Runscope file

将上面導入SOAPUI中的WADL檔案導入,結果如下:

PostMan與soapui接合

Soapui 新版本支援直接導入PostMan Collection,如下圖

這樣大家也可以将使用PostMan測試的記錄導入到Soapui中使用

五、持續內建接口測試

對接口測試而言,持續內建自動化是核心内容,通過自動化的手段才能有效降低成本,提高接口測試的價值。如果使用LR、JMeter、SoapUI工具做自動化測試,工具本身支援指令行模式運作,可以接合Jenkins 等自動化平台,實作項目版本更新後的自動化回歸測試

關于持續自動化回歸測試的建議:

1、接口腳本開發時要注意參數的取值的可用性,不因為時間或資料狀态的變化引起腳本不能正常運作,降低腳本維護成本.

2、接口回歸功能的覆寫度控制,需要根據腳本的實際功能和重要性判斷自動化回歸覆寫度,回歸内容越多腳本維護成本越高,一般應用接口不建議全功能覆寫(畢竟接口有變化會做詳細測試,如果沒修改其它變更可能對其産生的影響一般不會影響其邏輯判斷)

3、接口腳本需要一定的自動化校驗能力,除請求http狀态的判斷外,還需要對核心内容的正常性做判斷(判斷内容可與資料庫内容比對等方式,不建議用寫死的内容)。

4、持續性能測試,還需要做好相關的監控、性能名額的分析自動化,減少人工操作。

繼續閱讀