基於Charles,如何利用代理技術進行接口mock測試

NO IMAGE

1、工具選擇

作為一名測試工程師,抓包是最常用的分析問題的手段,而Charles又是最常用的代理工具,之所以使用它有一下幾個原因:

  • 代理功能
    • http/https、socks5
    • 限速模擬
    • 斷點調試
  • 轉發
    • 映射:讓發往a網站的請求返回b網站的內容
    • 重寫:自動把請求和內容篡改掉
  • 工具:拼裝請求、重放請求、重讀請求

上面提到了對Charles代理工具的種種分析,學海無涯,每個知識點都需要認真研究,慢慢積累~

2、接口mock

注:以下操作默認已經安裝Charles並且設置好信任證書,可以成功代理

2.1 遠程服務mock(Map Remote)

  • 應用場景
    比如公司現在已經上線了一個網站,想測試一下它在H5內效果如何,但是新的版本還未來得及上線,又想在真實的系統中體驗下運行效果,就可以使用遠程服務mock的方式。
  • 實操演示

這裡以訪問百度首頁,然後將請求轉發至testerhome首頁為例

1)在Charles-Tools中選中Map Remote

基於Charles,如何利用代理技術進行接口mock測試

2)打開後勾選Enable Map Remout,再點擊Add

基於Charles,如何利用代理技術進行接口mock測試

3)設置映射自(Map From)的路徑、協議(不選默認http,https都支持)和映射至(Map To)的路徑、協議;完成後點擊OK

基於Charles,如何利用代理技術進行接口mock測試

4)這個時候我們再瀏覽器中輸入www.baidu.com進行訪問,發現實際訪問的是testerhome,從抓包也可以看出來顯示為Mapped from remote URL: https://www.baidu.com/

基於Charles,如何利用代理技術進行接口mock測試
基於Charles,如何利用代理技術進行接口mock測試

2.2 Rewriting traffic with Breakpoints

利用Breakpoints,可以對指定的HTTP或HTTPS請求在到達客戶端之前進行攔截暫停,暫停後可以對原數據進行修改,例如對返回值進行修改,修改完成後再講請求發送至客戶端

  • 應用場景
    有時候我們對界面進行檢查,可能會涉及字段長度、數字位數、不同數值對應不同顏色或標識圖片的展示等,如果純依靠後端來構造複雜的數據可能沒有那麼方便,也可能會有大量髒數據產生,並且我們測試的目的只是為了驗證前端的展示,所以這個時候可以利用Charles的rewrite功能來完成數據的mock;
  • 實操演示
    1)在需要攔截的請求上右擊選中“Breakpoints

    基於Charles,如何利用代理技術進行接口mock測試

    2)在Proxy->Breakpoint Settings中勾選Enable Breakpoints,然後雙擊請求彈出Edit Breakpoint框,選中ResponseOK

    基於Charles,如何利用代理技術進行接口mock測試

    3)這個時候我們訪問testerhome首頁,會發現者請求被攔截了,網站也一直處於加載等待響應階段

    基於Charles,如何利用代理技術進行接口mock測試
    基於Charles,如何利用代理技術進行接口mock測試

    4)選中Edit Response,修改原標題欄中”社區“字段為”Charles社區“,點擊Execute

    基於Charles,如何利用代理技術進行接口mock測試

    5)查看testerhome首頁,發現原標題字段已被成功修改

    基於Charles,如何利用代理技術進行接口mock測試

2.3 Rewriting traffic with the Rewrite tool

Breakpoint快速的實現接口攔截修改,但是如果每次都想要以相同的方式進行攔截修改就需要每次都進行手動觸發,這樣就很不方便,影響效率;因此我們可以使用Tools中的Rewrite功能來完成提前定義好接口數據的篡改規則,這樣每次訪問的時候就會自動攔截修改發送

  • 應用場景
    Breakpoint
  • 實操演示
    1)Tools中選中Rewrite,然後設置需要攔截的請URL

    基於Charles,如何利用代理技術進行接口mock測試
    基於Charles,如何利用代理技術進行接口mock測試

    2)再選擇Add一個重寫規則,將返回值中的“TTF榜單”替換為“11111榜單

    基於Charles,如何利用代理技術進行接口mock測試

    3)重新訪問testerhome首頁

    基於Charles,如何利用代理技術進行接口mock測試

3、補充說明

相關文章

淺談MySQL的事務與ACID

HashMap原理技術知識整理

SpringMVC加載流程

Spring中FactoryBean的作用和實現原理