天天看點

Fiddler 使用

目錄

抓包介紹

接口測試

什麼是抓包

抓包工具原理

Fiddler 基礎使用

檢視封包(Inspectors)

清理會話清單

設定過濾

過濾主機

過濾 PC/APP 端

設定斷點

AutoResponder(Mock)

Composer(建立和發送請求)

弱網測試

在 HTTP 接口的測試過程中,一般我們會按照如下的步驟進行:

測試環境的準備

HTTP 消息體的構造

HTTP 消息的發送及斷言

如果我們可以拿到項目組的接口文檔,并且 HTTP 背景服務是可以工作的,那我們的接口測試會非常順利,可以不使用 Fiddler 工具。

但是,實際情況中,随着不斷的測試前移,需要我們的接口自動化測試用例在開發工作還未完成的情況下,就能準備完成。代碼開發完成之後,直接運作自動化用例,這種情況下,抓包工具就能大顯身手了。

本文将主要介紹抓包工具(Fiddler)的兩種使用場景:

在沒有接口文檔的情況,使用 Fiddler 抓包,獲得 HTTP 背景接口;

在沒有 HTTP 背景服務的情況下,使用 Fiddler 模拟服務端。

抓包(package capture):就是将在網絡傳輸中發送與接收的資料包進行截獲、重發、編輯、轉存等操作,也用來檢查網絡安全。

抓包工具的使用場景:

截取和觀察網站的請求與響應資訊,幫助我們更深入地了解網站,幫助測試進行 BUG 定位與描述。

攔截修改請求資訊,繞過用戶端的限制,測試服務端的功能。

攔截修改響應資訊,繞過服務端的限制,測試用戶端的功能。

常用的抓包工具有 Fiddler、Charles、F12 開發者工具等。

請求先發送給抓包工具,抓包工具接收請求後轉發給伺服器。

伺服器處理請求後将響應資料傳回給抓包工具,抓包工具再轉發給用戶端(浏覽器)。

Fiddler 使用
Fiddler 使用

方式一:菜單清理

Fiddler 使用

方式二:指令行清理

Fiddler 使用

方式三:鍵盤 delete 鍵

方式四:快捷鍵 Ctrl + X

點選Filters頁簽,勾選“Use Filters”;

Hosts 下方的第二個下拉框,選擇“Show Only the following Hosts”;

在下方輸入框中輸入要抓包的主機位址(多個位址用英文分号隔開,如:localhost;127.0.0.1);

點選右上角的“Actions”,選擇“Run Filterset Now”;

如果需要取消過濾,則去掉“Use Filters”的勾選。

Fiddler 使用

手機上設定代理後,Fiddler 上抓到的是 pc 和 app 所有的請求。如果 pc 上打開網址,會很多,這時候也需要開啟過濾功能。

打開 Fiddler > Tools > Fiddler Options > HTTPS > ...from remote clients only,選擇對應選項即可。

Fiddler 使用

...from all processes:抓所有的請求。

...from browsers only:隻抓浏覽器的請求。

...from non-browsers only:隻抓非浏覽器的請求。

...from remote clients only:隻抓遠端用戶端請求。

網站分前端和後端,當我們在測試一個網站的時候,出了問題,我們不知道是前端有問題還是後端問題,Web 端可以用浏覽器自帶的檢查來看,而 APP 端則需要用抓包工具。

Fiddler 使用

Before Requests:請求之前(可修改請求參數)

After Responses:響應之後(可修改響應參數)

Disabled:禁用斷點

示例:修改請求

進入如添加會員的頁面,填寫正确的手機号碼和其他資訊;

打開 fiddler 請求斷點:Rules ==》 Automatic Breakpoints ==》 Before Requests

回到添加會員界面,點選送出按鈕(原來是點完請求後直接發往伺服器端,勾上斷點後,以後隻要你發這個請求,它就會卡那不動。在這你可以看下是否要修改請求内容);

回到 Fiddler,修改【請求體】,如修改手機号碼内容;

點選請求下方的綠色按鈕“Run to Completion”,正式發送請求給服務端;

若需要關閉 Fiddler 斷點:Rules ==》 Automatic Breakpoints ==》 Disabled

示例:修改響應

Fiddler 使用

打開 Fiddler 響應斷點:Rules ==》 Automatic Breakpoints ==》 After Responses

回到添加會員界面,點選送出按鈕(原來是點完請求後直接傳回響應,勾上斷點後,以後隻要你發這個請求,它就會卡那不動。在這你可以看下是否要修改響應内容);

如修改【操作提示】的内容;

點選請求下方的綠色按鈕“Run to Completion”,正式傳回響應給用戶端;

Fiddler 的 AutoResponder 可以做到模拟服務端。

使用步驟

Fiddler 使用

進入 AutoResponder;

選擇清單左側請求,點選【Add Rule】添加 mock 請求(或點選【Add Rule】手動填寫請求位址);

選擇響應結果,模拟測試場景(此處支援打開本地檔案,根據檔案内響應資料(例如 json 檔案)進行 mock);

點選右下角【save】,儲存響應設定;

勾選上方選項:

Enable rules:開啟或禁用自動重定向功能,勾選上時,激活規則。

Unmatched requests passthrough:未比對的請求穿透,即勾選上時,不影響那些沒滿足我們處理條件的請求。

Enable Latency:勾選了這個選項,在規則裡面就可以設定是立即傳回響應,還是隔多少毫秒才傳回響應。

至此,一條消息的服務端模拟配置就完成了。我們可以實際去請求接口檢驗一下,響應消息和預期的一樣,并且是在我們本機的樁上響應的。

自動比對

上面例子中使用的是精确比對“EXACT”,是最簡單的應用。實際上,很多時候,服務端響應的消息體是需要我們自己去構造的,并且上面的消息比對方式是精确比對,應用面偏窄了些。關于自動比對,可以使用的有:

字首為<code>EXACT:</code>:表示完全比對(大小寫敏感)。

<code>無字首</code>:表示基本搜尋,表示搜尋到字元串就比對。

字首為<code>REGEX:</code>:表示使用正規表達式比對。

字首為<code>REGEX:(?insx)</code>表示比對方式其中:

i:表示不區分大小寫。

n:表示指定的唯一有效的捕獲是顯式命名或編号的形式。

s:表示單行模式。

x:表示空格說明。

Composer 的功能就是用來建立 HTTP Request 然後發送。你可以手寫一個 Request;也可以在 Web 會話清單中拖拽一個已有的 Request,來建立一個新的 HTTP Request。

Fiddler 使用

Composer 和 Inspectors 功能上的差別

Composer 起到的功能和 Inspectors 中的作用一樣,都是篡改資料,不過 Composer 可以篡改 Cookie 中的資料。

也就是說,Inspectors 篡改是的使我們輸入的資料,例如密碼輸入什麼就是什麼;而 Composer 篡改的是經過處理後的,例如 Cookie 中的資料,其實密碼已經是加密了的。

Fiddler Composer 比其他工具的優勢

能建立發送 HTTP Request 的工具很多很多。但是 Fiddler 的功能有如下的優勢:

能從"Web會話清單"中拖拽一個先前捕獲到的 Request,然後稍微修改一下。

發送 Request 後,還能設定斷點,繼續修改 Request。

支援在 Request 中上傳檔案。

支援發送多次 Request。

使用示例:模拟京東商城的登入

啟動 Fiddler,啟動浏覽器,打開京東,然後輸入使用者名和密碼進行登入。Fiddler 将捕獲到這個登入的 Request。

首先找出哪個 Request 是用來登入的, 然後把它拖拽到 Composer 中。(用來登入的 request 是這個:https://passport.360buy.com/uc/loginService?uuid=6bc79fbf-e882-49bb-b63a-6fd6ee448944 )

在 Composer 可以看到, 登入是使用 POST 方法,把使用者名和密碼發送給伺服器。 那麼我們可以修改 Composer 中的 request 内容, 比如使用者名為 [email protected],密碼為 test1234。

Request 造好了後,按“Execute”按鈕就可以發送 Request 了(如果按住 Shift 鍵的同時按"Execute",Fiddler 會自動給這個 Request 下斷點)。

發送的 Request,将出現在左邊的 Web Session 清單中。

Fiddler 使用

Parsed 和 Raw 兩種編輯模式

Parsed模式(最常用):把 Request 分為三個部分:Request line、Request Headesr 和 Request Body。這樣很容易建立一個 Request。

Raw 模式,需要一行一行手寫一個 Request。

Fiddler 使用

概念

在當今移動網際網路盛行的時代,網絡的形态除了有線連接配接,還有 2G/3G/Edge/4G/Wifi 等多種手機網絡連接配接方式。不同的協定、不同的制式、不同的速率,使移動應用運作的場景更加豐富。

從測試角度來說,需要額外關注的場景就遠不止斷網、網絡故障等情況了。對于弱網的資料定義,不同的應用所界定的含義是不一樣且不清晰的,不僅要考慮各類型網絡最低速率,還要結合業務場景和應用類型去劃分。

按照移動網際網路的特性來說,一般應用低于 2G 速率的都屬于弱網,也可以将 3G 劃分為弱網。除此之外,弱信号的 Wifi 通常也會被納入到弱網測試場景中。

為何要進行弱網測試?

例如:進地鐵、上公交、進電梯等,如果 app 沒有對各種網絡異常進行相容處理,那麼使用者可能在日常生活中遇到 APP 閃退、ANR、資料丢失等問題。是以,app 網絡測試,特别是弱網測試顯得尤為重要。

案例:目前有一款主要是在坦尚尼亞地區使用的适配于低資源環境的醫療 IT 系統。根據資料顯示,在坦尚尼亞等東非國家,普遍使用的都是 2G 網絡,覆寫率達到 40% 以上,3G 網絡的覆寫都非常少,并且穩定性較差。由此,對于目前的 App 應用傳遞要求即至少在弱網以及無網狀态下能正常運作。

打開 Fiddler,設定代理,并允許遠端連接配接;

手機連接配接電腦的熱點網絡,或者同在一個區域網路内;

手機網絡連接配接中,設定網絡代理,IP 是電腦的同網段 IP 位址,端口是 8888;

打開網速模拟模式開關(Rules → Performances → Simulate Modem Speeds);

Fiddler 使用

手機通路 APP,或者用手機浏覽器通路網絡,觀察功能響應或者頁面重新整理速度;

如果需要自定義網絡的速度,需要到自定義規則中配置(Rules → Customize Rules)。

Fiddler 使用
Fiddler 使用

網絡環境測試機帶寬參考測試資料

Fiddler 使用