在對于WEB系統(tǒng)進(jìn)行性能測試時,第一時間想到的是測試出WEB系統(tǒng)能夠承受的大并發(fā)虛擬用戶(VU)用戶數(shù),因?yàn)橄到y(tǒng)的大VU并發(fā)數(shù)可以直接反應(yīng)系統(tǒng)的承載能力。但是人們往往忽略了VU的并發(fā)模型。什么是VU的并發(fā)模型呢?如下圖所示,我們使用瀏覽器訪問一個頁面,瀏覽器會有多個HTTP請求發(fā)向服務(wù)端,這些請求有串行的也有并行的(water中有時間重疊的請求屬于并行請求。串行請求是指:前一請求結(jié)束,后一請求才下發(fā)請求)。如果性能測試工具提供WEB錄制功能并能按照瀏覽器的行為模型模擬VU行為,那是最好的了(如果你使用Jmeter或LoadRunner 11那么工具是無法做到的,詳見:《 性能測試工具Jmeter你所不知道的內(nèi)幕》、《 性能測試工具LoadRunner你所不知道的內(nèi)幕》)。截止目前我了解到的性能測試工具:kylinTOP可以實(shí)現(xiàn)(Jmeter,CPTS(華為),PTS(阿里)均無法實(shí)現(xiàn)),但本文并是不討論如何使用kylinTOP來錄制腳本并模擬瀏覽器的行為,而是如何利用kylinTOP手工構(gòu)建這樣的場景。為什么要手工構(gòu)建呢,主要是有些web系統(tǒng)對外提供的服務(wù)不是WEB頁面,而是HTTP接口功能,對這種場景就需要我們手工來構(gòu)建。
創(chuàng)新互聯(lián)主營新縣網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,App定制開發(fā),新縣h5成都小程序開發(fā)搭建,新縣網(wǎng)站營銷推廣歡迎新縣等地區(qū)企業(yè)咨詢如果被測試系統(tǒng)是一個WEB服務(wù)系統(tǒng),對外提供的HTTP接口不是WEB頁面,而是HTTP接口功能。對于這種系統(tǒng)我們應(yīng)當(dāng)怎樣測試性能呢?要想測試出它能承受的大并發(fā)VU數(shù),首先要分析其VU的請求模型。假定VU的請求模型如下所示:
VU請求模型描述:已知一個WEB系統(tǒng)對上層用戶提供A、B、C、D、E、F、G、H、I共9個接口請求。上層用戶使用這9個請求的約束要求是A、B是串行下發(fā),C、D、E、F四個請求并行下發(fā),G、H、I是串行下發(fā)。按照如下的瀑布圖形下發(fā)請求:
一個上層用戶對WEB系統(tǒng)來說就是一個VU,那么如何手工構(gòu)建這樣的請求模型呢?
通過“增加”按鈕添加HTTP請求節(jié)點(diǎn)和描述節(jié)點(diǎn)。同時把要并發(fā)的請求移動到描述節(jié)點(diǎn)下面(作為描述節(jié)點(diǎn)的子節(jié)點(diǎn),同時描述節(jié)點(diǎn)名稱輸入:start_concurrent)
說明:kylinTOP手工添加的HTTP請求節(jié)節(jié)點(diǎn)默認(rèn)是串行的,“描述節(jié)點(diǎn)”的子節(jié)點(diǎn)處理為并發(fā)請求(描述節(jié)點(diǎn)的名稱必須是:start_concurrent,否則當(dāng)作串行處理)。
設(shè)置腳本的“高級設(shè)置-虛擬用戶“,屬性值選擇下圖標(biāo)志中的任意一個。
點(diǎn)擊調(diào)試按鈕,生成如下所示VU瀑布圖。該瀑布圖中:CDEF四個是并發(fā)請求,其余是串行請求,與場景要求一致。
說到這里,腳本運(yùn)行的瀑布圖與場景要求已經(jīng)完全一致。后續(xù)使用該腳本新建測試任務(wù)運(yùn)行即可測試獲得系統(tǒng)可承受的大VU數(shù)。如果使用Jmeter,PTS等其它性能測試工具測試,VU的HTTP請求模型將是一個線性請求(串行請求),無法生成上述場景描述要求腳本,測試結(jié)果也是非常不準(zhǔn)確的。