1. 程式人生 > >基於fiddler外掛開發的移動測試網路監控與分析

基於fiddler外掛開發的移動測試網路監控與分析

【背景介紹】

由於目前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);斷網。
    無限制:這裡寫圖片描述
    斷網:這裡寫圖片描述

三、還可以做的更多

上面已經實現的功能主要集中在介面資料的監控上,其實,我們不是不可以更進一步,實現介面資料的修改,這也就意味著我們實現了一個通用的移動app 測試mock平臺了!