8. 利用Xebium進行API測試

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

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

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

我們直接用代碼來說話:


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,如果要區(qū)分也可以單獨傳入


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


? ??public int excute() throws Exception {} //http請求發(fā)送,返回的是狀態(tài)碼,如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可以執(zhí)行用例):

Xebium-API測試腳本
Xebium頁面的渲染表現效果

上述用例中,note一行執(zhí)行時會忽略,相當于注釋行。

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

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



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

API接口的應用非常廣泛,如果你用RabbitMQ,Kafka等,甚至于平時的網頁,只要是依賴網絡的HTTP或者HTTPS協(xié)議,都可以適用。

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容