當前位置:
首頁 > 知識 > FiddlerScript高級技巧——自定義Fiddler菜單

FiddlerScript高級技巧——自定義Fiddler菜單

Tips

書接上回, Fiddler插件在團隊內部試用後,效果很不錯,小夥伴們也提出了很多改進的建議;

最近一段Fiddler使用的仍較為頻繁,以前碰到一些特殊測試需求時,總是自己在FiddlerScript中改來改去,略有些不便;

於是花了點時間,

將一些常用的測試功能封裝成了菜單項,做到一鍵切換,方便之後的測試工作

以下各菜單,Android和IOS均可使用

一、 域名映射到測試環境

FiddlerScript高級技巧——自定義Fiddler菜單

  • 在測試過程中,經常需要修改或切換測試環境;以Android為例,需要再返回首頁切換環境
  • 使用線上Release包時,無法切換到灰度或測試環境;且目前Elong-Test-D只作IP映射,默認連接的是灰度1(埠默認為80)

//映射線上Host到灰度等測試環境; 在class中增加如下代碼
RulesString("HostMapping",true)
RulesStringValue(0,"灰度1", "10.35.45.84")
RulesStringValue(1,"灰度2", "10.35.45.84:8080")
RulesStringValue(2,"233.94", "192.168.233.94")
RulesStringValue(3,"14.206", "192.168.14.206")
RulesStringValue(4,"9.28", "192.168.9.28")
public static var m_host: String = null;

// 在 OnBeforeRequest 方法中增加如下

if(null != m_host && oSession.HostnameIs("mobile-api2011.elong.com") ){

oSession.host=m_host;

}

二、DeviceID切換,用於ABTest測試

FiddlerScript高級技巧——自定義Fiddler菜單

  • 公司內部的MVT測試(即ABTest)是由DeviceID來控制其命中策略的,修改相應的DeviceID即可命中不同的策略;
  • 另外,增加了一個新用戶的DeviceID;用於模擬新用戶
  • 由於MVT介面是在APP啟動時獲取的,因此需重啟app才能生效
  • 使用該方式,就不用在APP的Debug工具中輸入DeviceID了;同時適用於Android和IOS

代碼如下

//替換DeviceID,模擬MVT測試及新用戶
//在class中增加如下代碼

RulesString("ABTest測試",true)
RulesStringValue(0,"測試組", "12345678-1234-5678-9012-123456789010")
RulesStringValue(1,"對照組", "12345678-1234-5678-9012-123456789011")
RulesStringValue(2,"新用戶", "12345678-1234-5678-9012-122211133344")
public static var m_deviceid: String = null;

// 在 OnBeforeRequest 方法中增加如下
if(null != m_deviceid && oSession.oRequest.headers.Exists("DeviceId") &&oSession.oRequest.headers.Exists("ClientType") ){
oSession.oRequest["DeviceId"] = m_deviceid;
}

三、網速模擬測試

FiddlerScript高級技巧——自定義Fiddler菜單

  • 在測試過程中,經常需要模擬不同網路速度,尤其是低網速下的一些測試場景;
  • 通過測試代理網速傳輸延時來達到模擬網速的目的
  • 無需重啟app,即時生效

代碼如下 :


//通過設置網路延時,來模擬不同的網速場景
//在class中增加如下代碼 ;增加菜單項
RulesString("網速模擬",true)
RulesStringValue(0,"Simulate &Modem Speeds", "150")
RulesStringValue(1,"Simulate 2G(25KB)", "40")
RulesStringValue(2,"Simulate 3G(250KB)", "4")
public static var m_networkSpeed: String = null;

// 在 OnBeforeRequest 方法中增加如下
if(m_networkSpeed){
//網速模擬測試
oSession["request-trickle-delay"] = (parseInt(m_networkSpeed)*2).ToString;
oSession["response-trickle-delay"] = m_networkSpeed;
}

四、其它小功能

FiddlerScript高級技巧——自定義Fiddler菜單

  • 將所有HTTPS請求標識為紅色;
  • 在Fiddler中,只展示Mapi請求,忽略其它所有請求(潔癖患者推薦)

//在class中增加如下代碼
//增加菜單項
public static RulesOption("標記HTTPS", "Other")
var m_https: boolean = false;

//只展示來自APP的Mapi請求,其它類型全部過濾
public static RulesOption("Only Show Mapi", "Other")
var m_OnlyMapi: boolean = false;

// 在 OnBeforeRequest 方法中增加如下

//將域名中包含elong的HTTPS請求,標記為紅色
if ( m_https && oSession.isHTTPS && oSession.fullUrl.indexOf("elong")>0){
oSession["ui-color"] = "red";
}

//只展示APP過來的請求,非app請求直接過濾掉
if(m_OnlyMapi && !oSession.oRequest.headers.Exists("DeviceId") && !oSession.oRequest.headers.Exists("ClientType")){
oSession["ui-hide"] = "true";
}

五、主窗口中增加兩列:ClientIP和HTTP請求方式

FiddlerScript高級技巧——自定義Fiddler菜單

  • 顯示HTTP請求方法,如GET Or POST ;
  • 展示客戶端IP來源;

代碼如下

//在class中增加如下代碼即可

public static BindUIColumn("ClientIP", 120)
function FillClientIPColumn(oS: Session): String {
//oS.oResponse.headers.
return oS.clientIP.Split(":")[3];
}

public static BindUIColumn("Method", 60)
function FillMethodColumn(oS: Session): String {
return oS.RequestMethod;
}

參考資料

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

從零實現一個高性能網路爬蟲(二)應對反爬蟲之前端數據混淆
基於TypeScript的FineUIMvc組件式開發
Spark實戰之讀寫HBase
javaScript 設計模式系列之一:觀察者模式

TAG:科技優家 |