1、背景和目的: 前端
因爲目前App前端業務測試不多關注後端網絡接口的異常狀況,客戶端QA在項目測試時每每侷限於關注測試功能,致使測試粒度較粗。即便按照CheckList過功能點,客戶端QA對後端接口的覆蓋狀況也很難作到明確把握。 windows
Fiddler是咱們在客戶端測試時使用比較廣泛的工具,經常使用於HTTP抓包、構造請求等等。原生的fiddler插件,缺少對包大小,網絡請求時長、接口訪問頻次、接口覆蓋度等維度進行網絡請求的分析,同時提供網速控制的功能,下文介紹開發定製fiddler插件輔助app業務測試。 後端
2、工具實現原理 緩存
首先了解一下fiddler的實現http代理請求的原理,方便咱們深刻的研究。Fiddler實現的原理是截獲了windows的winnet接口,在轉發服務器請求和響應的階段,能夠hook住傳遞的參數,達到監控甚至修改網絡數據包的能力。以下圖所示,fiddler提供了4個接口,AutotamperRequestBefore,AutotamperRequestAfter,AutotamperResponseBefore,AutotamperResponseAfter。 服務器
咱們在本身插件中實現這四個方法便可知足咱們本身的測試需求。在我遇到的項目中,咱們實現瞭如下功能。 網絡
1、 發現網絡請求包的異常問題,例如,接口數據包大小過大,幫助分析接口是否存在冗餘數據,從而節省用戶使用app的網絡流量負擔。 app
2、 發現網絡請求時間超時異常問題,例如,發現接口訪問時間過大,幫助發現後端潛在的邏輯錯誤。 工具
3、 發現網絡請求訪問頻次異常問題,例如,app頁面緩存機制是否正常;接口是否由於發送時機不對致使頻繁發送。 測試
4、業務測試能夠分析接口覆蓋度,指導後續測試重點,使測試點更完整,避免漏測。 url
5、修改請求響應延遲,模擬各類網速,如2,3g網絡,斷網等狀況,方便測試各類網絡異常case。
程序示例以下:
3、工具的主要功能:
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。
4、還能夠作的更多
上面已經實現的功能主要集中在接口數據的監控上,其實,咱們不是不能夠更進一步,實現接口數據的修改,這也就意味着咱們實現了一個通用的移動app 測試mock平臺了!
參考文獻:
1.Fiddler開發官方doc文檔:http://docs.telerik.com/fiddler/Extend-Fiddler/ExtendWithDotNet
更多幹貨分享請關注「百度MTC學院」http://mtc.baidu.com/academy/article