本文轉載於https://testerhome.com/topics/7159css
1、Fiddler
1.1.簡介
Fiddler是一款HTTP協議調試代理工具,它可以抓取記錄本機全部HTTP(S)請求,經過設置斷點等方法咱們能夠任意修改進出Fiddler的數據(cookie,html,js,css)完成測試。其原理以下圖,咱們僅須要修改Proxy中收到的數據就能夠模擬客戶端和服務器的交互,完成一系列Mock測試。html
關於Fiddler的安裝、配置方法KM上教程不少,這裏就再也不介紹。
1.2.抓包
若是須要抓取本機請求,只須要啓動程序並確保左下角爲Capturing狀態便可windows
若是須要抓取移動端請求,則須要在移動終端上指定代理服務器爲Fiddler所在主機IP(須要處於同一網絡),端口默認8888瀏覽器
Fiddler配置服務器
Android中網絡配置
若是須要抓取HTTPS請求,須要在Fiddler中勾選菜單欄Tools選項cookie
勾選以下選項:網絡
導出證書並安裝工具
移動終端能夠在瀏覽器中訪問127.0.0.1:8888來安裝證書。測試
若是不安裝證書的話只能抓取HTTP請求。ui
1.3.修改數據
Fiddler提供修改數據的方法有不少,經常使用的以下AutomaticBreakpoint命令行設置斷點
AutoResponsder
FiddlerScript (Customize Rules)
後面將在實例中爲你們介紹各個方法的具體使用方法。
2、測試實例
2.1. 需求介紹
如圖所示,App中的一個頁面向用戶展現天氣信息,具體規則以下:
拉取時機:進入頁面後刷新天氣信息數據源: Yahoo接口顯示數據:溫度信息、天氣icon、出行提示、風速、能見度……
從測試角度看這個功能的測試難度不大,問題是如何快速的將所有天氣信息匹配的icon和出行提示驗證完畢。
2.2.測試前分析
經過分析接口和客戶端代碼瞭解到,客戶端向服務器請求指定城市天氣信息,在服務器返回的天氣信息中各種天氣情況由code值表示(對應關係如圖1-1),數值對應的天氣圖標如圖1-2.
圖1-1
圖1-2所以在測試中咱們只須要讓客戶端接收到指定code值的天氣數據就能夠完成所有驗證,因此先用Fiddler抓包看下接口的返回數據。
方法如前文:首先PC上開啓Fiddler,其次在手機中配置代理,接下來咱們還要在手機瀏覽器中訪問127.0.0.1:8888來安裝證書(本例中接口爲HTTPS請求),最後客戶端觸發下請求就OK了。
能夠看出,紅框內圈出的這一部分就是咱們須要修改的數據啦。下面咱們就採用各類手段來Mock吧。
2.3.修改數據
AutomaticBreakpoint
若是在工做中須要對某一個請求進行操做,最簡單的方法莫過於使用Fiddler的這個功能
默認狀況下狀態爲Disabled,根據須要咱們能夠選擇開啓不一樣的斷點
Before Requests:向服務器發起請求前打中斷,用以修改請求內的數據。
After Responses: 在服務器返回數據後中斷,用以修改響應數據。
咱們的用例中須要修改客戶端收到的數據,所以勾選After Respnses便可。
注意:使用此功能須要正確使用Filter,不然Fiddler抓到的全部請求的會發生中斷。
全部的設置都打開後就能夠進行測試了,在Fiddler抓到返回數據後發生中斷時咱們手動將全部天氣信息(code值)更改成龍捲風
修改完畢後點擊Run to Completion 向客戶端返回數據。接下來就是檢查結果了。
結果符合預期,頁面中的全部天氣icon均爲龍捲風通標。
以上即是自動打斷點的使用方法,惟一不足的地方是當你須要查看其它請求的時候,已配置的Filter可能致使它們沒法展現在Fiddler中,不過不要緊,看看下面這種方法。
命令行設置斷點
爲了方便用戶使用,Fiddler還提供了一個命令行接口,經過一系列內置命令能夠大大的提升使用效率,這裏咱們只關注斷點相關的幾個經常使用命令,其餘的內容能夠經過help查詢。
本例中咱們關閉Filter並使用bpafter進行中斷
鍵入斷點後進入天氣也觸發天氣信息拉取
這樣一條熟悉的中斷請求就出如今咱們面前了,後面的操做跟以前同樣,修改數據返回便可。
注:清除斷點輸入斷點命令符不接參數便可,如:bpafter對於熟悉Fiddler的同窗這種方法更靈活,能夠快速的對須要監控的數據打點操做。
AutoResponsder
AutoResponsder這個功能基本原理就是替換線上文檔,例如一個js/css請求,咱們能夠設置規則將返回的文件替換成本地文件。使用方法也非常簡單,只須要在AutoResponder插件內添加規則便可。
在咱們這個測試用例中,只須要建立規則匹配指定字符串,而後將修改好的響應文件添加進去,同時勾選上方三個複選框便可。一切搞定以後,當客戶端發起請求後Fiddler會將本地構造的文件(如圖)做爲response返回給客戶端完成測試
這種方法操做簡單,一勞永逸,對於數據量改動比較大的場景較爲適用。
FiddlerScript(Customize Rules)
前面的方法對於Mock數據來說盡管夠用,但總感受有所些欠缺:人工介入太多,不能自動替換數據也沒法經過數據驅動來進行測試。幸虧,Fiddler提供了這樣一個FiddlerScript插件,經過它能夠編輯腳本文件實現自定義規則的實現。
FiddlerScript使用JScript語言(不是JS)須要單獨安裝後纔可使用
JScript:
http://doc.51windows.net/jscript5/?url=/jscript5/dir.htm
安裝:
http://www.telerik.com/download/fiddler/fiddlerscript-editor
安裝完畢後重啓點擊【Fiddler Script】tab便可
能夠看到,腳本中已經預先設置好了這些接口,咱們只須要在其中定義本身須要的規則就能夠了。
第一種方法
咱們能夠向下面這樣將直接替換數據中的字符串來進行測試
再次發送請求後收到的數據將自動修改(以前的 code=」23」 變動爲code=」1」 test=」23」)
第二種方法
也能夠向下面這樣,當收到服務器響應時彈出提示框動手動輸入數據
第三種方法
固然最建議的一種方式仍是搞成數據驅動:
① 建立一個txt文件按行存儲測試用例
② 腳本里讀取文件信息,此處的getCurrentTestCase方法是本身實現的,功能就是計算出第一個未標註「done」的數據做爲當前須要替換的數據,並在結束時作上標記。這樣一來,系統中全部的請求信息將按照預先設計好的順序Mock
③ 測試同窗按照預先設計好的用例檢查結果就能夠了。
這是一個很小的例子,但足以說明它強大的擴展性。對於測試工做而言FiddlerScript更像是一種粘合劑,它能夠把手機、測試數據、執行腳本等測試中參與的一切粘合在一塊兒,讓測試更便捷,讓自動化測試更強大。
3、小結
Fiddler除以上介紹的這些Mock數據的功能外還有不少其餘用途,如域名的重定向、API的測試,這裏就不一一列舉。但根據咱們以往的經驗,若是能結合咱們在其餘領域的研究和探索,確定還能有更深更廣的應用。