面試被問到:fiddler 在工作中有哪些應(yīng)用?怎么破?

作為軟件測試工程師,如果你的簡歷中有涉及到 fiddler 這款工具,出去面試可能會(huì)被問到:fiddler 在工作中有哪些應(yīng)用?
我們都知道 fiddler 是一款非常優(yōu)秀的調(diào)試代理工具,用于記錄客戶端和服務(wù)端之間的所有的通信數(shù)據(jù)。軟件測試工作中,主要可以幫助我們來完成以下事情:
定位前后端 bug
篡改數(shù)據(jù)
弱網(wǎng)模擬測試
獲取前端性能數(shù)據(jù)
1、定位前后端 bug

當(dāng)我們操作頁面端發(fā)現(xiàn)一個(gè) bug 時(shí),對業(yè)務(wù)充分熟悉且有足夠經(jīng)驗(yàn)的測試工程師可以直接判斷是否前后端 bug;但無經(jīng)驗(yàn)的不要慌,可通過 fiddler 抓取 request、response 數(shù)據(jù),分析定位前后端 bug。
Fiddler 怎么配置以及怎么抓取數(shù)據(jù),本文章省略,可自行百度解決。

a、查看請求的 http 狀態(tài)碼是否正確。例:若抓取到的請求返回的 http 狀態(tài)碼為 404,說明可能是前端 JS 提交了錯(cuò)誤的地址,也可能是后端服務(wù)器沒有對應(yīng)地址的服務(wù);若抓取到的請求返回的 http 狀態(tài)碼為 500,說明是后端服務(wù)器內(nèi)部錯(cuò)誤。
b、查看請求的 http 狀態(tài)碼 200 但界面提示報(bào)錯(cuò),則具體分析 request 及 response 信息,確認(rèn)是否前端請求傳參錯(cuò)誤,若前端對應(yīng)請求地址及傳參都正確,則確認(rèn)后端問題。
2、篡改數(shù)據(jù)
2.1 斷點(diǎn)篡改請求數(shù)據(jù)
當(dāng)我們在測試的時(shí)候,僅僅通過頁面來發(fā)起請求進(jìn)行測試,會(huì)因?yàn)榍岸说囊恍┹斎胂拗?,?dǎo)致測試不能覆蓋所有場景。比如微信發(fā)送紅包金額前端限制 0.01-200 元,那我們測試的時(shí)候,通過抓包,需要修改請求紅包金額超過 200,驗(yàn)證服務(wù)器端是否正常處理超出數(shù)據(jù)。
還比如我們很多項(xiàng)目都會(huì)涉及到支付功能,假設(shè)購買 1 件商品,在提交訂單后、跳轉(zhuǎn)到支付窗口之前,通過抓包能抓取到支付金額及數(shù)量的請求信息,并去篡改了支付金額或數(shù)量,然后以超低價(jià)格購買到多數(shù)量的高額商品。那就是嚴(yán)重 bug 了!
以上這些可以通過 fiddler 打斷點(diǎn),來修改請求數(shù)據(jù)。
設(shè)置 Rules—>Automatic Breakpoints—>Before Requests
然后在界面點(diǎn)擊提交訂單,看到請求前有紅色禁行標(biāo)識(shí),說明設(shè)置了斷點(diǎn),請求被攔截了;
點(diǎn)擊該請求,在右側(cè) WebForms 視圖下會(huì)看到請求發(fā)送的具體內(nèi)容,修改金額后,再點(diǎn)擊 Run to Completion 按鈕。這樣就完成了數(shù)據(jù)的篡改。

那么在涉及到支付等重要場景時(shí)可利用這種方法來完成服務(wù)器安全性校驗(yàn)。一般我們
可以要求開發(fā)在數(shù)據(jù)包中不要加入價(jià)格等敏感數(shù)據(jù)。
2.2 斷點(diǎn)篡改響應(yīng)數(shù)據(jù)
如果系統(tǒng)調(diào)用到第三方接口,根據(jù)第三方接口的不同返回結(jié)果進(jìn)行不同的邏輯處理,當(dāng)提供方不能配合我們來測試時(shí);或者我們要從數(shù)據(jù)庫獲取不同的數(shù)據(jù)在前端做展示;就都可以利用 fiddler 來篡改接口返回的數(shù)據(jù),模擬我們需要的測試場景。
設(shè)置 Rules—>Automatic Breakpoints—>After Responses
頁面發(fā)起請求,看見對應(yīng)的請求圖標(biāo)有紅色禁行標(biāo)識(shí),表示響應(yīng)過程已設(shè)置斷點(diǎn)
修改響應(yīng)數(shù)據(jù),點(diǎn)擊 Run to Completion 按鈕。例如圖示,修改省份選擇框的省份過長,查看前端展示。

斷點(diǎn)設(shè)置除了以上這種方法外,補(bǔ)充另外 2 種斷點(diǎn)設(shè)置方式:
1)輸入命令進(jìn)行斷點(diǎn)

bpu :bpurl 的縮寫。在命令輸入框內(nèi)輸入:bpu 請求的 URL, 然后回車 , 則符合 url 條件的請求就會(huì)被中斷。
bpm : 相當(dāng)于 bpmethod。在命令輸入框輸入:bpm 請求方法,然后回車,則符合請求方法的請求就會(huì)被中斷 。
bps : bpstatus 的縮寫。在命令輸入框輸入:bps 響應(yīng)狀態(tài)碼,然后回車,則符合狀態(tài)碼條件的請求就會(huì)被中斷 。
bpafter :中斷修改響應(yīng)數(shù)據(jù) 。在命令輸入框輸入:bpafter url,然后回車,符合條件的 url 就會(huì)被中斷。
2)點(diǎn)擊左下角的一個(gè)小區(qū)域設(shè)置斷點(diǎn) 。點(diǎn)一下是設(shè)置請求的斷點(diǎn),點(diǎn)兩下是設(shè)置響應(yīng)的斷點(diǎn)。

2.3 通過AutoResponder修改響應(yīng)
這是另外一種斷點(diǎn)之外的修改響應(yīng)數(shù)據(jù)的方式。在本地文件中配置你想要的的返回結(jié)果,請求特定接口時(shí)返回你自己配置的資源。例如下面網(wǎng)頁請求的 logo 圖片,篡改返回的這個(gè) logo 文件為本地指定的一個(gè)文件。

步驟如下:

重新再請求頁面,logo 已顯示指定到的文件。

3、弱網(wǎng)模擬測試
Fiddler 中 Rules—>Cutomize Rules 打開 CustomRules.js 文檔,搜索關(guān)鍵字 m_SimulateModem,找到如下文檔位置

oSession[“request-trickle-delay”] = “300”; 看注釋:上傳 1KB 需要 300ms;轉(zhuǎn)化上傳速度:1Kb/0.3s = 3.3(KB/s)。oSession[“response-trickle-delay”]同理。
弱網(wǎng)場景例如 2G 網(wǎng)絡(luò),2G 上行/下行速率約為 2.7、9.6kbps。每 1KB 數(shù)據(jù),uploaded 約 2962 ms,downloaded 約 833 ms。則按如下設(shè)置并保存,模擬 2G 弱網(wǎng)情況。

Rules->Performance-> 點(diǎn)擊 Simulate Modem Speeds,開啟弱網(wǎng)模擬。對比弱網(wǎng)設(shè)置前后,查看統(tǒng)計(jì)數(shù)據(jù),可以看到弱網(wǎng)設(shè)置后,訪問網(wǎng)站慢了很多。


另:若想取消弱網(wǎng)設(shè)置,選中 Rules->Performance-> 點(diǎn)擊 Simulate Modem Speeds,取消勾選即可。
4、獲取前端性能數(shù)據(jù)
批量選擇第一個(gè)請求和最后一個(gè)請求,使用 Statistics 頁簽,可獲得整個(gè)頁面加載所消耗的總體時(shí)間。從餅狀圖中可以清楚哪些請求耗時(shí)最多。

通過 Timeline 分析資源加載時(shí)序圖,可以看到頁面上各個(gè)資源加載過程所需要的時(shí)間和先后順序,有利于找出加載過程中比較耗時(shí)的文件資源。

以上可以幫助我們清楚耗時(shí)比較長的請求及文件資源,過長的可以提交給前端開發(fā),針對性地進(jìn)行性能優(yōu)化。
好了,總結(jié)到這,有用趕緊收藏,下次面試再也不怕了!
本文作者為檸檬班土豆老師,轉(zhuǎn)載請注明出處!