
我們絕大多數(shù)同學(xué)在使用jmeter進(jìn)行性能測(cè)試時(shí)都會(huì)在一個(gè)線程組中完成測(cè)試工作,今天我來(lái)重點(diǎn)講解一下jmeter多個(gè)線程組在測(cè)試中的應(yīng)用,這也是關(guān)于jmeter性能測(cè)試面試過(guò)程中的進(jìn)階問(wèn)題,希望能夠幫到大家來(lái)解決工作中不同的測(cè)試需求。
線程組中的線程執(zhí)行順序是什么?
首先大家需要明確一件事兒,在jmeter中,對(duì)于同一個(gè)線程組中的一個(gè)線程來(lái)說(shuō),請(qǐng)求是順序執(zhí)行的。下圖中,對(duì)于線程1來(lái)說(shuō),在每次循環(huán)時(shí),請(qǐng)求1、請(qǐng)求2和請(qǐng)求3是順序執(zhí)行的。

在這里大家需要確認(rèn)一個(gè)問(wèn)題?參考上圖,如果多線程并發(fā)(例如10個(gè)線程),能夠保證10個(gè)線程都先執(zhí)行請(qǐng)求1,然后執(zhí)行請(qǐng)求2,最后到請(qǐng)求3嗎?答案是:正常情況保證不了,因?yàn)槎嗑€程執(zhí)行是無(wú)序的,每個(gè)線程執(zhí)行的速度也不同,這樣會(huì)出現(xiàn):線程1執(zhí)行了請(qǐng)求1、請(qǐng)求2和請(qǐng)求3,線程2剛剛執(zhí)行了請(qǐng)求1,線程3還沒(méi)執(zhí)行任何請(qǐng)求的情況。但是通過(guò)加集合點(diǎn)(synchronizing timer)的方式可以,關(guān)于集合點(diǎn)的使用這里不會(huì)重點(diǎn)介紹。
如何對(duì)不同的請(qǐng)求完成集中壓測(cè)?
例如,我們需要實(shí)現(xiàn)一個(gè)需求:10個(gè)并發(fā)分別對(duì)請(qǐng)求1、請(qǐng)求2、請(qǐng)求3進(jìn)行壓測(cè),并連續(xù)執(zhí)行100次?
答案是使用多線程組,例如設(shè)計(jì)三個(gè)線程組,然后把請(qǐng)求1、請(qǐng)求2、請(qǐng)求3分別放到三個(gè)線程組中,在每個(gè)線程組中分別設(shè)置線程數(shù)是10,循環(huán)次數(shù)是100,設(shè)計(jì)方法如下:

那么如何保證在某段時(shí)間內(nèi)只對(duì)某一個(gè)請(qǐng)求進(jìn)行并發(fā)測(cè)試呢?即如何實(shí)現(xiàn)在某時(shí)間段a只對(duì)線程組1進(jìn)行并發(fā)操作,某時(shí)間段b只對(duì)線程組2進(jìn)行并發(fā)操作?
實(shí)現(xiàn)方法也很簡(jiǎn)單,在測(cè)試計(jì)劃中勾選“獨(dú)立運(yùn)行每個(gè)線程組”即可,如下圖,這樣就保證了各個(gè)線程組獨(dú)立運(yùn)行,不會(huì)出現(xiàn)線程組并發(fā)運(yùn)行的情況

線程組之間需要有一定的時(shí)間間隔該如何處理?
例如想在線程組1運(yùn)行完成1分鐘以后才運(yùn)行程組2,這個(gè)需求該如何實(shí)現(xiàn)呢?
首先,大家有沒(méi)有想過(guò)為什么要有這個(gè)需求呢?比如我們要對(duì)不同的接口進(jìn)行測(cè)試,然后在后臺(tái)進(jìn)行監(jiān)控,如果設(shè)置了時(shí)間間隔,就可以很清晰的看到在測(cè)試不同的接口時(shí)的資源利用率的變化情況。例如:接口1占用cpu資源平均為30%,接口2占用cpu資源平均為32% ,如果沒(méi)有時(shí)間間隔,就很難區(qū)分二者在cpu上的消耗情況了,但是加上時(shí)間間隔以后在二者之間就會(huì)出現(xiàn)cpu使用率明顯下降的一段區(qū)間,如下圖所示:

有的同學(xué)可能會(huì)使用固定定時(shí)器,通過(guò)在不同的線程組之間加固定定時(shí)器來(lái)實(shí)現(xiàn)這個(gè)需求,如下圖所示:

但是實(shí)際情況是,上圖這種設(shè)計(jì)方式是無(wú)效的,會(huì)出現(xiàn):在線程組1中10個(gè)并發(fā)執(zhí)行一次,就會(huì)等待1分鐘的情況!大家可以親自驗(yàn)證一下。
所以正確的方法是通過(guò)線程組的調(diào)度器來(lái)實(shí)現(xiàn),如下圖:

我們?cè)O(shè)置您需要的啟動(dòng)延遲時(shí)間,然后設(shè)置持續(xù)時(shí)間,這個(gè)值可以預(yù)估大一些,例如100秒,因?yàn)槿绻厦娴难h(huán)次數(shù)設(shè)置為5, 那么執(zhí)行完5次循環(huán)后,該線程組就會(huì)停止運(yùn)行(即使運(yùn)行時(shí)間沒(méi)有到100秒)
多個(gè)線程組設(shè)計(jì)方案的實(shí)際應(yīng)用
前面講了那么多,實(shí)際工作中多個(gè)線程組的設(shè)計(jì)方案有哪些呢?
場(chǎng)景1:多個(gè)線程組順序運(yùn)行
典型的應(yīng)用,就是依次測(cè)試單個(gè)接口的處理能力。簡(jiǎn)單的說(shuō):10個(gè)接口10并發(fā),循環(huán)執(zhí)行100次。
我們就可以把這10個(gè)接口分別放到10個(gè)線程組中,然后每個(gè)線程組都是10并發(fā)和循環(huán)執(zhí)行100次,在測(cè)試計(jì)劃中勾選“獨(dú)立運(yùn)行每個(gè)線程組”即可。
場(chǎng)景2:多個(gè)線程組并行運(yùn)行(適合多場(chǎng)景同時(shí)運(yùn)行)
典型的應(yīng)用,系統(tǒng)中同時(shí)運(yùn)行多個(gè)場(chǎng)景。簡(jiǎn)單的說(shuō):有5個(gè)場(chǎng)景(每個(gè)場(chǎng)景都包含多個(gè)接口)10并發(fā),循環(huán)執(zhí)行100次。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-413792.html
我們就可以把這5個(gè)場(chǎng)景分別放到5個(gè)線程組中,然后每個(gè)線程組都是10并發(fā)和循環(huán)執(zhí)行100次,在測(cè)試計(jì)劃中不勾選“獨(dú)立運(yùn)行每個(gè)線程組”即可(默認(rèn)選項(xiàng))。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-413792.html

到了這里,關(guān)于Jmeter場(chǎng)景組合測(cè)試——多個(gè)線程組的設(shè)計(jì)方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!