用Jmeter+Badboy+Fiddler做接口測試


用Jmeter+Badboy+Fiddler做接口測試

2016-12-05

目錄

1 簡介
2 Badboy錄制
3 Jmeter打開Badboy腳本
4 用Fiddler抓請求,補充完善腳本
5 測試中遇到問題
  5.1 博客園登錄名和密碼加密
  5.2 Jmeter請求消息體中中文問題
  5.3 Jmeter響應正文中中文問題

1 簡介


 返回

在接口測試的時候,會出現沒有文檔或文檔不全的情況,可結合Badboy和Fiddler的進行接口測試

其中,

  • Badboy:錄制並導出成jmeter腳本。
    •   缺點:
      •     有時錄制很慢,特別是當有彈出框時,
      •     Badboy轉化為jmeter腳本時,會有遺漏,或轉化錯誤
  • Fiddler:Fiddler沒有Badboy錄制問題慢的缺點,且可以根據Fiddler記錄的信息進行修正和完善。

下面用一個示例進行說明,步驟如下:

  1. 登錄博客園
  2. 發布信息

2 Badboy錄制


 返回

Step1:登錄博客園

  Step1.1 在badboy地址欄輸入http://www.cnblogs.com,回車開始錄制

  Step1.2點擊登錄鏈接,進入登錄頁面,如圖1所示:

圖1 登錄頁面

  Step1.3 輸入用戶名、密碼,點擊登錄,結果如圖2所示:

圖2 登錄請求

Step 2:發布信息

在發布信息前,切換到發布頁面(閃存),這一步不錄制。

  Step2.1 輸入發布信息“Hello!”,點擊“發布”按鈕

圖3 發布請求

錄制結束,點擊File->Export to JMeter...

3 Jmeter打開Badboy腳本


 返回

打開Jmeter,打開剛才保存的腳本,如圖4所示,可以發現剛才錄制的http請求。其中,有些請求可以忽視。

圖4 Jmeter用badboy錄制的腳本

我們首先看下信息頭,如圖5所示:

  • Http Cookie Manager:添加這個管理器會讓Jmeter保存登錄信息,不用修改,不要刪除
  • User Defined Variables:若沒有自定義變量,可刪除
  • Http Header Manager:該管理器記錄了信息頭數據,Badboy只記錄了其中的三項,我們參考Fiddler的抓取信息,補充完善

圖5 Http信息頭管理

 

4 用Fiddler抓請求,補充完善腳本


 返回

如圖6所示,Fiddler抓取的http信息頭中,有兩項badboy沒有錄制下來:

  • X-Requested-With: XMLHttpRequest
  • Content-Type: application/json; charset=utf-8

把它們添加到Jmeter的Http Cookie Manager中

圖6 http信息頭

由於Content-Type是json,如圖7所示,所以http發送的參數體應該放在Jmeter的Body Data中,如圖8所示,而不是Parameters中(發布信息請求也如此修改)。

 圖7 Cotenttype為Json

圖8 Json類型參數放在Body Data中

5 測試中遇到問題


 返回

5.1 博客園登錄名和密碼加密

從圖2登錄請求中,我們發現用戶名和密碼都已加密了。通過IE的F12調試功能,我們可以發現加密過程。測試得知:每次調用的加密結果都不一樣,但同一個加密結果可以用多次。

var encrypted_input1 = encrypt.encrypt($('#input1').val());
var encrypted_input2 = encrypt.encrypt($('#input2').val());

 

5.2 Jmeter請求消息體中中文問題

若Jmeter信息頭中不添加Content-Type: application/json; charset=utf-8,登錄請求的響應結果就會失敗。

5.3 Jmeter響應正文中中文問題

Jmeter響應數據中的中文顯示亂碼,修改apache-jmeter-3.0\bin\jmeter.properties,添加增加編碼設置為:

sampleresult.default.encoding=utf-8

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM