您好,登錄后才能下訂單哦!
一、背景和目的:
由于目前App前端業務測試很少關注后端網絡接口的異常情況,客戶端QA在項目測試時往往局限于關注測試功能,導致測試粒度較粗。即使按照CheckList過功能點,客戶端QA對后端接口的覆蓋情況也很難做到明確把握。
Fiddler是我們在客戶端測試時使用比較普遍的工具,常用于HTTP抓包、構造請求等等。原生的fiddler插件,缺乏對包大小,網絡請求時長、接口訪問頻次、接口覆蓋度等維度進行網絡請求的分析,同時提供網速控制的功能,下文介紹開發定制fiddler插件輔助app業務測試。
二、工具實現原理
首先了解一下fiddler的實現http代理請求的原理,方便我們深入的研究。Fiddler實現的原理是截獲了windows的winnet接口,在轉發服務器請求和響應的階段,可以hook住傳遞的參數,達到監控甚至修改網絡數據包的能力。如下圖所示,fiddler提供了4個接口,AutotamperRequestBefore,AutotamperRequestAfter,AutotamperResponseBefore,AutotamperResponseAfter。
我們在自己插件中實現這四個方法即可滿足我們自己的測試需求。在我遇到的項目中,我們實現了以下功能。
1、 發現網絡請求包的異常問題,例如,接口數據包大小過大,幫助分析接口是否存在冗余數據,從而節省用戶使用app的網絡流量負擔。
2、 發現網絡請求時間超時異常問題,例如,發現接口訪問時間過大,幫助發現后端潛在的邏輯錯誤。
3、 發現網絡請求訪問頻次異常問題,例如,app頁面緩存機制是否正常;接口是否因為發送時機不對導致頻繁發送。
4、業務測試可以分析接口覆蓋度,指導后續測試重點,使測試點更完整,避免漏測。
5、修改請求響應延遲,模擬各種網速,如2,3g網絡,斷網等情況,方便測試各種網絡異常case。
程序示例如下:
三、工具的主要功能:
1. 包大小分析:
Packet Size tab 顯示根據host.ini中配置的host過濾結果,按照請求的包的大小進行降序排列;用于分析異常的網絡請求數據包。
Reset按鈕前面的兩個數字分別對應測試過程中,請求的總流量和總耗時;
兩個窗口分別實時顯示請求的包大小和請求的次數,并給出峰值;
2. 請求時長分析:
過濾之后的URL按照請求耗時的降序排列,請求耗時為ClientBeginRequest與ClientDoneResponse之間的時間差值。根據網絡請求耗時,判斷異常請求。
3. 請求次數:
請求次數和測試執行過程對比,分析是否存在重復多次發送某請求。
4. 接口覆蓋情況監控:
Coverage tab下需要監控的接口通過coverurl.ini配置,在測試過程中,覆蓋到的接口,對應的小方塊顯示填充,否則不填充。對監控接口的覆蓋率進行實時統計,結果如餅圖所示:
通過接口覆蓋情況監控,可以知道客戶端QA在測試過程中對后端接口,尤其是新增接口覆蓋情況,對測試覆蓋的全面情況以及CheckList的設計提供知道;客戶端測試應重視對新增接口的覆蓋。
5. 網速控制
通過拖動TrackBar上的滑塊設置網速的值;可以用來模擬不同的網絡環境:
例如,無限制下的WiFi環境;3G網絡(40-500kb/s);2G網絡(8kb/s);斷網。
無限制:
斷網:
利用網絡模擬,結合以上1-4點功能,方便測試各種網絡異常case。
四、還可以做的更多
上面已經實現的功能主要集中在接口數據的監控上,其實,我們不是不可以更進一步,實現接口數據的修改,這也就意味著我們實現了一個通用的移動app 測試mock平臺了!
參考文獻:
1.Fiddler開發官方doc文檔:http://docs.telerik.com/fiddler/Extend-Fiddler/ExtendWithDotNet
更多干貨分享請關注”百度MTC學院“http://mtc.baidu.com/academy/article
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。