1. 程式人生 > >不可不知的輔助測試的Fiddler小技巧

不可不知的輔助測試的Fiddler小技巧

在以前的博文中,時常有分享Fiddler的一些使用技巧,今天再貼下。

Fiddler抓包工具使用詳解

利用Fiddler攔截介面請求並篡改資料

Fiddler使用過程中容易忽略的小技巧

Mock測試,結合Fiddler輕鬆搞定不同場景

以上這些,就是以前的一些實踐總結。今天,再來分享一個不可不知的小技巧,實際工作當中,是可以輔助自己完成測試的。

模擬弱網

相信大家在進行測試過程中,都會關注到弱網測試。web端是可以通過瀏覽器的開發者工具中的Network設定網路資料,app端也可以通過切換網路的形式來進行測試。

其實,Fiddler也是支援模擬弱網測試的。通過Fiddler設定後,web和app都可以一併模式。

固定延遲設定方式

啟動Fiddler工具>找到FiddlerScript頁籤>按m_SimulateModem搜尋。

找到如下所示內容【限速函式】,修改引數即可:

修改程式碼中的引數,將300修改為3000,也就是3S,如下:

if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "3000"; 
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150"; 
        }  

此時,儲存修改後的Script程式碼即可,如下所示:

資料儲存後,如何使其生效呢?按如下操作即可。

在Fiddler中,按如下路徑配置即可:Rules>Performance>Simulate Modem Speeds。

具體操作,如下圖所示:

此時,再重新整理頁面,我們可以從Fiddler面板中的Time引數看出,每個介面的響應時間都延時3s,如下所示:

網路延遲時間如何計算?

比如你要模擬上傳速度100KBps的網路,那上傳延遲就是1KB/100KBps=0.01s=10ms,就改成10。

隨機延遲設定方式

我們從上述操作看出,配置限速引數後,每個介面都是固定的延遲時間。但實際使用場景中,這種情況是比較少的。基本上都是有時快,有時慢的情況。那是否可以設定隨機延遲呢?答案肯定是可以的。我們繼續來看。

我們依然在FiddlerScript頁籤中操作,加入如下程式碼,程式碼如下所示:

static function randInt(min, max) {
  return Math.round(Math.random()*(max-min)+min);
  }
  if (m_SimulateModem) {
  // Delay sends by 300ms per KB uploaded.
  oSession["request-trickle-delay"] = ""+randInt(1,2000);
  // Delay receives by 150ms per KB downloaded.
  oSession["response-trickle-delay"] = ""+randInt(1,2000);
  }  

儲存修改後的程式碼,並重新啟用配置即可。

模擬發包

測試過程中,想模擬一個介面請求,一般是通過Postman、Jmeter、soupUI,常用的是Postman。我們Fiddler能不能模擬介面請求呢?這個是可以的,我們來看。

我們切換到Composer頁籤,如下所示:

從圖中可知,是可以模擬很多種請求方式的。我們就來實際操作一番。

POST請求

我們先來操作個POST請求,選擇POST請求方式,填寫介面與引數如下:

介面與引數填寫正確後,點選右上角的Execute按鈕即可請求介面。我們來看下請求資料:

我們先來看請求頭,介面請求頭中的User-Agent引數,如下所示:

使用者代理來源是Fiddler,就是剛才我們通過Fiddler工具請求的資料。

我們再來看響應,介面請求成功,正常響應並獲取到token資料,如下所示:

GET請求

剛才操作的是POST請求,現在來看個GET請求。操作方式都一樣,將請求方式切換成GET,填寫介面與引數,並點選Execute按鈕,配置如下所示:

我們依然來看介面資料,先看請求頭引數:

 

User-Agent引數依然是Fiddler,說明是從Fiddler工具中發出的請求。

再來看響應資料,如下所示:

以上就是通過Fiddler模擬請求POST和GET請求了,其他方式類似。

模擬併發

在我們測試中,也會關注到,一個介面同時請求多次,會不會產生錯誤,比如:重複資料。那這次就需要考慮併發情況了。

Fiddler工具依然還是支援該操作,具體如下:

我們先選中已抓取的任一介面,點選右鍵,並選擇Replay>Reissue Sequentially,也可以快捷鍵【Shift + R】如下所示:

點選後,會彈出如下彈框,設定請求次數,如下所示:

預設是5,那我們改成3,並點選OK按鈕,來看介面,如下所示:

我們可以看到,同時請求了3次,簡單模擬了併發測試,但實際是不及Jmeter工具的,畢竟這個也只是模擬,而Jmeter要專業許多。

瞭解完了併發使用,但還有些其他引數沒有介紹,我們來了解下其他引數,說不準以後也有用途。如下所示:

  • Reissue Requests:重發選中的請求
  • Reissue Unconditinally:無條件重發選中的請求
  • Reissue and eidt:重發並編輯,會開啟一個加了斷點的請求,可以進行請求和響應資料的修改
  • Reissue and verify:重發並驗證,重新發送請求,並驗證其請求結果,會自動加標識(背景顏色)
  • Reissue Sequentially:重發序列,開啟一個數量設定介面,標識需要重發多少次請求
  • Reissue from Composer:重發並開啟composer介面,可以編輯或傳送
  • Revisit in IE:在IE上發起這個請求

問題總結

在使用Fiddler模擬請求發包時,有時會操作失敗,比如通過百度查詢資料,GET介面,有時Caching引數不帶private引數就響應了302,正常帶該引數,是可以響應成功的,如下所示:

不知為何會出現,不帶該引數的情況。有遇到的博友,望提點一二。

 

好了,今天的這三個Fiddler技巧,就分享到這了,個人覺得在實際測試過程中,這三個技巧還是有幫助