測(cè)試需求跟上一篇實(shí)踐一樣,區(qū)別是之前用python-requests去實(shí)現(xiàn),現(xiàn)在用Jmeter實(shí)現(xiàn)。
使用Jmeter測(cè)試授權(quán)流程,https請(qǐng)求,步驟描述如下
1)用戶(hù)名密碼登錄CAS服務(wù)器,拿到TGT
2)使用TGT,拿到ST
3)通過(guò)接口url+ST,向應(yīng)用服務(wù)器請(qǐng)求數(shù)據(jù)
打開(kāi)Jmeter后自動(dòng)生成一個(gè)測(cè)試計(jì)劃,在測(cè)試計(jì)劃下新建線程組(一個(gè)線程組可以看做一個(gè)虛擬用戶(hù)組,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶(hù))。先把這個(gè)用戶(hù)組將要執(zhí)行的動(dòng)作添加進(jìn)去,如下步驟。
一、Jmeter發(fā)送HTTPS請(qǐng)求
成功地發(fā)送HTTPS請(qǐng)求,關(guān)鍵之處就是代理的設(shè)置。首先我們要在線程組里添加一個(gè)錄制控制器,不然無(wú)法生成Jmeter的CA證書(shū)文件。然后在工作臺(tái)右鍵添加-〉非測(cè)試元件-〉HTTP代理服務(wù)器。選擇默認(rèn)端口是8080即可。我電腦8080端口被占用了,用8888也可以。直接點(diǎn)擊啟動(dòng)。

接著找到工具欄“選項(xiàng)”-〉SSL管理器。打開(kāi)bin目錄下的ApacheJMeterTemporaryRootCA.crt,開(kāi)啟Jmeter代理。
二、添加HTTP請(qǐng)求頭
出于服務(wù)器安全方面的考慮,在設(shè)計(jì)的時(shí)候,公共請(qǐng)求頭還添加了一個(gè)自定義的特殊的字段。在這里加上就好了。

三、添加HTTP請(qǐng)求
因?yàn)槭荋TTPS,將端口號(hào)填寫(xiě)443。協(xié)議:https。方法我這里用的是POST。將服務(wù)器名稱(chēng)和路徑填入。并添加請(qǐng)求參數(shù)username和password。底部代理服務(wù)器填寫(xiě)本機(jī)地址和之前設(shè)置的端口號(hào)8888。(后面會(huì)發(fā)現(xiàn)運(yùn)行后,錄制控制器那里會(huì)記錄下通過(guò)該代理服務(wù)器的請(qǐng)求)

這里的HTTPS請(qǐng)求實(shí)現(xiàn)了第一步:用戶(hù)名密碼登錄CAS服務(wù)器,拿到TGT,可以看到響應(yīng)信息中TGT的值。

四、正則表達(dá)式提取器
接下來(lái)需要實(shí)現(xiàn)第二步:使用TGT,拿到ST。怎么在新增的HTTP請(qǐng)求中用到上一請(qǐng)求的返回值呢?這里就用到正則表達(dá)式提取器。右鍵后點(diǎn)擊:添加>后置處理器>正則表達(dá)式提取器。
正則表達(dá)式括號(hào)中表示提取的內(nèi)容。

正則表達(dá)式提取器說(shuō)明如下:

然后添加新的HTTP請(qǐng)求,填入相應(yīng)路徑和參數(shù)。這里路徑里需要用到剛才提取的TGT值,使用${TGT}進(jìn)行引用。

最后的兩個(gè)請(qǐng)求實(shí)現(xiàn)第三步:通過(guò)接口url+ST,向應(yīng)用服務(wù)器請(qǐng)求數(shù)據(jù)。需要用到getTicket中的ticket返回值。也是使用正則表達(dá)式提取器就好了。

五、擴(kuò)展
1)性能測(cè)試
實(shí)現(xiàn)單獨(dú)某個(gè)接口測(cè)試后,可以進(jìn)行該接口的性能測(cè)試。比如測(cè)試系統(tǒng)的及時(shí)性、處理能力等特性。通過(guò)響應(yīng)時(shí)間、吞吐量、并發(fā)用戶(hù)量去衡量服務(wù)器性能。
這里可以在線程組的參數(shù)中調(diào)整。最開(kāi)始說(shuō)到,線程組中的每個(gè)線程都可以理解為一個(gè)虛擬用戶(hù)。
線程數(shù):虛擬用戶(hù)數(shù)
Ramp-up Period:設(shè)置的虛擬用戶(hù)數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)。如果線程數(shù)為10 ,準(zhǔn)備時(shí)長(zhǎng)為2 ,那么需要2秒鐘啟動(dòng)10個(gè)線程。也就是每秒鐘啟動(dòng)5個(gè)線程。
循環(huán)次數(shù):每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為10,循環(huán)次數(shù)為100,那么總請(qǐng)求數(shù)為1000。

運(yùn)行后查看聚合報(bào)告,也有其它類(lèi)型的比如圖形結(jié)果、結(jié)果樹(shù)等。
衡量指標(biāo)一般有:平均響應(yīng)時(shí)間,90%Line值(指90%請(qǐng)求響應(yīng)時(shí)間不會(huì)超過(guò)這個(gè)值),錯(cuò)誤率(一般要求為0或<0.01%),吞吐量等。

2)Cookie管理器
對(duì)于軟件或web中一些需要登錄后才有權(quán)限的操作,當(dāng)進(jìn)行接口測(cè)試時(shí)不可能每一次都登錄一次。這時(shí)候可以在最開(kāi)始登錄后,獲取Cookie信息,以便其它操作直接用到??梢杂肅ookie管理器。這個(gè)還沒(méi)仔細(xì)研究,所以?xún)H作為可能的擴(kuò)展寫(xiě)在這里。