Xebium詳解08-API測試

說到API測試,很多人會問,為什麼要自己coding,集成進Xebium,用Postman或者其他HTTP介面測試的工具不就可以了嗎?老實說,我之前也用這些來做測試,但隨著項目發展,你要維護的內容越來越多,尤其不便的是,一套隨時可用的數據和判斷依據的變動,很讓人抓狂。為什麼不和db和界面上抓取的內容來當作API介面的輸入輸出來動態引入呢?而且一套系統進行管理也更讓人理解,更方便易用,由於是web界面,測試做完腳本,程序員在開發期也可以直接當作調試使用,如果是了解腳本的PM,自己可以先寫輸入輸出,敏捷的目標不就可以更進一步嗎?

說做就做,同樣的利用SLIM的特點,只要自己寫相關的測試中間件的類,實現http或者https發送請求,構造http頭,cookie部分和body,返回的response利用JsonPath或者XPath來解析判斷返回數據的內容或者順序結構,這樣就能把API測試集成進來。

從API調用的知識點來說,自然要熟悉HTTP請求的相關知識,一般來說網路上的請求都是通過TCP或者UDP發送,商用的web都通過http/https協議來發送的,遊戲很多用UDP協議發送,這些知識留待大家自己摸索。

我們直接用代碼來說話:

public class HttpUtil {

public HttpUtil(String method, String url, Map headers) {} //構造http,method=GET||POST (其他像PUT或者DELETE幾乎不用)

public void setHttpHeaders(Map headers) {} //如果構造沒有傳值的話,也可以在之後傳,map的key-value同http的頭定義(Content-Type必須要有)

public void setHttpCookies(Map cookies) {} //其實這段也可以放入http head,如果要區分也可以單獨傳入

public void setHttpBody(String body) {} //根據頭中定義的contenty-type來傳入body數據發送到後端

public int excute() throws Exception {} //http請求發送,返回的是狀態碼,如200,404等

public String getResponseContent() {} //返回response內容

public String getCookieValueByKey(String key) {} //根據key返回cookie中的value

public String getHeadValueByKey(String key) {} //根據key返回head中的value

public String getJpathValues(String jpath) {} //根據輸入的1或多個JsonPath(,分隔)來返回具體值

public int getCountInJSON(String jpath) {} //JsonPath的length()函數返回list個數

public String getXpathValues(String xpath) {} //根據輸入的1或多個XPath(,分隔)來返回具體值

}

具體的代碼實現可以直接看代碼,Xebium中直接調用如上方法,設置參數或者返回數據,來判斷內容的正確性。具體例子如下(點導航欄Test可以執行用例):

http介面調用腳本

保存後,顯示為:

上述用例中,note一行執行時會忽略,相當於注釋行。

依然把源碼貼出,大家可以參考,如果需要支持更多的HTTP Method或者需要實現什麼特定的功能,可以直接修改實現:

https://pan.baidu.com/s/1WX6ESXLKmvruOZYvgH_GSA?

pan.baidu.com


照這個測試集成的思路,會發現,任何的測試工作只要可以用代碼來實現調用的其實都可以集成進Xebium,一個統一的測試環境不僅使流程變得更為規範,同時也讓腳本和數據的維護變得容易,也節約大家的時間(有些公司,本身的測試系統一套一套的,如果是新人摸索這些系統並且日常工作中進行切換,那是相當的耗時耗力)。

API介面的應用非常廣泛,如果你用RabbitMQ,Kafka等,甚至於平時的網頁,只要是依賴網路的HTTP或者HTTPS協議,都可以適用,但解析的方法多種多樣,不局限於這個,大家可以用正則表達式判斷都可以。

另外,大家如果用的不順手,自己開發自己的套件,再做一些小工具做解析,轉碼等等的事,讓事情更簡單,使用更方便,這才是測試開發更需要急迫去做的事。


推薦閱讀:

15個常見正則表達式
HTTP協議中的COOKIE機制簡單理解
一道可以判別測試面霸的用例設計筆試題
站在新手的角度:淺談軟體測試
工具應用:Robot Framework->實現數據驅動測試

TAG:自動化測試 | 軟體測試 | 軟體測試和開發 |