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)行說明,步驟如下:
登錄博客園
發(fā)布信息
2 Badboy錄制
Step1:登錄博客園
Step1.1 在badboy地址欄輸入http://www.cnblogs.com,回車開始錄制
Step1.2點(diǎn)擊登錄鏈接,進(jìn)入登錄頁面,如圖1所示:
圖1 登錄頁面
Step1.3 輸入用戶名、密碼,點(diǎn)擊登錄,結(jié)果如圖2所示:
圖2 登錄請(qǐng)求
Step 2:發(fā)布信息
在發(fā)布信息前,切換到發(fā)布頁面(閃存),這一步不錄制。
Step2.1 輸入發(fā)布信息“Hello!”,點(diǎn)擊“發(fā)布”按鈕
圖3 發(fā)布請(qǐng)求
錄制結(jié)束,點(diǎn)擊File->Export to JMeter...
3 Jmeter打開Badboy腳本
打開Jmeter,打開剛才保存的腳本,如圖4所示,可以發(fā)現(xiàn)剛才錄制的http請(qǐng)求。其中,有些請(qǐng)求可以忽視。
圖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ǔ)充完善
圖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中
圖6 http信息頭
由于Content-Type是json,如圖7所示,所以http發(fā)送的參數(shù)體應(yīng)該放在Jmeter的Body Data中,如圖8所示,而不是Parameters中(發(fā)布信息請(qǐng)求也如此修改)。
圖7 Cotenttype為Json
圖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()); |
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è)置為: