Fiddler的安裝與使用(進階篇)
測試過程中的一些常見場景。
一、限速
背景:進行日常測試時通常網路情況都比較好(內網),所以有時會忽略在低速或網路狀況不好的情況下系統頁面的表現
手機可以用2G、3G、4G,也是一種方式,但這都是網路模式,而Fiddler可以設定上傳和下載的延時時間,這種控制非常靈活,可以幫助我們模擬低速網路情況下頁面、APP的顯示與互動情況,比如響應時間過長時是否有彈出網路不好的提示、頁面crash以及顯示錯亂、session是否一致等。
1.設定限速時間
(1)開啟 【Rules---Customer Rules】,Ctrl+F搜尋(m_SimulateModem),預設傳送資料是300毫秒,接收資料是150毫秒,根據實際情況限速後進行儲存(Ctrl+S)
(2)啟用限速:Rules---Performance---Simulate Modem Speeds
演示:對於傳送資料(uploaded)每KB延遲30000毫秒,接受資料(downloaded)每KB延遲30000毫秒。
開啟瀏覽器,訪問百度,搜尋python,頁面載入非常慢,等全部載入完成時可以到Statistics檢視時間。
注意:測試結束後記得取消限速
二、篡改資料
篡改分兩種:
1.一種是修改請求資料,檢查介面的處理情況,這種適用於不方便直接調介面,其不關心頁面,只看介面處理是否正常,返回的資料對不對。
比如 Harbor House官網註冊頁面 使用者名稱限制的字元長度是2-20 ,把字元加到21以上,看效果,根據前端頁面的預期結果是提示使用者名稱超長了,而實際結果是註冊成功了。
於是去資料庫查了下表結構,發現使用者名稱欄位的長度是50,所以重新註冊下,字元超過50,看介面返回的資訊,提示“資訊輸入有誤”,OK,測試通過,說明介面在這塊做了保護。
用剛註冊成功的使用者名稱進行登入,提示“賬號長度只能在2-20位字元之間”,登入失敗
(引申:這些不會生效的資料,也會被稱為髒資料,不改掉會影響到後續效能)
在這裡做個假設:
仍然是上面的例子,頁面上註冊時提示沒成功,但實際資料庫中已經儲存資料了,這樣就算bug了,前端不應該在使用者捕獲到超過長度的字元時還去呼叫介面
理論上前後端對於輸入引數的限制應該保持一致,但實際上資料庫欄位長度是要比前兩者多的,因為要留有富裕的空間作為優化
再比如註冊頁面對使用者郵箱有進行驗證,Fiddler中修改後檢視服務端是否有驗證,有興趣的朋友可以自己去嘗試下
修改頁面請求值
構造請求資料,突破錶單的限制,可以隨意提交資料,避免頁面JS和表單限制,從而影響相關除錯(繞過前端)
1)設定斷點:Fiddler選單欄->Rules->Automatic Breakpoints->選擇Before Request,也就是傳送請求之後,在Fiddler代理中轉之前是可以修改請求資料的。
2)觀察inspector,頁面內容出現變化後修改Body的Value值,然後點選 “Run To Complete“,回到瀏覽器檢視響應結果
訪問百度時,設定一些錯誤的引數,點選“Run to Completion”會發現無法訪問百度首頁了。
2.另一種是修改返回包的資料,關心的是頁面處理情況
比如理財app上顯示金額,那麼我們在測試時肯定要考慮金額的長度,此時可以通過篡改資料來看服務端返回不同的結果來看頁面顯示是否正常
修改頁面響應結果(攔截響應資料,修改響應實體)
1)設定斷點:
Fiddler選單欄->Rules->Automatic Breakpoints->選擇After Responses,
也就是伺服器響應之後,但是在Fiddler將響應中轉給客戶端之前是可以修改響應的結果
2)觀察inspector,頁面內容出現變化(說明攔截成功)
3)切換到TextView,修改message,然後點選 “Run To Complete“,回到瀏覽器檢視響應結果
PS:可以試著將message資訊改的很長,頁面變形了,那就能說明問題了。
三、利用AutoResponder替換伺服器的返回資料(即原資源)
AutoResponder:重定向功能,將HTTP請求重定向到本地的檔案,進行除錯。
1.比如 百度官網 logo,使用者提出來要更新下,這時可以通過這功能實現,也就是不需要修改程式碼,就能預覽換個logo圖片檔案的效果。
在右上角選擇AutoResponder頁籤,勾選Enable rules、Unmatched requests passthrough 兩個選項,點選Add rule 按鈕,在下方填寫替換的規則,編輯好之後,點選儲存
第一行填寫地址完全匹配,也可以寫正則表示式進行模糊匹配,也可以從左側把請求資料拖過來
第二行填寫要替換的內容,下拉框有很多選項可以選擇, 比如201、302、404,502等status code
設定好替換圖片後點擊重新訪問百度,請求回來的資料已經是替換後的內容了
注意:訪問地址不一定為百度,而是第一行中填寫的地址。
2.修改Response資料時超時
設定斷點【After Response】之後,修改響應資料,來實現修改Response的內容,
但是這樣容易造成請求超時
超時:客戶端傳送一個請求出去,如果在指定的時間內,沒有返回,那麼就不會再來處理這個請求了
假設修改內容的操作大於設定的超時時間,就算之後將斷點放行,請求返回200,這個時候客戶端也不會做任何處理,可以理解為修改的內容沒有產生效果。
此時就可以利用AutoResponder的功能了,直接將修改之後的內容放到檔案
步驟:
1)檢視該結果返回的資料內容及格式
選擇請求,右擊,Save -> Response -> Response Body ,儲存響應體,可以是文字格式
2)修改響應體的資料,如圖修改title,重新發送請求,發現title和響應頭部資訊都已經更新
注意:強制重新整理Ctrl+F5,獲取最新資源
四、傳送自定義請求(request-builder)
Composer:一個小型、簡易的介面測試工具,可以填介面地址,設定請求引數、填寫響應結果,也可以修改相應的頭資訊(如新增常用的accept,host,referrer,cookie,cache-control等頭部)後execute。
也可以選擇POST請求,更改請求體中的內容,注意保留請求體的格式。
注意:如果是亂碼,請求header那設定 Content-Type:charset=utf-8
五、APP端抓包
1.前置條件
1)手機和電腦在同一區域網(PC端可以設定wifi熱點);
2)完成Fiddler的配置(允許遠端連線),埠預設8888,然後重啟Fiddler使其生效:
Tools——>Options——>Connections,勾選Allow remote computers to connect
2.接下來在CMD命令視窗,檢視Fiddler程序是否能正常監聽8888埠,如果服務沒有正常開啟,可以嘗試使用其他埠,埠修改的位置,如上圖位置
以下兩種方法都可以:
1)執行 netstat -anop tcp
2)執行 netstat -ano|findstr “8888”
注意:0.0.0.0:8888,4個0代表所有的ip都可以連線進來這個埠
3.檢視本機的IP
1)命令列中輸入:ipconfig
2)直接在Fiddler中檢視
點選工具欄最末尾的向下的箭頭,在彈出的下拉框中可以看到有個電腦圖示以及Online的字樣,將滑鼠放在上面就可以看到。
4.手機配置代理
1)設定——>無線區域網——>選擇wifi——>設定HTTP代理(輸入IP,埠是Fiddler的代理埠8888)
2)開啟手機瀏覽器Safiri下載證書 就可以抓取https的請求了
輸入:http://本機的IP:8888,下載FiddlerRoot certificate
安裝並進行驗證
5.操作app進行抓包
正常操作app即可,app的傳送的請求以及收到的請求都會被Fiddler抓到。
如果只想看移動端資料,也很簡單,只需關閉pc端的代理就可以了(關閉Fiddler的“Capuring”開關)
注意:抓包之後記得關閉手機代理,以免手機上不了