1 簡介


 返回

在接口測(cè)試的時(shí)候,會(huì)出現(xiàn)沒有文檔或文檔不全的情況,可結(jié)合Badboy和Fiddler的進(jìn)行接口測(cè)試

其中,

  • Badboy:錄制并導(dǎo)出成jmeter腳本。

    •     有時(shí)錄制很慢,特別是當(dāng)有彈出框時(shí),

    •     Badboy轉(zhuǎn)化為jmeter腳本時(shí),會(huì)有遺漏,或轉(zhuǎn)化錯(cuò)誤

    •   缺點(diǎn):

    • Fiddler:Fiddler沒有Badboy錄制問題慢的缺點(diǎn),且可以根據(jù)Fiddler記錄的信息進(jìn)行修正和完善。

    下面用一個(gè)示例進(jìn)行說明,步驟如下:

    1. 登錄博客園

    2. 發(fā)布信息

    2 Badboy錄制


     返回

    Step1:登錄博客園

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

      Step1.2點(diǎn)擊登錄鏈接,進(jìn)入登錄頁面,如圖1所示:

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖1 登錄頁面

      Step1.3 輸入用戶名、密碼,點(diǎn)擊登錄,結(jié)果如圖2所示:

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖2 登錄請(qǐng)求

    Step 2:發(fā)布信息

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

      Step2.1 輸入發(fā)布信息“Hello!”,點(diǎn)擊“發(fā)布”按鈕

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖3 發(fā)布請(qǐng)求

    錄制結(jié)束,點(diǎn)擊File->Export to JMeter...

    3 Jmeter打開Badboy腳本


     返回

    打開Jmeter,打開剛才保存的腳本,如圖4所示,可以發(fā)現(xiàn)剛才錄制的http請(qǐng)求。其中,有些請(qǐng)求可以忽視。

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖4 Jmeter用badboy錄制的腳本

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

    • Http Cookie Manager:添加這個(gè)管理器會(huì)讓Jmeter保存登錄信息,不用修改,不要?jiǎng)h除

    • User Defined Variables:若沒有自定義變量,可刪除

    • Http Header Manager:該管理器記錄了信息頭數(shù)據(jù),Badboy只記錄了其中的三項(xiàng),我們參考Fiddler的抓取信息,補(bǔ)充完善

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖5 Http信息頭管理

     

    4 用Fiddler抓請(qǐng)求,補(bǔ)充完善腳本


     返回

    如圖6所示,F(xiàn)iddler抓取的http信息頭中,有兩項(xiàng)badboy沒有錄制下來:

    • X-Requested-With: XMLHttpRequest

    • Content-Type: application/json; charset=utf-8

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

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖6 http信息頭

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

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

     圖7 Cotenttype為Json

    seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    圖8 Json類型參數(shù)放在Body Data中

    5 測(cè)試中遇到問題


     返回

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

    從圖2登錄請(qǐng)求中,我們發(fā)現(xiàn)用戶名和密碼都已加密了。通過IE的F12調(diào)試功能,我們可以發(fā)現(xiàn)加密過程。測(cè)試得知:每次調(diào)用的加密結(jié)果都不一樣,但同一個(gè)加密結(jié)果可以用多次。

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

     seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

    5.2 Jmeter請(qǐng)求消息體中中文問題

    若Jmeter信息頭中不添加Content-Type: application/json; charset=utf-8,登錄請(qǐng)求的響應(yīng)結(jié)果就會(huì)失敗。

    5.3 Jmeter響應(yīng)正文中中文問題

    Jmeter響應(yīng)數(shù)據(jù)中的中文顯示亂碼,修改apache-jmeter-3.0\bin\jmeter.properties,添加增加編碼設(shè)置為: