使用jmeter實(shí)現(xiàn)HTTP協(xié)議接口測(cè)試

使用jmeter實(shí)現(xiàn)HTTP協(xié)議接口測(cè)試

1、工具準(zhǔn)備

抓包工具:
fiddler(http協(xié)議抓包神器)
鏈接:https://pan.baidu.com/s/1cjHHJWLkvdNGCwe923Auxg
提取碼:927r

2、知識(shí)準(zhǔn)備

HTTP協(xié)議

HTTP協(xié)議是一種無狀態(tài)協(xié)議,主要包含請(qǐng)求(request)和響應(yīng)(response)兩大部分

請(qǐng)求(request)

當(dāng)瀏覽器向Web服務(wù)器發(fā)出請(qǐng)求時(shí),它向服務(wù)器傳遞了一個(gè)數(shù)據(jù)塊,也就是請(qǐng)求信息,HTTP請(qǐng)求信息由3部分組成:

  • 請(qǐng)求方法 URI協(xié)議/版本
  • 請(qǐng)求頭(Request Header)
  • 請(qǐng)求正文(請(qǐng)求頭和請(qǐng)求正文之間是一個(gè)空行,這個(gè)行非常重要,它表示請(qǐng)求頭已經(jīng)結(jié)束,接下來的是請(qǐng)求正文)
請(qǐng)求部分

HTTP請(qǐng)求中,最常用的方法是get和post請(qǐng)求,兩者最基本的區(qū)別如下:

  • get請(qǐng)求的參數(shù)一般放在請(qǐng)求行中,常用于向服務(wù)器獲取資源, 以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如:http://192.XXX.XX.XXX:XXXX/supplychainfinance-audit/orderManege/getOrdersList?currentPage=1&pageSize=10; POST請(qǐng)求的參數(shù)需要放在body里,常用于向服務(wù)器提交表單
  • GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長(zhǎng)度有限制),而POST方法提交的數(shù)據(jù)沒有限制

響應(yīng)(response)

響應(yīng)即為接口返回的信息,包含3部分:

  • 狀態(tài)行(包含協(xié)議/版本 狀態(tài)碼)
  • 響應(yīng)頭
  • 響應(yīng)體(常見的響應(yīng)格式有HTML、json、xml)
響應(yīng)部分

jmeter中各元件作用域及執(zhí)行順序

請(qǐng)參考: http://www.cnblogs.com/imyalost/p/5971168.html

3、使用jmeter發(fā)送HTTP請(qǐng)求

可以通過點(diǎn)擊optitions->choose languaage->chinese(simplified)切換語言為簡(jiǎn)體中文


language.png

1. 添加線程組

step1.png

通過對(duì)線程組屬性配置,可以控制并發(fā)數(shù)、循環(huán)次數(shù)、持續(xù)時(shí)間等
線程組配置.png

2. 添加HTTP請(qǐng)求
添加cookie管理器
添加HTTP Cookie 管理器后,jmeter會(huì)自動(dòng)記錄并保存服務(wù)端返回的cookie信息,并且在后面所有請(qǐng)求中自動(dòng)添加cookie。每個(gè)線程的cookie都是獨(dú)立的。

cookie.png

線程組->右鍵,添加->取樣器->HTTP請(qǐng)求

step2.png

添加HTTP信息頭管理器
step3.png

由于systoken用于保存登陸信息、subSysClientid為所測(cè)試系統(tǒng)特有字段,需單獨(dú)添加信息頭

圖片.png

請(qǐng)求內(nèi)容填寫
由于Content-Type: application/x-www-form-urlencoded; charset=UTF-8;所以此處請(qǐng)求體選用表單形式填寫
請(qǐng)求內(nèi)容.png

若Content-Type: application/json則表示請(qǐng)求格式為json格式,需添加HTTP信息頭管理器,請(qǐng)求內(nèi)容填寫在消息體數(shù)據(jù)中:
json格式請(qǐng)求頭.png

請(qǐng)求體.png

3. 添加響應(yīng)斷言
斷言可以用于判斷服務(wù)器的返回是否是期望結(jié)果,由于被測(cè)試系統(tǒng)在請(qǐng)求成功后都會(huì)返回"message":"成功",所以斷言選擇“成功”
模式匹配規(guī)則中各項(xiàng)的含義:
??包括:返回結(jié)果包括你指定的內(nèi)容,支持正則匹配
??匹配:返回結(jié)果與你指定斷言完全一致,支持正則匹配
??Equals:返回結(jié)果與你指定斷言完全一致,不支持正則匹配
??SubString:與 “包括”差不多,都是指返回結(jié)果包括你指定的內(nèi)容,但是subString不支持正則字符串
??否:就相當(dāng)于取反。 如果上面斷言結(jié)果為true,勾選“否”后,最終斷言結(jié)果為false。如果上面斷言結(jié)果為false,勾選“否”后,則最終斷言結(jié)果為 true
??或者:如果測(cè)試模式下添加多個(gè)判斷條件,只要有一個(gè)為true,則斷言結(jié)果為true

響應(yīng).png

響應(yīng)斷言.png

4. 添加后置處理器
由于后續(xù)請(qǐng)求都會(huì)用到登陸返回的systoken,所以需要將其提取出來,作為下一個(gè)請(qǐng)求的參數(shù)(使用方式 ${Token})。
Content-Type: application/json;charset=UTF-8表示響應(yīng)的數(shù)據(jù)格式為json格式,所以添加json提取器

圖片.png

json.png

json2.png

??json表達(dá)式簡(jiǎn)介

??響應(yīng)原文:`{"code":1,"sysToken":"platform-XXXXXXXXXXXXX-20190001","message":"成功"}`
??匹配內(nèi)容:platform-XXXXXXXXXXXXX-20190001
??json表達(dá)式:$.sysToken或者sysToken($表示根路徑)

??響應(yīng)原文:`{"code": 1,"data":{"sysToken": "platform-XXXXXXXXXXXXX-20190001","message": "成功"}}`
??匹配內(nèi)容:platform-XXXXXXXXXXXXX-20190001
??json表達(dá)式:$.data.sysToken或者data.sysToken($表示根路徑)

??響應(yīng)原文:`{"code": 1,"data":[{"sysToken": "platform-XXXXXXXXXXXXX-20190001","message": "成功"}]}`
??匹配內(nèi)容:platform-XXXXXXXXXXXXX-20190001
??json表達(dá)式:與前一個(gè)相比多了[],則表示為數(shù)組,所以需要用$.data[0].sysToken或者data[0].sysToken($表示根路徑)

5. 運(yùn)行并查看結(jié)果
在線程組下添加“查看結(jié)果樹”,可以查看該線程組下所有請(qǐng)求的結(jié)果

查看結(jié)果樹.png

最終運(yùn)行后的結(jié)果如下:
請(qǐng)求:
請(qǐng)求體

請(qǐng)求頭

響應(yīng):
響應(yīng)體

響應(yīng)頭

4. 結(jié)構(gòu)優(yōu)化

1. 添加HTTP請(qǐng)求默認(rèn)值
添加方式:右鍵->添加->配置元件->HTTP請(qǐng)求默認(rèn)值
在同一個(gè)項(xiàng)目中,請(qǐng)求的協(xié)議、ip、端口號(hào)、編碼方式基本一致,添加“HTTP請(qǐng)求默認(rèn)值”后有效避免了每添加一個(gè)請(qǐng)求后都需要重新填寫這些字段

默認(rèn)值.png

2. 參數(shù)化
參數(shù)化可以有效實(shí)現(xiàn)測(cè)試數(shù)據(jù)與腳本分離,提高腳本可用性
從csv文件中讀取測(cè)試數(shù)據(jù),需添加csv數(shù)據(jù)文件設(shè)置(右鍵->添加->配置元件->csv數(shù)據(jù)文件設(shè)置),添加完成后,在請(qǐng)求中使用${username}、${fullname}、${permission}即可獲取文件中的值
csv.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容