基於fiddler的APP抓包及服務端模擬
在HTTP介面的測試過程中,一般我們會按照如下的步驟進行:
1)測試環境的準備
2)HTTP訊息體的構造
3)HTTP訊息的傳送及斷言
如果我們可以拿到專案組的介面文件,並且HTTP後臺服務是可以工作的,那我們的介面測試會非常順利,可以不使用Fiddler工具。
但是,實際情況中,不斷的測試前移,需要我們的介面自動化測試用例在編碼工作還未完成的情況下,就能準備完成。程式碼開發完成之後,直接執行自動化用例。
這種情況下,Fiddler工具就能大顯身手了。本文介紹兩種Fiddler工具的使用場景:
1)在沒有介面文件的情況,使用Fiddler抓包,獲得HTTP後臺介面;
2)在沒有HTTP後臺服務的情況下,使用Fiddler模擬服務端。
1 移動APP下Fiddler 抓包
為了行文及截圖方便,我們使用android模擬器操作,真機的操作步驟一樣:
1)讓手機和PC在同一個區域網下面,如果PC是筆記本,它們連線同一個wifi網路即可
2)找到PC的IP地址,如下圖,執行ipconfig,得到192.168.0.103:
3)在Fiddler工具上點選:Tools->TelerikFiddler Options->connections,在如下的Allow remote computers to connect 的勾打上,記住Fiddler的監聽埠8888,稍後會使用上
4)開啟手機,長按已連線的wifi網路,點選修改網路
5)在代理上面選擇手動,IP填寫上面獲取的192.168.0.103,埠填寫Fiddler的監聽埠8888,之後點選儲存。
6)此時,我們在手機上面,開啟被測試移動APP,在Fiddler上面就可以看到訊息體了。以華為應用市場為例:
我們開啟華為應用市場,點選我的:
擷取的訊息如下:
我們可以清晰的看到通過post介面傳送的訊息包括headers以及body等,以及響應訊息體:
至此,移動APP的前後臺抓包大功告成。
2 使用Fiddler模擬服務端
通過Fldder的AutoResponder可以做到模擬服務端。
首先,我們介紹最簡單的服務模擬方式,即我們有真實響應的情況下,如何模擬服務端。
1)選中我們需要模擬的訊息,也就是第11條:
2)儲存該訊息的響應訊息體,用於我們的樁去回一樣的響應:
3)點選模擬功能的入口AutoResponder,選中Enablerules,以及Unmatched requests passthrough:
4)點選新增一條規則,在最下面的響應訊息下拉框中,選中find a file,指向我們上面儲存的檔案
5)這樣,一條訊息的服務端模擬就完成了。
6)我們使用postman檢驗一下,響應訊息和預期的一樣,並且是在我們本機的樁上響應的。
上面的這個例子,我們使用了精確匹配EXACT,是最簡單的應用。實際上,很多時候,服務端響應的訊息體是需要我們自己去構造的,並且上面的訊息匹配方式是精確匹配,應用面偏窄了些,這些再普及一下自動匹配的一些知識:
關於自動匹配,可以使用的有:
字首為“EXACT:”表示完全匹配(大小寫敏感)
無字首表示基本搜尋,表示搜尋到字串就匹配
字首為“REGEX:”表示使用正則表示式匹配
字首為“REGEX:(?insx)”表示匹配方式其中:
-
i表示不區分大小寫;
-
n表示指定的唯一有效的捕獲是顯式命名或編號的形式;
-
s表示單行模式;
-
x表示空格說明的;
時間關係,今天的分享就到這裡,後續繼續給大家寫一些經驗總結。