壓力測(cè)試系統(tǒng)及方法
【專利摘要】本申請(qǐng)公開(kāi)了壓力測(cè)試系統(tǒng)及方法,該系統(tǒng)為由控制節(jié)點(diǎn)及代理節(jié)點(diǎn)組成的集群,用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)包括:外部消息接收單元,用于接收業(yè)務(wù)控制消息;節(jié)點(diǎn)確定單元,用于確定目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn);內(nèi)部消息生成單元;消息發(fā)送單元,用于將內(nèi)部消息發(fā)送到目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn);所述代理節(jié)點(diǎn)用于對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作,對(duì)性能數(shù)據(jù)進(jìn)行記錄,將性能數(shù)據(jù)發(fā)送到目標(biāo)控制單元;用于進(jìn)行數(shù)據(jù)收集的控制單元包括:監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)代理節(jié)點(diǎn)的性能數(shù)據(jù);回傳單元,用于根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行回傳。通過(guò)本申請(qǐng),能夠提供一種可以共享、支持多測(cè)試任務(wù)的壓力測(cè)試方案。
【專利說(shuō)明】壓力測(cè)試系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及軟件測(cè)試【技術(shù)領(lǐng)域】,特別是涉及壓力測(cè)試系統(tǒng)及方法。
【背景技術(shù)】
[0002]系統(tǒng)壓力測(cè)試就是指對(duì)被測(cè)系統(tǒng)不斷施加壓力的測(cè)試,是通過(guò)確定一個(gè)系統(tǒng)的瓶頸或者不能接收的性能點(diǎn),來(lái)獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。例如,測(cè)試一個(gè)Web站點(diǎn)在大量的負(fù)荷下,何時(shí)系統(tǒng)的響應(yīng)會(huì)退化或失敗。
[0003]壓力測(cè)試工具的原理是:客戶端通過(guò)多線程或多進(jìn)程模擬虛擬用戶訪問(wèn),對(duì)服務(wù)器端施加壓力,然后在過(guò)程中監(jiān)控和收集性能數(shù)據(jù)。壓力測(cè)試工具中的壓力產(chǎn)生模塊可以根據(jù)腳本內(nèi)容產(chǎn)生實(shí)際的負(fù)載,也就根用戶的設(shè)置,進(jìn)行自我復(fù)制來(lái)生成多個(gè)客戶端向服務(wù)器發(fā)送請(qǐng)求。對(duì)于壓力測(cè)試工具來(lái)說(shuō),每復(fù)制出來(lái)的一份,就是一個(gè)進(jìn)程或線程,進(jìn)程和線程的運(yùn)行是要占用系統(tǒng)資源的。所以,對(duì)于一臺(tái)壓力測(cè)試機(jī)來(lái)說(shuō),能運(yùn)行的虛擬用戶數(shù)也是有限的。如果一臺(tái)壓力測(cè)試機(jī)不能模擬足夠多的虛擬用戶,此時(shí)就要通過(guò)多臺(tái)壓力測(cè)試機(jī)合作,以模擬更多的虛擬用戶向服務(wù)器發(fā)請(qǐng)求。
[0004]傳統(tǒng)的壓力測(cè)試工具能夠通過(guò)控制臺(tái)-代理(Console-Agent)的連通從一定程度上解決了單機(jī)施壓壓力不夠的問(wèn)題。但是,這些壓力測(cè)試工具作為一種桌面應(yīng)用,只能被一個(gè)性能測(cè)試工程師獨(dú)立使用,獨(dú)占式的編寫腳本、獨(dú)占式的規(guī)劃測(cè)試,獨(dú)占式的運(yùn)行測(cè)試和分析結(jié)果,獨(dú)占式的使用多臺(tái)壓力測(cè)試機(jī)。對(duì)于一個(gè)中小型公司而言,這可能不是問(wèn)題,但是在大型互聯(lián)網(wǎng)公司中,這意味著低下的工作效率。如果想要擴(kuò)大測(cè)試團(tuán)隊(duì)規(guī)模,這意味著巨額的軟硬件成本開(kāi)銷。因?yàn)槊總€(gè)測(cè)試人員都需要有自己的測(cè)試工具,并且有一套自己的用作壓力測(cè)試機(jī)以及代理的硬件設(shè)備,這勢(shì)必造成非常嚴(yán)重的資源浪費(fèi)。
【發(fā)明內(nèi)容】
[0005]本申請(qǐng)?zhí)峁┝藟毫y(cè)試系統(tǒng)及方法,能夠提供一種可以共享、支持多測(cè)試任務(wù)的壓力測(cè)試方案。
[0006]本申請(qǐng)?zhí)峁┝巳缦路桨?
[0007]一種壓力測(cè)試系統(tǒng),所述系統(tǒng)包括由至少一個(gè)控制節(jié)點(diǎn)以及至少一個(gè)代理節(jié)點(diǎn)組成的集群,其中:
[0008]所述控制節(jié)點(diǎn)包括用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)以及用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn);
[0009]所述用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)包括:
[0010]外部消息接收單元,用于接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息;
[0011]節(jié)點(diǎn)確定單元,用于確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn);
[0012]內(nèi)部消息生成單元,用于根據(jù)所述業(yè)務(wù)控制消息以及目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn)的信息,生成第一內(nèi)部消息和/或第二內(nèi)部消息;
[0013]消息發(fā)送單元,用于將所述第一內(nèi)部消息發(fā)送到所述目標(biāo)控制節(jié)點(diǎn),和/或,將所述第二內(nèi)部消息發(fā)送到所述目標(biāo)代理節(jié)點(diǎn);
[0014]所述代理節(jié)點(diǎn)包括:
[0015]任務(wù)執(zhí)行單元,用于根據(jù)接收到的第二內(nèi)部消息對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作;
[0016]數(shù)據(jù)收集單元,用于對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄;
[0017]數(shù)據(jù)發(fā)送單元,用于將記錄的性能數(shù)據(jù)發(fā)送到所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元;
[0018]所述用于進(jìn)行數(shù)據(jù)收集的控制單元包括:
[0019]監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)所述代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù);
[0020]回傳單元,用于根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)回傳。
[0021]一種壓力測(cè)試方法,其特征在于,包括:
[0022]接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息;
[0023]確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)占.
[0024]根據(jù)所述業(yè)務(wù)控制消息以及目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn)的信息,生成第一內(nèi)部消息和/或第二內(nèi)部消息;
[0025]將所述第一內(nèi)部消息發(fā)送到所述目標(biāo)控制節(jié)點(diǎn),和/或,將所述第二內(nèi)部消息發(fā)送到所述目標(biāo)代理節(jié)點(diǎn);以便所述目標(biāo)代理節(jié)點(diǎn)根據(jù)接收到的第二內(nèi)部消息對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作,對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄,并將記錄的性能數(shù)據(jù)發(fā)送到所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元;所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元監(jiān)聽(tīng)所述目標(biāo)代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù),根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)回傳。
[0026]根據(jù)本申請(qǐng)?zhí)峁┑木唧w實(shí)施例,本申請(qǐng)公開(kāi)了以下技術(shù)效果:
[0027]通過(guò)本申請(qǐng),能夠提供一個(gè)壓力測(cè)試集群,集群中可以包括控制節(jié)點(diǎn)以及代理節(jié)點(diǎn),外部業(yè)務(wù)系統(tǒng)可以通過(guò)集群提供的服務(wù)接口向集群發(fā)送業(yè)務(wù)控制消息,集群中的控制節(jié)點(diǎn)在接收到業(yè)務(wù)控制消息之后,可以確定出用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)(數(shù)據(jù)收集節(jié)點(diǎn))和/或進(jìn)行任務(wù)執(zhí)行的代理節(jié)點(diǎn)(任務(wù)執(zhí)行節(jié)點(diǎn)),并將業(yè)務(wù)控制消息轉(zhuǎn)換為內(nèi)部消息,并將內(nèi)部消息發(fā)送到數(shù)據(jù)收集節(jié)點(diǎn)和/或任務(wù)執(zhí)行節(jié)點(diǎn);這樣,任務(wù)執(zhí)行節(jié)點(diǎn)就可以根據(jù)接收到的內(nèi)部消息執(zhí)行相應(yīng)的任務(wù)操作,并對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄,并發(fā)送到數(shù)據(jù)收集節(jié)點(diǎn);數(shù)據(jù)收集節(jié)點(diǎn)可以在監(jiān)聽(tīng)到代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù)之后,根據(jù)收集到的數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)提供相應(yīng)的數(shù)據(jù),使得外部業(yè)務(wù)系統(tǒng)獲得壓力測(cè)試結(jié)果。可見(jiàn),通過(guò)這種方式,使得多個(gè)外部業(yè)務(wù)系統(tǒng)能夠共享該壓力測(cè)試集群,這樣,可以避免在壓力測(cè)試過(guò)程中對(duì)軟硬件資源造成的浪費(fèi)。
[0028]另外,集群中的各個(gè)節(jié)點(diǎn)可以通過(guò)節(jié)點(diǎn)注冊(cè)表來(lái)維護(hù)集群中的節(jié)點(diǎn)信息,并且可以在節(jié)點(diǎn)加入或退出集群時(shí),向集群中的其他節(jié)點(diǎn)進(jìn)行通知,使得集群中的其他節(jié)點(diǎn)可以更新節(jié)點(diǎn)注冊(cè)表,即使某節(jié)點(diǎn)發(fā)生宕機(jī),集群也可在檢測(cè)到后將其剔除,使得壓力測(cè)試集群中的節(jié)點(diǎn)的維護(hù)成本幾乎可以忽略不計(jì)。
[0029]再者,在代理節(jié)點(diǎn)具體進(jìn)行任務(wù)執(zhí)行時(shí),如果一個(gè)測(cè)試任務(wù)包括多個(gè)場(chǎng)景,則可以以場(chǎng)景為單位創(chuàng)建測(cè)試進(jìn)程,然后在進(jìn)程中,根據(jù)對(duì)應(yīng)場(chǎng)景中需要模擬的虛擬用戶數(shù)創(chuàng)建相應(yīng)數(shù)目的測(cè)試線程,這樣可以避免過(guò)多的占用代理節(jié)點(diǎn)的資源,提高集群的性能。
[0030]當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
【專利附圖】
【附圖說(shuō)明】
[0031]為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0032]圖1是本申請(qǐng)實(shí)施例提供的第一系統(tǒng)的示意圖;
[0033]圖2是本申請(qǐng)實(shí)施例提供的第二系統(tǒng)的示意圖;
[0034]圖3是本申請(qǐng)實(shí)施例提供的第三系統(tǒng)的示意圖;
[0035]圖4是本申請(qǐng)實(shí)施例提供的第四系統(tǒng)的示意圖;
[0036]圖5是本申請(qǐng)實(shí)施例提供的方法的流程圖。
【具體實(shí)施方式】
[0037]下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。
[0038]在本申請(qǐng)實(shí)施例中,提供了一種用于進(jìn)行壓力測(cè)試的集群,并將啟動(dòng)測(cè)試任務(wù)(腳本執(zhí)行)、停止測(cè)試任務(wù)、暫停測(cè)試任務(wù)、繼續(xù)測(cè)試任務(wù)、測(cè)試進(jìn)程/線程管理(虛擬用戶數(shù)的修改,包括增加或者減少)和數(shù)據(jù)統(tǒng)計(jì)等抽象出來(lái)作為服務(wù)對(duì)外提供,外部業(yè)務(wù)系統(tǒng)可以通過(guò)這些服務(wù)向壓力測(cè)試集群提交測(cè)試任務(wù),并進(jìn)行后續(xù)的控制、管理等操作。因此,外部業(yè)務(wù)系統(tǒng)可以不用再單獨(dú)部署壓力測(cè)試所需的硬件系統(tǒng),并且,壓力測(cè)試集群可以同時(shí)接收并執(zhí)行多個(gè)測(cè)試任務(wù),相當(dāng)于提供了一種可以共享、實(shí)時(shí)在線、支持多測(cè)試任務(wù)的壓力測(cè)試系統(tǒng)。
[0039]在集群內(nèi)部,由控制節(jié)點(diǎn)和代理節(jié)點(diǎn)構(gòu)成,每個(gè)節(jié)點(diǎn)都是一個(gè)獨(dú)立的運(yùn)行單元??刂乒?jié)點(diǎn)又可以分為用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn),以及用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)。當(dāng)然,這屬于邏輯上的劃分,在實(shí)際應(yīng)用中,對(duì)于同一個(gè)測(cè)試任務(wù)而言,用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)與用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)可能是同一個(gè)控制節(jié)點(diǎn)。其中,用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)可以通過(guò)消息機(jī)制接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制信息,然后產(chǎn)生多條集群內(nèi)部消息發(fā)送給用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)和/或代理節(jié)點(diǎn)進(jìn)行處理。代理節(jié)點(diǎn)可以根據(jù)接收到的內(nèi)部消息,產(chǎn)生和管理實(shí)際的任務(wù)執(zhí)行進(jìn)程,同時(shí)負(fù)責(zé)在節(jié)點(diǎn)粒度上匯總一個(gè)任務(wù)的多個(gè)執(zhí)行進(jìn)程所產(chǎn)生的性能數(shù)據(jù),并發(fā)送到用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)。用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)可以接收代理節(jié)點(diǎn)執(zhí)行任務(wù)時(shí)產(chǎn)生的結(jié)果數(shù)據(jù)。如果同一個(gè)測(cè)試任務(wù)由多個(gè)代理節(jié)點(diǎn)執(zhí)行,那么數(shù)據(jù)會(huì)在用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)處進(jìn)行匯總,然后用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)會(huì)將數(shù)據(jù)通過(guò)外部接口回傳給外部業(yè)務(wù)系統(tǒng);或者,可以對(duì)收集到的數(shù)據(jù)按照一定的采樣頻率進(jìn)行采樣,然后將采樣結(jié)果回傳到外部業(yè)務(wù)系統(tǒng)。
[0040]參見(jiàn)圖1,本申請(qǐng)實(shí)施例提供了一種壓力測(cè)試系統(tǒng),該系統(tǒng)包括至少一個(gè)控制節(jié)點(diǎn)以及至少一個(gè)代理節(jié)點(diǎn)103,其中,控制節(jié)點(diǎn)包括用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)101以及用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)102,用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)101具體可以包括:
[0041]外部消息接收單元1011,用于接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息;
[0042]節(jié)點(diǎn)確定單元1012,用于確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行腳本執(zhí)行的目標(biāo)代理節(jié)點(diǎn);
[0043]內(nèi)部消息生成單元1013,用于根據(jù)所述業(yè)務(wù)控制消息以及目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn)的信息,生成待發(fā)送到目標(biāo)控制節(jié)點(diǎn)的第一內(nèi)部消息和/或待發(fā)送到目標(biāo)代理節(jié)點(diǎn)的第二內(nèi)部消息;
[0044]消息發(fā)送單元1014,用于將所述第一內(nèi)部消息發(fā)送到所述目標(biāo)控制節(jié)點(diǎn),和/或,將所述第二內(nèi)部消息發(fā)送到所述目標(biāo)代理節(jié)點(diǎn);
[0045]所述代理節(jié)點(diǎn)103包括:
[0046]任務(wù)執(zhí)行單元1031,用于根據(jù)接收到的第二內(nèi)部消息對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作;
[0047]數(shù)據(jù)收集單元1032,用于對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄;
[0048]數(shù)據(jù)發(fā)送單元1033,用于將記錄的性能數(shù)據(jù)發(fā)送到所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單兀;
[0049]所述用于進(jìn)行數(shù)據(jù)收集的控制單元102包括:
[0050]監(jiān)聽(tīng)單元1021,用于監(jiān)聽(tīng)所述代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù);
[0051]回傳單元1022,用于根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)回傳。
[0052]本申請(qǐng)實(shí)施例提供的壓力測(cè)試集群的重點(diǎn)是消息機(jī)制,集群通過(guò)消息與外部系統(tǒng)通信,降低系統(tǒng)間的耦合,使得平臺(tái)接入變得簡(jiǎn)單;集群內(nèi)部通過(guò)消息互通各個(gè)節(jié)點(diǎn)的狀態(tài)并進(jìn)行業(yè)務(wù)傳遞。但這兩種消息有著很大的區(qū)別,為便于描述,可以將前者稱為外部消息,后者稱為內(nèi)部消息。集群的外部消息可以采用AMQP(Advanced Message QueuingProtocol,高級(jí)消息隊(duì)列協(xié)議)消息協(xié)議,可以使用如RabbitMQ(是一種開(kāi)源消息隊(duì)列系統(tǒng),用erlang語(yǔ)言開(kāi)發(fā))這樣的消息中間件來(lái)實(shí)施。內(nèi)部消息可以使用JGroups實(shí)現(xiàn),JGroups是一個(gè)開(kāi)源的純JAVA編寫的可靠的群組通訊工具包,利用JGroups,壓力測(cè)試集群中的節(jié)點(diǎn)可以方便的實(shí)現(xiàn)消息單播和組播。
[0053]例如,具體實(shí)現(xiàn)時(shí),壓力測(cè)試集群中的控制節(jié)點(diǎn)可以通過(guò)AMQP消息協(xié)議與外部業(yè)務(wù)系統(tǒng)進(jìn)行被動(dòng)連接,通過(guò)監(jiān)聽(tīng)特定的消息隊(duì)列來(lái)處理外部消息。外部消息被轉(zhuǎn)換成為集群內(nèi)部消息,如果是腳本執(zhí)行或者壓力(壓力測(cè)試進(jìn)程/線程)控制相關(guān)的消息會(huì)發(fā)送給特定的代理節(jié)點(diǎn),如果是數(shù)據(jù)收集、采樣相關(guān)的消息則發(fā)送給相應(yīng)的控制節(jié)點(diǎn)。壓力測(cè)試集群中的代理節(jié)點(diǎn)負(fù)責(zé)控制具體的壓測(cè)進(jìn)程/線程的生命周期,進(jìn)程/線程產(chǎn)生原始數(shù)據(jù)通過(guò)消息傳送到負(fù)責(zé)數(shù)據(jù)收集的控制節(jié)點(diǎn),最終由控制節(jié)點(diǎn)通過(guò)消息或者RPC接口返回給外部業(yè)務(wù)系統(tǒng),使得外部業(yè)務(wù)系統(tǒng)獲取到壓力測(cè)試相關(guān)的性能數(shù)據(jù)。
[0054]其中,如果用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)101接收到的業(yè)務(wù)控制消息是啟動(dòng)測(cè)試任務(wù)的啟動(dòng)消息,則該啟動(dòng)消息中可以攜帶多方面的信息,例如,包括測(cè)試任務(wù)的信息(例如,外部業(yè)務(wù)系統(tǒng)的服務(wù)器地址等)、測(cè)試時(shí)使用的測(cè)試腳本、需要模擬的虛擬用戶數(shù)等等。在實(shí)際應(yīng)用中,對(duì)于同一個(gè)測(cè)試任務(wù)而言,可能需要在多種場(chǎng)景下進(jìn)行測(cè)試,例如,在對(duì)某Web服務(wù)進(jìn)行測(cè)試時(shí),可以在用戶瀏覽網(wǎng)頁(yè)的場(chǎng)景下模擬多個(gè)虛擬用戶,同時(shí)還需要在購(gòu)買網(wǎng)頁(yè)中的商品的場(chǎng)景下模擬多個(gè)虛擬用戶。此時(shí),可針對(duì)各個(gè)不同的場(chǎng)景分別提供測(cè)試腳本,在向壓力測(cè)試集群發(fā)送啟動(dòng)消息時(shí),可攜帶測(cè)試任務(wù)包括的場(chǎng)景、各個(gè)場(chǎng)景對(duì)應(yīng)的測(cè)試腳本、各個(gè)場(chǎng)景下需要模擬的虛擬用戶數(shù)等信息。
[0055]控制節(jié)點(diǎn)101在接收到啟動(dòng)消息時(shí),參見(jiàn)圖2,其節(jié)點(diǎn)確定單元1012可以包括--節(jié)點(diǎn)選擇子單元10121,用于從各個(gè)控制節(jié)點(diǎn)中選擇出用于針對(duì)此次測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn),從各個(gè)代理節(jié)點(diǎn)中選擇出用于執(zhí)行此次測(cè)試任務(wù)的目標(biāo)代理節(jié)點(diǎn)。然后就可以根據(jù)選擇出的控制節(jié)點(diǎn)及代理節(jié)點(diǎn)生成內(nèi)部消息,然后將部分內(nèi)部消息發(fā)送到用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)102,將測(cè)試任務(wù)的標(biāo)識(shí)和執(zhí)行該測(cè)試任務(wù)的代理節(jié)點(diǎn)103的信息發(fā)送給控制節(jié)點(diǎn)102,以便通知對(duì)應(yīng)的控制節(jié)點(diǎn)102需要對(duì)哪個(gè)測(cè)試任務(wù)的數(shù)據(jù)進(jìn)行收集,并對(duì)執(zhí)行該測(cè)試任務(wù)的代理節(jié)點(diǎn)103進(jìn)行監(jiān)聽(tīng),以便收集代理節(jié)點(diǎn)103在執(zhí)行測(cè)試任務(wù)的過(guò)程中產(chǎn)生的性能數(shù)據(jù)。
[0056]另外一部分內(nèi)部消息發(fā)送到用于執(zhí)行此次測(cè)試任務(wù)的代理節(jié)點(diǎn)103,將需要執(zhí)行的測(cè)試腳本、需要模擬的虛擬用戶的數(shù)目等信息發(fā)送到代理節(jié)點(diǎn)103。相應(yīng)的,代理節(jié)點(diǎn)103中的任務(wù)執(zhí)行單元1031可以包括:腳本執(zhí)行子單元10311,用于根據(jù)接收到的第二內(nèi)部消息執(zhí)行測(cè)試任務(wù)的測(cè)試腳本。如果一個(gè)測(cè)試任務(wù)包括多個(gè)場(chǎng)景,則還可將場(chǎng)景信息以及各個(gè)場(chǎng)景與測(cè)試腳本之間的對(duì)應(yīng)關(guān)系、各個(gè)場(chǎng)景中需要模擬的虛擬用戶數(shù)等信息發(fā)送到代理節(jié)點(diǎn)103。這樣,代理節(jié)點(diǎn)103就可以以創(chuàng)建測(cè)試進(jìn)程,并執(zhí)行對(duì)應(yīng)的測(cè)試腳本。
[0057]在實(shí)際應(yīng)用中,如果一個(gè)測(cè)試任務(wù)需要模擬的場(chǎng)景、用戶數(shù)目的規(guī)模非常大,或者各個(gè)代理節(jié)點(diǎn)的資源利用率都已經(jīng)比較高的情況下,則可能會(huì)將一個(gè)測(cè)試任務(wù)分配到多個(gè)不同的代理節(jié)點(diǎn)上執(zhí)行。但是,對(duì)于同一個(gè)測(cè)試任務(wù)而言,用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)可以只有一個(gè),這樣,可以使得同一個(gè)測(cè)試任務(wù)在不同的代理節(jié)點(diǎn)上執(zhí)行時(shí)獲取到的性能數(shù)據(jù)被匯總到控制節(jié)點(diǎn)中,然后再回傳到外部業(yè)務(wù)系統(tǒng)。也就是說(shuō),用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)102還可以包括:數(shù)據(jù)匯總單元,用于將各個(gè)代理節(jié)點(diǎn)發(fā)送的關(guān)于同一測(cè)試任務(wù)的性能數(shù)據(jù)進(jìn)行匯總。
[0058]而控制節(jié)點(diǎn)101在接收到啟動(dòng)測(cè)試任務(wù)的啟動(dòng)消息之后,一個(gè)主要的邏輯就是如何選擇出用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)102(稱為數(shù)據(jù)收集節(jié)點(diǎn))和用于執(zhí)行測(cè)試任務(wù)的代理節(jié)點(diǎn)103(任務(wù)執(zhí)行節(jié)點(diǎn))。具體實(shí)現(xiàn)時(shí),可以維護(hù)一個(gè)設(shè)計(jì)對(duì)象,例如節(jié)點(diǎn)注冊(cè)表,這樣,控制節(jié)點(diǎn)101在進(jìn)行消息轉(zhuǎn)換處理的過(guò)程中,就可以通過(guò)調(diào)用節(jié)點(diǎn)注冊(cè)表的接口方法來(lái)獲取可用的數(shù)據(jù)收集節(jié)點(diǎn)和任務(wù)執(zhí)行節(jié)點(diǎn)。
[0059]其中,節(jié)點(diǎn)注冊(cè)表中包含當(dāng)前集群中所有節(jié)點(diǎn)的相關(guān)信息,各個(gè)節(jié)點(diǎn)可以按照節(jié)點(diǎn)類別存放在AGENT_F0RM和C0NTR0LLER_F0RM兩個(gè)列表中,AGENT_F0RM列表用于存放各個(gè)代理節(jié)點(diǎn)的相關(guān)信息,C0NTR0LLER_F0RM列表用于存放各個(gè)控制節(jié)點(diǎn)的相關(guān)信息。當(dāng)有節(jié)點(diǎn)加入或者離開(kāi)集群時(shí),都會(huì)向集群中的各個(gè)現(xiàn)有節(jié)點(diǎn)發(fā)送通知消息,相應(yīng)的,集群中的現(xiàn)有節(jié)點(diǎn)都會(huì)收到消息通知,對(duì)節(jié)點(diǎn)注冊(cè)表進(jìn)行更新。
[0060]另外,集群中的每個(gè)節(jié)點(diǎn)都可以按照一定頻率(例如5S、10S等)將自身的資源使用信息通過(guò)消息組播發(fā)送到其他節(jié)點(diǎn)。在處理啟動(dòng)消息的過(guò)程中,節(jié)點(diǎn)注冊(cè)表的nextAgent和nextController方法可以被調(diào)用,用來(lái)分配節(jié)點(diǎn)給當(dāng)前測(cè)試任務(wù)和場(chǎng)景。在這些方法中,可以首先對(duì)節(jié)點(diǎn)表進(jìn)行權(quán)重排序,然后選擇權(quán)重最低的節(jié)點(diǎn)來(lái)分配。其中,一個(gè)節(jié)點(diǎn)的權(quán)重可以通過(guò)計(jì)算該節(jié)點(diǎn)的資源利用率來(lái)實(shí)現(xiàn)。在實(shí)現(xiàn)過(guò)程中,具體可以采用磁盤利用率和內(nèi)存利用率作為閾值,例如,當(dāng)磁盤利用率超過(guò)90 %,可用物理內(nèi)存小于500M,則將該節(jié)點(diǎn)權(quán)重設(shè)置為極高;否則,通過(guò)計(jì)算當(dāng)前節(jié)點(diǎn)的負(fù)載和CPU利用率得出權(quán)重值:負(fù)載越低、(PU利用率越低則計(jì)算出的權(quán)重越低。在為當(dāng)前測(cè)試任務(wù)選擇控制節(jié)點(diǎn)及代理節(jié)點(diǎn)時(shí),就可以根據(jù)計(jì)算出的各個(gè)節(jié)點(diǎn)的權(quán)重,進(jìn)行選擇。
[0061]也就是說(shuō),前文所述節(jié)點(diǎn)選擇子單元可以包括:
[0062]資源利用率信息接收子單元,用于接收集群中的各個(gè)節(jié)點(diǎn)通過(guò)消息組播的方式按照指定頻率向集群中的其他節(jié)點(diǎn)發(fā)送的消息,所述消息中攜帶有各個(gè)節(jié)點(diǎn)自身的資源利用率信息;
[0063]選擇子單元,用于根據(jù)當(dāng)前接收到的各個(gè)節(jié)點(diǎn)的資源利用率,選擇出資源利用率符合預(yù)置條件的節(jié)點(diǎn)作為所述目標(biāo)控制節(jié)點(diǎn)以及目標(biāo)代理節(jié)點(diǎn)。
[0064]在實(shí)際應(yīng)用中,在為一個(gè)測(cè)試任務(wù)選擇了收據(jù)收集節(jié)點(diǎn)以及任務(wù)執(zhí)行節(jié)點(diǎn)之后,還可以將該測(cè)試任務(wù)的標(biāo)識(shí)信息(例如,任務(wù)ID,用來(lái)唯一標(biāo)識(shí)一個(gè)任務(wù),集群中不允許同時(shí)運(yùn)行多個(gè)相同ID的測(cè)試任務(wù))以及對(duì)應(yīng)的節(jié)點(diǎn)分配情況添加到任務(wù)注冊(cè)表中。在任務(wù)注冊(cè)表中維護(hù)從任務(wù)ID到數(shù)據(jù)收集信息以及任務(wù)執(zhí)行信息的映射。如果一個(gè)測(cè)試任務(wù)中包括多個(gè)場(chǎng)景,則每個(gè)場(chǎng)景也可以有對(duì)應(yīng)的場(chǎng)景標(biāo)識(shí)信息(例如場(chǎng)景ID)。例如,某測(cè)試任務(wù)T包括三個(gè)場(chǎng)景,其中,場(chǎng)景I和場(chǎng)景2被分配到代理節(jié)點(diǎn)A上執(zhí)行,場(chǎng)景3被分配到代理節(jié)點(diǎn)B上執(zhí)行,并分配控制節(jié)點(diǎn)C作為收集數(shù)據(jù)的節(jié)點(diǎn),則在任務(wù)注冊(cè)表中可以添加以下信息:
[0065]任務(wù)ID:T
[0066]場(chǎng)景ID:1,任務(wù)執(zhí)行節(jié)點(diǎn):代理節(jié)點(diǎn)A ;
[0067]場(chǎng)景ID:2,任務(wù)執(zhí)行節(jié)點(diǎn):代理節(jié)點(diǎn)A ;
[0068]場(chǎng)景ID: 3,任務(wù)執(zhí)行節(jié)點(diǎn):代理節(jié)點(diǎn)B ;
[0069]數(shù)據(jù)收集節(jié)點(diǎn):控制節(jié)點(diǎn)C。
[0070]也即,用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)還可包括:任務(wù)注冊(cè)單元,用于保存待測(cè)任務(wù)的標(biāo)識(shí)信息與分配給待測(cè)任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,生成任務(wù)注冊(cè)表;所述分配給待測(cè)任務(wù)的節(jié)點(diǎn)包括用于對(duì)待測(cè)任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行測(cè)任務(wù)各個(gè)場(chǎng)景的測(cè)試腳本的代理節(jié)點(diǎn)。
[0071]需要說(shuō)明的是,任務(wù)注冊(cè)表和節(jié)點(diǎn)注冊(cè)表可以通過(guò)集群消息同步機(jī)制在集群中每個(gè)節(jié)點(diǎn)上被實(shí)時(shí)同步,所以任何一個(gè)節(jié)點(diǎn)都可以有集群中當(dāng)前所有的任務(wù)運(yùn)行信息和節(jié)點(diǎn)信息。
[0072]由于對(duì)各個(gè)測(cè)試任務(wù)的標(biāo)識(shí)以及節(jié)點(diǎn)分配信息保存在任務(wù)注冊(cè)表中,因此,外部業(yè)務(wù)系統(tǒng)可以向集群發(fā)送消息對(duì)指定的測(cè)試任務(wù)進(jìn)行管理或控制,相應(yīng)的,集群在接收到外部業(yè)務(wù)系統(tǒng)的管理或者控制消息時(shí),就可以根據(jù)指定測(cè)試任務(wù)的標(biāo)識(shí)信息在任務(wù)注冊(cè)表中找到對(duì)應(yīng)的節(jié)點(diǎn)分配信息,然后將對(duì)應(yīng)的節(jié)點(diǎn)發(fā)送相應(yīng)的內(nèi)部消息,以完成相應(yīng)的管理或控制。
[0073]例如,外部業(yè)務(wù)系統(tǒng)在獲取到測(cè)試過(guò)程中的性能數(shù)據(jù)之前,無(wú)法獲知多少用戶訪問(wèn)時(shí)會(huì)達(dá)到系統(tǒng)的臨界點(diǎn),因此,預(yù)先設(shè)定的需要模擬的虛擬用戶數(shù)一般只是一個(gè)估計(jì)值,而在測(cè)試過(guò)程中,得到一些性能數(shù)據(jù)之后,可能需要多次反復(fù)修改虛擬用戶數(shù),以便最終得到相對(duì)準(zhǔn)確的臨界點(diǎn)。也就是說(shuō),在啟動(dòng)一個(gè)測(cè)試任務(wù)之后,可能需要對(duì)虛擬用戶數(shù)進(jìn)行增加或者減少。此時(shí),外部業(yè)務(wù)系統(tǒng)就可以根據(jù)壓力測(cè)試集群提供的修改虛擬用戶數(shù)服務(wù),向集群發(fā)出相應(yīng)的消息,并攜帶測(cè)試任務(wù)的標(biāo)識(shí)信息,以及修改后的虛擬用戶數(shù),如果存在多個(gè)場(chǎng)景,還可以攜帶各個(gè)場(chǎng)景下分別對(duì)應(yīng)的修改后的虛擬用戶數(shù),當(dāng)然,也可以針對(duì)一個(gè)測(cè)試任務(wù)中的部分場(chǎng)景,進(jìn)行虛擬用戶數(shù)的修改??刂乒?jié)點(diǎn)101在收到該消息之后,就可以根據(jù)消息中攜帶的測(cè)試任務(wù)的標(biāo)識(shí)信息,在任務(wù)注冊(cè)表中查詢到分配給該測(cè)試任務(wù)的代理節(jié)點(diǎn)的信息,然后根據(jù)需要修改的虛擬用戶數(shù),向?qū)?yīng)的代理節(jié)點(diǎn)發(fā)送相應(yīng)的內(nèi)部消息,以便代理節(jié)點(diǎn)通過(guò)改變測(cè)試線程的數(shù)量,來(lái)將虛擬用戶數(shù)修改為對(duì)應(yīng)的數(shù)量。如果用于修改虛擬用戶數(shù)的消息中還攜帶有場(chǎng)景標(biāo)識(shí)信息,則可以分別向任務(wù)注冊(cè)表中各個(gè)場(chǎng)景標(biāo)識(shí)對(duì)應(yīng)的代理節(jié)點(diǎn)發(fā)送內(nèi)部消息。
[0074]參見(jiàn)圖3,節(jié)點(diǎn)確定單元1012可以包括:第一節(jié)點(diǎn)查詢子單元10122,用于根據(jù)所述指定測(cè)試任務(wù)查詢?nèi)蝿?wù)注冊(cè)表,獲知為所述指定測(cè)試任務(wù)的所述指定場(chǎng)景分配的代理節(jié)點(diǎn)。相應(yīng)的,任務(wù)執(zhí)行單元1031可以包括:修改執(zhí)行子單元10312,用于根據(jù)接收到的第二內(nèi)部消息中攜帶的修改后的虛擬用戶數(shù),執(zhí)行測(cè)試腳本。
[0075]又如,外部業(yè)務(wù)系統(tǒng)還可以向集群發(fā)送停止、暫?;蚶^續(xù)某指定測(cè)試任務(wù)的消息,消息中可以攜帶指定測(cè)試任務(wù)的標(biāo)識(shí)信息,這樣,在接收到這樣的消息之后,就可以通過(guò)查詢?nèi)蝿?wù)注冊(cè)表,獲知該指定的測(cè)試任務(wù)對(duì)應(yīng)的代理節(jié)點(diǎn),然后向這個(gè)或者這些代理節(jié)點(diǎn)發(fā)送消息,以便代理節(jié)點(diǎn)控制該指定測(cè)試任務(wù)的操作,例如停止、暫停或者繼續(xù)執(zhí)行等。也就是說(shuō),參見(jiàn)圖4,節(jié)點(diǎn)確定單元1012也可以包括:第二節(jié)點(diǎn)查詢子單元10123,用于根據(jù)所述指定測(cè)試任務(wù)查詢?nèi)蝿?wù)注冊(cè)表,獲知為所述指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn)。相應(yīng)的,任務(wù)執(zhí)行單元1031可以包括:控制子單元10313,用于根據(jù)接收到的第二內(nèi)部消息,控制該對(duì)應(yīng)測(cè)試任務(wù)的操作。例如,控制該對(duì)應(yīng)測(cè)試任務(wù)的停止、暫?;蚶^續(xù)等。
[0076]另外,外部業(yè)務(wù)系統(tǒng)還可以向集群發(fā)送獲取指定測(cè)試任務(wù)的任務(wù)處理日志的消息,此時(shí),可以根據(jù)任務(wù)注冊(cè)表查找到該指定測(cè)試任務(wù)對(duì)應(yīng)的數(shù)據(jù)收集節(jié)點(diǎn),然后向該數(shù)據(jù)收集節(jié)點(diǎn)發(fā)送內(nèi)部消息,通知數(shù)據(jù)收集節(jié)點(diǎn)向外部業(yè)務(wù)系統(tǒng)發(fā)送任務(wù)處理日志,等等。
[0077]需要說(shuō)明的是,在本申請(qǐng)實(shí)施例中,控制節(jié)點(diǎn)101的外部消息接收單元1011可以同時(shí)接收多個(gè)外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息,也就是說(shuō),可以做到多個(gè)外部業(yè)務(wù)系統(tǒng)之間的共享。
[0078]在本申請(qǐng)實(shí)施例提供的測(cè)試集群進(jìn)行各個(gè)外部業(yè)務(wù)系統(tǒng)的測(cè)試任務(wù)的過(guò)程中,對(duì)操作有時(shí)序性要求的場(chǎng)景不多,并且只限于對(duì)同一個(gè)測(cè)試任務(wù)的操作。也就是說(shuō),在多數(shù)情況下,測(cè)試集群可以對(duì)接收到的消息采用異步處理的方式,但是針對(duì)同一測(cè)試任務(wù)而言,測(cè)試集群可以采用集群鎖等機(jī)制保證同一時(shí)刻同一個(gè)任務(wù)只允許有一個(gè)消息在處理,這樣就基本消除了發(fā)生反序處理同一任務(wù)消息的可能性。
[0079]其中,可能采用異步方式處理的消息一般是指相互之間沒(méi)有依賴關(guān)系的消息,如果消息之間存在依賴性,則需要采用同步的方式進(jìn)行處理。例如,對(duì)于集群中的狀態(tài)消息(例如,代理節(jié)點(diǎn)的狀態(tài)匯報(bào)信息需要通知集群中的所有控制節(jié)點(diǎn))和數(shù)據(jù)消息(例如,代理節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)消息需要發(fā)送到創(chuàng)建任務(wù)的控制節(jié)點(diǎn)),這些消息的處理之間沒(méi)有依賴關(guān)系,所以可以異步發(fā)送。異步消息層面的可靠性保證可以由消息系統(tǒng)底層的協(xié)議實(shí)現(xiàn),協(xié)議保證發(fā)送者發(fā)送的消息最終會(huì)被發(fā)送到在線的目的節(jié)點(diǎn)。這些一些控制消息之間存在一定的依賴關(guān)系,比如在啟動(dòng)測(cè)試任務(wù)過(guò)程中,控制節(jié)點(diǎn)至少需要發(fā)送以下消息:
[0080]1、任務(wù)注冊(cè)消息-集群組播
[0081]2、運(yùn)行環(huán)境初始化消息-單播至代理節(jié)點(diǎn)
[0082]a)本地目錄創(chuàng)建
[0083]b)下載依賴包
[0084]c)下載腳本
[0085]d)系統(tǒng)變量設(shè)置
[0086]3、啟動(dòng)測(cè)試消息-單播至代理節(jié)點(diǎn)
[0087]這三個(gè)操作中,后一個(gè)依賴于前一個(gè)操作的執(zhí)行結(jié)果,所以這三條消息需要順序執(zhí)行,因此,就需要使用同步消息,保證每一步執(zhí)行是正確返回再繼續(xù)發(fā)送下一條消息。其他同步消息還有壓力調(diào)整消息等,因?yàn)橥獠繕I(yè)務(wù)系統(tǒng)需要知道確切的操作執(zhí)行是否成功。
[0088]壓力測(cè)試集群中的控制節(jié)點(diǎn)可以進(jìn)行前述消息轉(zhuǎn)換、節(jié)點(diǎn)選擇、消息發(fā)送等操作,而壓力測(cè)試引擎是具體執(zhí)行測(cè)試腳本和收集原始性能數(shù)據(jù)的核心模塊。每個(gè)代理節(jié)點(diǎn)在收到啟動(dòng)測(cè)試場(chǎng)景的消息時(shí)都會(huì)創(chuàng)建一個(gè)測(cè)試進(jìn)程來(lái)執(zhí)行對(duì)應(yīng)的測(cè)試腳本,并且負(fù)責(zé)收集匯總這個(gè)進(jìn)程所產(chǎn)生的測(cè)試數(shù)據(jù)。因?yàn)闇y(cè)試是在獨(dú)立的進(jìn)程中執(zhí)行,所以腳本帶來(lái)的問(wèn)題比如死鎖、內(nèi)存溢出都不會(huì)對(duì)代理節(jié)點(diǎn)本身造成影響。
[0089]其中,如果一個(gè)測(cè)試任務(wù)包括多個(gè)場(chǎng)景,則代理節(jié)點(diǎn)可以以場(chǎng)景為單位創(chuàng)建測(cè)試進(jìn)程,然后根據(jù)各個(gè)場(chǎng)景中需要模擬的虛擬用戶數(shù),在對(duì)應(yīng)的進(jìn)程內(nèi)創(chuàng)建相應(yīng)數(shù)目的線程,在各個(gè)線程中分別執(zhí)行該場(chǎng)景對(duì)應(yīng)的測(cè)試腳本。由于線程在運(yùn)行時(shí)對(duì)資源的占用情況小于進(jìn)程,因此,這種方式可以減少對(duì)代理節(jié)點(diǎn)資源的消耗,提高測(cè)試集群的性能。也就是說(shuō),如果代理節(jié)點(diǎn)需要針對(duì)測(cè)試任務(wù)的多個(gè)場(chǎng)景進(jìn)行測(cè)試,則所述腳本執(zhí)行單元1031包括:
[0090]進(jìn)程創(chuàng)建子單元,用于以測(cè)試任務(wù)的場(chǎng)景為單位創(chuàng)建測(cè)試進(jìn)程;
[0091]線程創(chuàng)建子單元,用于在各個(gè)進(jìn)程中,根據(jù)對(duì)應(yīng)場(chǎng)景下需要模擬的虛擬用戶數(shù),創(chuàng)建對(duì)應(yīng)數(shù)目的線程;
[0092]執(zhí)行子單元,用于分別在各個(gè)線程中執(zhí)行對(duì)應(yīng)場(chǎng)景的測(cè)試腳本。
[0093]另外需要說(shuō)明的是,在本申請(qǐng)實(shí)施例的壓力測(cè)試集群中可以不必設(shè)置一個(gè)固定的主節(jié)點(diǎn)(Master)來(lái)掌控集群的節(jié)點(diǎn)信息和行為,每個(gè)節(jié)點(diǎn)在集群中都是對(duì)等的。集群中不需要配置中心單元,所以當(dāng)節(jié)點(diǎn)加入集群時(shí)不需要事先知道某個(gè)中心配置單元進(jìn)行信息注冊(cè),而是會(huì)向集群組播PING消息來(lái)獲得當(dāng)前集群節(jié)點(diǎn)信息和協(xié)調(diào)者(Coordinator)信息。集群協(xié)調(diào)者起著類似Master的角色,但這不是強(qiáng)制性要求,當(dāng)集群的協(xié)調(diào)者因?yàn)槟撤N原因失效時(shí),集群會(huì)可以通過(guò)一定的機(jī)制讓其他的節(jié)點(diǎn)自動(dòng)承擔(dān)集群協(xié)調(diào)者的角色。這樣壓力測(cè)試集群的節(jié)點(diǎn)沒(méi)有任何維護(hù)成本,啟動(dòng)即可用,如果宕機(jī),集群會(huì)自動(dòng)感知將其剔除,這些功能都可以通過(guò)JGroups的可配置協(xié)議棧來(lái)實(shí)現(xiàn)。
[0094]與本申請(qǐng)實(shí)施例提供的壓力測(cè)試系統(tǒng)相對(duì)應(yīng),本申請(qǐng)實(shí)施例還提供了一種壓力測(cè)試方法,該方法介紹的是用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)在壓力測(cè)試過(guò)程中的處理流程,也即,各個(gè)步驟的執(zhí)行主體為用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)。參見(jiàn)圖5,該方法可以包括以下步驟:
[0095]S501:接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息;
[0096]S502:確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn);
[0097]S503:根據(jù)所述業(yè)務(wù)控制消息以及目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn)的信息,生成第一內(nèi)部消息和/或第二內(nèi)部消息;
[0098]S504:將所述第一內(nèi)部消息發(fā)送到所述目標(biāo)控制節(jié)點(diǎn),和/或,將所述第二內(nèi)部消息發(fā)送到所述目標(biāo)代理節(jié)點(diǎn);以便所述目標(biāo)代理節(jié)點(diǎn)根據(jù)接收到的第二內(nèi)部消息對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作,對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄,并將記錄的性能數(shù)據(jù)發(fā)送到所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元;所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元監(jiān)聽(tīng)所述目標(biāo)代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù),根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)回傳。
[0099]其中,如果業(yè)務(wù)控制消息是用于啟動(dòng)某測(cè)試任務(wù)的啟動(dòng)消息,則啟動(dòng)消息中攜帶有測(cè)試任務(wù)的信息、測(cè)試腳本、需要模擬的虛擬用戶數(shù),此時(shí),具體在確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)以及用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn)時(shí),可以從各個(gè)控制節(jié)點(diǎn)中選擇出用于針對(duì)此次測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn),從各個(gè)代理節(jié)點(diǎn)中選擇出用于執(zhí)行此次測(cè)試任務(wù)的目標(biāo)代理節(jié)點(diǎn)。相應(yīng)的,代理節(jié)點(diǎn)可以根據(jù)接收到的第二內(nèi)部消息執(zhí)行測(cè)試任務(wù)的測(cè)試腳本。
[0100]針對(duì)啟動(dòng)消息,具體在從各個(gè)控制節(jié)點(diǎn)中選擇出用于針對(duì)此次測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn),從各個(gè)代理節(jié)點(diǎn)中選擇出用于執(zhí)行此次測(cè)試任務(wù)的目標(biāo)代理節(jié)點(diǎn)時(shí),可以接收集群中的各個(gè)節(jié)點(diǎn)通過(guò)消息組播的方式按照指定頻率向集群中的其他節(jié)點(diǎn)發(fā)送的消息,然后根據(jù)當(dāng)前接收到的各個(gè)節(jié)點(diǎn)的資源利用率,選擇出資源利用率符合預(yù)置條件的節(jié)點(diǎn)作為所述目標(biāo)控制節(jié)點(diǎn)以及目標(biāo)代理節(jié)點(diǎn),其中,所述消息中攜帶有各個(gè)節(jié)點(diǎn)自身的資源利用率信息。
[0101]為了便于后續(xù)測(cè)試過(guò)程中,執(zhí)行參數(shù)的修改等操作,用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)還可以保存測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,生成任務(wù)注冊(cè)表;所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn)。
[0102]如果業(yè)務(wù)控制消息是用于修改指定測(cè)試任務(wù)的虛擬用戶數(shù)的修改消息,所述修改消息中攜帶有所述指定測(cè)試任務(wù)的標(biāo)識(shí)信息以及修改后的虛擬用戶數(shù),則具體在確定目標(biāo)節(jié)點(diǎn)時(shí),只需要確定用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn),具體的,可以根據(jù)指定測(cè)試任務(wù)的標(biāo)識(shí)信息查詢?nèi)蝿?wù)注冊(cè)表,獲知為指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn),相應(yīng)的,代理節(jié)點(diǎn)可以根據(jù)接收到的第二內(nèi)部消息中攜帶的修改后的虛擬用戶數(shù),執(zhí)行測(cè)試腳本。
[0103]如果業(yè)務(wù)控制信息是用于對(duì)指定測(cè)試任務(wù)進(jìn)行停止、暫停、繼續(xù)的消息,所述消息中攜帶有所述指定測(cè)試任務(wù)的標(biāo)識(shí)信息,則在確定目標(biāo)節(jié)點(diǎn)時(shí),也只需要確定用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn),具體的,可以根據(jù)指定測(cè)試任務(wù)的標(biāo)識(shí)信息查詢?nèi)蝿?wù)注冊(cè)表,獲知為指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn),相應(yīng)的,代理節(jié)點(diǎn)可以根據(jù)接收到的第二內(nèi)部消息,停止、暫?;蚶^續(xù)對(duì)應(yīng)測(cè)試腳本的執(zhí)行。
[0104]另外,為了每個(gè)節(jié)點(diǎn)能夠掌握集群中的節(jié)點(diǎn)加入或退出的情況,還可以維護(hù)一節(jié)點(diǎn)注冊(cè)表,并當(dāng)接收到節(jié)點(diǎn)加入或退出集群的組播消息時(shí),對(duì)節(jié)點(diǎn)注冊(cè)表進(jìn)行更新。在實(shí)際應(yīng)用中,可以同時(shí)接收多個(gè)外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息,然后分別針對(duì)各個(gè)業(yè)務(wù)控制消息,進(jìn)行消息的轉(zhuǎn)換以及節(jié)點(diǎn)的選擇。
[0105]通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。
[0106]本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。以上所描述的系統(tǒng)及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。
[0107]以上對(duì)本申請(qǐng)所提供的壓力測(cè)試系統(tǒng)及方法,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
【權(quán)利要求】
1.一種壓力測(cè)試系統(tǒng),其特征在于,所述系統(tǒng)包括由至少一個(gè)控制節(jié)點(diǎn)以及至少一個(gè)代理節(jié)點(diǎn)組成的集群,其中: 所述控制節(jié)點(diǎn)包括用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)以及用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn); 所述用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)包括: 外部消息接收單元,用于接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息; 節(jié)點(diǎn)確定單元,用于確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn); 內(nèi)部消息生成單元,用于根據(jù)所述業(yè)務(wù)控制消息以及目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn)的信息,生成第一內(nèi)部消息和/或第二內(nèi)部消息; 消息發(fā)送單元,用于將所述第一內(nèi)部消息發(fā)送到所述目標(biāo)控制節(jié)點(diǎn),和/或,將所述第二內(nèi)部消息發(fā)送到所述目標(biāo)代理節(jié)點(diǎn); 所述代理節(jié)點(diǎn)包括: 任務(wù)執(zhí)行單元,用于根據(jù)接收到的第二內(nèi)部消息對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作; 數(shù)據(jù)收集單元,用于對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄; 數(shù)據(jù)發(fā)送單元,用于將記 錄的性能數(shù)據(jù)發(fā)送到所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元; 所述用于進(jìn)行數(shù)據(jù)收集的控制單元包括: 監(jiān)聽(tīng)單元,用于監(jiān)聽(tīng)所述代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù); 回傳單元,用于根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)回傳。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述業(yè)務(wù)控制消息包括啟動(dòng)測(cè)試任務(wù)的啟動(dòng)消息,所述啟動(dòng)消息中攜帶有測(cè)試任務(wù)的信息、測(cè)試腳本、需要模擬的虛擬用戶數(shù); 所述節(jié)點(diǎn)確定單元包括: 節(jié)點(diǎn)選擇子單元,用于從各個(gè)控制節(jié)點(diǎn)中選擇出用于針對(duì)此次測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn),從各個(gè)代理節(jié)點(diǎn)中選擇出用于執(zhí)行此次測(cè)試任務(wù)的目標(biāo)代理節(jié)點(diǎn); 所述任務(wù)執(zhí)行單元包括: 腳本執(zhí)行子單元,用于根據(jù)接收到的第二內(nèi)部消息執(zhí)行測(cè)試任務(wù)的測(cè)試腳本。
3.根據(jù)權(quán)利要求2所述的系統(tǒng),如果所述代理節(jié)點(diǎn)需要針對(duì)測(cè)試任務(wù)的多個(gè)場(chǎng)景進(jìn)行測(cè)試,則所述腳本執(zhí)行子單元包括: 進(jìn)程創(chuàng)建子單元,用于以測(cè)試任務(wù)的場(chǎng)景為單位創(chuàng)建測(cè)試進(jìn)程; 線程創(chuàng)建子單元,用于在各個(gè)進(jìn)程中,根據(jù)對(duì)應(yīng)場(chǎng)景下需要模擬的虛擬用戶數(shù),創(chuàng)建對(duì)應(yīng)數(shù)目的線程; 執(zhí)行子單元,用于分別在各個(gè)線程中執(zhí)行對(duì)應(yīng)場(chǎng)景的測(cè)試腳本。
4.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述節(jié)點(diǎn)選擇子單元包括: 資源利用率信息接收子單元,用于接收集群中的各個(gè)節(jié)點(diǎn)通過(guò)消息組播的方式按照指定頻率向集群中的其他節(jié)點(diǎn)發(fā)送的消息,所述消息中攜帶有各個(gè)節(jié)點(diǎn)自身的資源利用率信息; 選擇子單元,用于根據(jù)當(dāng)前接收到的各個(gè)節(jié)點(diǎn)的資源利用率,選擇出資源利用率符合預(yù)置條件的節(jié)點(diǎn)作為所述目標(biāo)控制節(jié)點(diǎn)以及目標(biāo)代理節(jié)點(diǎn)。
5.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,對(duì)于同一壓力測(cè)試任務(wù),用于進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)為一個(gè),用于執(zhí)行測(cè)試腳本的代理節(jié)點(diǎn)為一個(gè)或多個(gè);如果執(zhí)行測(cè)試腳本的代理節(jié)點(diǎn)為多個(gè),則所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元還包括: 數(shù)據(jù)匯總單元,用于將各個(gè)代理節(jié)點(diǎn)發(fā)送的關(guān)于同一測(cè)試任務(wù)的性能數(shù)據(jù)進(jìn)行匯總。
6.根據(jù)權(quán)利要求2所述的系統(tǒng),其特征在于,所述用于進(jìn)行消息轉(zhuǎn)換的控制節(jié)點(diǎn)還包括: 任務(wù)注冊(cè)單元,用于保存測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,生成任務(wù)注冊(cè)表;所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述業(yè)務(wù)控制信息還包括用于修改指定測(cè)試任務(wù)的虛擬用戶數(shù)的修改消息,所述修改消息中攜帶有所述指定測(cè)試任務(wù)的標(biāo)識(shí)信息以及修改后的虛擬用戶數(shù); 所述節(jié)點(diǎn)確定單元包括: 第一節(jié)點(diǎn)查詢子單元,用于根據(jù)所述指定測(cè)試任務(wù)查詢?nèi)蝿?wù)注冊(cè)表,獲知為所述指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn);所述任務(wù)注冊(cè)表中保存有測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn); 所述任務(wù)執(zhí)行單元包括: 修改執(zhí)行子單元,用于根據(jù)接收到的第二內(nèi)部消息中攜帶的修改后的虛擬用戶數(shù),執(zhí)行測(cè)試腳本。
8.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述業(yè)務(wù)控制信息包括用于對(duì)指定測(cè)試任務(wù)進(jìn)行停止、暫停、繼續(xù)的消息,所述消息中攜帶有所述指定測(cè)試任務(wù)的標(biāo)識(shí)信息; 所述節(jié)點(diǎn)確定單元包括: 第二節(jié)點(diǎn)查詢子單元,用于根據(jù)所述指定測(cè)試任務(wù)查詢?nèi)蝿?wù)注冊(cè)表,獲知為所述指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn);所述任務(wù)注冊(cè)表中保存有測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn); 所述任務(wù)執(zhí)行單元包括: 控制子單元,用于根據(jù)接收到的第二內(nèi)部消息,停止、暫停或繼續(xù)對(duì)應(yīng)測(cè)試腳本的執(zhí)行。
9.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的系統(tǒng),其特征在于,所述集群中的各個(gè)節(jié)點(diǎn)還包括: 節(jié)點(diǎn)注冊(cè)表維護(hù)單元,用于維護(hù)一節(jié)點(diǎn)注冊(cè)表,并當(dāng)接收到節(jié)點(diǎn)加入或退出集群的組播消息時(shí),對(duì)節(jié)點(diǎn)注冊(cè)表進(jìn)行更新。
10.根據(jù)權(quán)利要求1至8任一項(xiàng)所述的系統(tǒng),其特征在于,所述外部消息接收單元,用于接收多個(gè)外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息。
11.一種壓力測(cè)試方法,其特征在于,包括: 接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息; 確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn);根據(jù)所述業(yè)務(wù)控制消息以及目標(biāo)控制節(jié)點(diǎn)和/或目標(biāo)代理節(jié)點(diǎn)的信息,生成第一內(nèi)部消息和/或第二內(nèi)部消息; 將所述第一內(nèi)部消息發(fā)送到所述目標(biāo)控制節(jié)點(diǎn),和/或,將所述第二內(nèi)部消息發(fā)送到所述目標(biāo)代理節(jié)點(diǎn);以便所述目標(biāo)代理節(jié)點(diǎn)根據(jù)接收到的第二內(nèi)部消息對(duì)測(cè)試任務(wù)執(zhí)行相應(yīng)的操作,對(duì)任務(wù)執(zhí)行過(guò)程中產(chǎn)生的性能數(shù)據(jù)進(jìn)行記錄,并將記錄的性能數(shù)據(jù)發(fā)送到所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元;所述用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制單元監(jiān)聽(tīng)所述目標(biāo)代理節(jié)點(diǎn)發(fā)送的性能數(shù)據(jù),根據(jù)收集到的性能數(shù)據(jù)向外部業(yè)務(wù)系統(tǒng)進(jìn)行數(shù)據(jù)回傳。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述業(yè)務(wù)控制消息包括啟動(dòng)測(cè)試任務(wù)的啟動(dòng)消息,所述啟動(dòng)消息中攜帶有測(cè)試任務(wù)的信息、測(cè)試腳本、需要模擬的虛擬用戶數(shù); 所述確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn)包括: 從各個(gè)控制節(jié)點(diǎn)中選擇出用于針對(duì)此次測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn),從各個(gè)代理節(jié)點(diǎn)中選擇出用于執(zhí)行此次測(cè)試任務(wù)的目標(biāo)代理節(jié)點(diǎn),以便所述目標(biāo)代理節(jié)點(diǎn)根據(jù)接收到的第二內(nèi)部消息執(zhí)行測(cè)試任務(wù)的測(cè)試腳本。
13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述從各個(gè)控制節(jié)點(diǎn)中選擇出用于針對(duì)此次測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn),從各個(gè)代理節(jié)點(diǎn)中選擇出用于執(zhí)行此次測(cè)試任務(wù)的目標(biāo)代理節(jié)點(diǎn),包括: 接收集群中的各個(gè) 節(jié)點(diǎn)通過(guò)消息組播的方式按照指定頻率向集群中的其他節(jié)點(diǎn)發(fā)送的消息,所述消息中攜帶有各個(gè)節(jié)點(diǎn)自身的資源利用率信息; 根據(jù)當(dāng)前接收到的各個(gè)節(jié)點(diǎn)的資源利用率,選擇出資源利用率符合預(yù)置條件的節(jié)點(diǎn)作為所述目標(biāo)控制節(jié)點(diǎn)以及目標(biāo)代理節(jié)點(diǎn)。
14.根據(jù)權(quán)利要求12所述的方法,其特征在于,還包括: 保存測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,生成任務(wù)注冊(cè)表;所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn)。
15.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述業(yè)務(wù)控制信息還包括用于修改指定測(cè)試任務(wù)的虛擬用戶數(shù)的修改消息,所述修改消息中攜帶有所述指定測(cè)試任務(wù)的標(biāo)識(shí)信息以及修改后的虛擬用戶數(shù); 所述確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn)包括: 根據(jù)所述指定測(cè)試任務(wù)查詢?nèi)蝿?wù)注冊(cè)表,獲知為所述指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn);所述任務(wù)注冊(cè)表中保存有測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn);以便所述目標(biāo)代理節(jié)點(diǎn)根據(jù)接收到的第二內(nèi)部消息中攜帶的修改后的虛擬用戶數(shù),執(zhí)行測(cè)試腳本。
16.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述業(yè)務(wù)控制信息包括用于對(duì)指定測(cè)試任務(wù)進(jìn)行停止、暫停、繼續(xù)的消息,所述消息中攜帶有所述指定測(cè)試任務(wù)的標(biāo)識(shí)信息; 所述確定用于進(jìn)行數(shù)據(jù)收集的目標(biāo)控制節(jié)點(diǎn)和/或用于進(jìn)行任務(wù)執(zhí)行的目標(biāo)代理節(jié)點(diǎn)包括:根據(jù)所述指定測(cè)試任務(wù)查詢?nèi)蝿?wù)注冊(cè)表,獲知為所述指定測(cè)試任務(wù)分配的代理節(jié)點(diǎn);所述任務(wù)注冊(cè)表中保存有測(cè)試任務(wù)的標(biāo)識(shí)信息與分配給該測(cè)試任務(wù)的節(jié)點(diǎn)信息之間的對(duì)應(yīng)關(guān)系,所述分配給該測(cè)試任務(wù)的節(jié)點(diǎn)包括用于對(duì)該測(cè)試任務(wù)進(jìn)行數(shù)據(jù)收集的控制節(jié)點(diǎn)及用于執(zhí)行該測(cè)試任務(wù)的測(cè)試腳本的代理節(jié)點(diǎn);以便所述代理節(jié)點(diǎn)根據(jù)接收到的第二內(nèi)部消息,停止、暫?;蚶^續(xù)對(duì)應(yīng)測(cè)試腳本的執(zhí)行。
17.根據(jù)權(quán)利要求11至16任一項(xiàng)所述的方法,其特征在于,還包括: 維護(hù)一節(jié)點(diǎn)注冊(cè)表,并當(dāng)接收到節(jié)點(diǎn)加入或退出集群的組播消息時(shí),對(duì)節(jié)點(diǎn)注冊(cè)表進(jìn)行更新。
18.根據(jù)權(quán)利要求11至16任一項(xiàng)所述的方法,其特征在于,所述接收外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息包括: 接收多個(gè)外部業(yè)務(wù)系統(tǒng)的業(yè)務(wù)控制消息。
【文檔編號(hào)】G06F9/445GK104077212SQ201310100056
【公開(kāi)日】2014年10月1日 申請(qǐng)日期:2013年3月26日 優(yōu)先權(quán)日:2013年3月26日
【發(fā)明者】樊非 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司