在以前的博文中,時常有分享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技巧,就分享到這了,個人覺得在實際測試過程中,這三個技巧還是有幫助的。