接口測試這個詞語,相信大家都不陌生了吧。目前我個人的理解,接口測試應該屬于白盒測試的范疇,也是很多測試工程師很想從事和向往的一個測試手段。大家都覺得白盒測試深不可測,但實際上是怎么樣的呢。
接口測試的實施優先級
對于Web應用來說,接口測試就是對某一個接口進行測試代碼的編寫和執行。一般情況下,實施接口測試的優先級是:對暴露在外面的接口(該接口會給第三方調用)進行接口測試;內部的核心功能接口也會做接口測試;內部非核心功能接口的接口測試(很多時候就是單元測試)。當然這個實施的具體細節,還需要根據項目的情景和人員的能力來確定如何實施接口測試、在哪里做接口測試、為什么要做接口測試、做到什么程度等。
接口測試的實施條件
接下來說下,接口測試實施需要的一些條件。第一個就是測試人員的能力,代碼的熟悉能力、接口測試框架的使用能力、接口測試環境的搭建能力、接口測試設計的能力、基礎代碼的編寫能力、基礎Debug能力等。第二個就是接口測試框架,框架是否定制化一些功能(比如自動加載java bean、方便初始化數據、方便校驗數據庫數據等)。第三個就是測試團隊和測試流程的支持,測試團隊需要支持測試人員對核心接口進行接口測試(包括時間上、精力上、技術上等支持);測試流程上需要保證接口測試的效率和項目接入性(在項目當中實施接口測試,充分考慮開發團隊和功能測試團隊合作等)。
接口測試的實例
接下來會通過一個案例來說明接口測試的一些基本考慮點,這里不涉及到詳細的接口測試流程和注意點,只會把接口測試的一些想象展示給大家。
public interface IdleItemService { Result<ExtraItem> publish(ExtraItem extraItem); /** * taobao.idlesell.item.update * 編輯閑置寶貝 */ Result<ExtraItem> update(ExtraItem extraItem); /** * taobao.idlesell.item.get * 查詢閑置寶貝 */ Result<ExtraItem> query(Long itemId,Boolean hasDesc,Boolean hasPic,String appKey); } |
上面的代碼是淘寶的提供出去的某個Top接口代碼,測試人員需要針對這個Top接口做最嚴格的接口測試,那他該怎么做呢,需要持續關注什么呢。
接口測試之前,需要充分的了解接口的實現功能的業務邏輯、接口參數、接口返回值。功能業務邏輯:外部可以通過該接口發布一個閑置二手的寶貝,具體細節不做說明。
接口參數: 一個寶貝的所有信息參數。見圖:
接口返回值:Result,其中包含一些errorcode等基本屬性。
接口的測試設計主要關注點
2.每個入參的每個錯誤類型都要準備一個異常用例。如必須參數缺省、參數類型錯誤、參數 范圍錯誤、參數超過最大位數、參數沒有達到最小指定位數、參數的無效值(有效狀態外)、參數的小數點超過規定長度、參數含有非法字、參數含有違禁字、參數的關聯性檢查(如所在省、市,所在地不匹配)等等。
3.對于正常系的用例,要把所有入參的各種合法的有效值都執行到。所有入參的最大位可以用一個測試用例執行掉。所有可缺省的參數不要(只輸入必須參數)的測試用例也要做一個。
4.對于搜索接口,應該把每個參數單獨作為搜索條件來確認搜索結果是否正確,然后再確認多條件輸入后的結果。
如下是部分參數的接口測試設計的截圖:
接口的測試代碼的編寫
大家應該發現了對于所有的參數,我們都需要校驗一下參數的基本特征,如前面講到的異常用例一樣。那么接口測試代碼又是什么樣的呢。
step1: 編寫測試基類(加載資源、初始化環境)(可選)。
step2: 編寫測試類。
step3: 在該測試類中編寫測試方法。
step4: 在測試方法中調用被測方法。
step5: 驗證預期結果與返回的結果是否一致。
step6: 執行測試 查看測試結果。
原文轉自:http://www.uml.org.cn/Test/201303123.asp