接口測試不像UI測試有界面,比較直觀,其實核心的測試思想都是一致的,主要驗證接口是否通,接口之間的傳遞是否正常,把正常的情況考慮進去,再考慮一些異常情況。一般的接口測試可以用瀏覽器插件,如postman、restclient等,接口較多的話也可以用loadrunner、jmeter、soapui等工具,目前業內用的比較多的還是自己封裝一套測試框架,進行自動化測試。
近日整理了一下接口的測試框架,雖然比較low,但也算自己的成果和總結,目前這套框架的主要工作量是在excel中寫用例上,即把ip、端口、請求方式,參數及響應的參數值等在excel中配置好后,由用例層去調起這個sheet頁,然后交給數據驅動,數據驅動根據配置的優先級去讀取測試數據,把符合用例優先級的測試數據提供給測試類。測試類把測試數據再提供給執行器,由執行器去請求,並把請求結果存到對象中。供后者調用使用。
接口測試中比較麻煩的還是對返回結果的一個斷言,有的接口返回結果簡單,有的接口返回結果比較復雜,json中有數組,且字段多。具體我們以什么為預期結果,還是得實際情況實際考慮,可以從數據庫中取值,也可以設定好場景,存為國定值。
下圖是我簡單畫了一個流程圖,不對之處還望讀者指出。

拿其中的結果存儲舉例。excel的樣式

1.要自動存儲到excel中的話,需要知道存儲的目標位置,這里定義了一個枚舉,是excel中的表頭。
package com.core.ienum; /** * @author QiaoJiafei * @version 創建時間:2016年3月4日 下午3:41:00 * 類說明 */ public enum ExcelHeaders { StatusCode(){ @Override public String toString() { return "StatusCode"; } }, ResponseJson(){ @Override public String toString() { return "ResponseJson"; } }, ResultCode(){ @Override public String toString() { return "ResultCode"; } }, Result(){ @Override public String toString() { return "Result"; } }, RUN(){ @Override public String toString() { return "RUN"; } }; ExcelHeaders() { } }
2、再定義一個方法,是返回這個表頭的所在列數
private int getheaderColNum(ExcelHeaders headers) { int colNum = 0; int startCol = 3; int paramcount = Integer.parseInt(OptionFile.getExcel("./excel/testresultnew.xls", sheet, 1, 4)); switch (headers) { case StatusCode: colNum = startCol+paramcount+1; break; case ResponseJson: colNum = startCol+paramcount+2; break; case ResultCode: colNum = startCol+paramcount+3; break; case Result: colNum = startCol+paramcount+5; break; case RUN: colNum = startCol+paramcount+6; break; default: break; } return colNum; }
3、這樣就有了excel的列數,行數是測試驅動類提供的,sheet頁是測試驅動通過java反射獲取到的,這樣有了excel的sheet、行數、列數,就可以自動的存貯值了。
4、json處理的話還是推薦用jsonpath,前面的文章已經講過了。
暫時先介紹到這吧。
