基于異步并發(fā)機(jī)制的壓力測試系統(tǒng)和測試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于異步并發(fā)機(jī)制的壓力測試系統(tǒng)和測試方法,確切地說,涉及一種能夠產(chǎn)生滿足各種設(shè)定測試參數(shù)的壓力測試請求的壓力測試系統(tǒng)及其工作方法,以滿足測試系統(tǒng)產(chǎn)生設(shè)定數(shù)量的并發(fā)異步的壓力測試的需求,從而完成被測系統(tǒng)的性能壓力測試的目的;屬于計算機(jī)軟件測試的技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]壓力測試是對被測系統(tǒng)不斷地施加壓力的測試,它是通過確定一個系統(tǒng)的工作瓶頸或者不能承載接收的性能點,從而獲得系統(tǒng)能夠提供的最大服務(wù)壓力的級別測試,或者在設(shè)定時間周期內(nèi)能夠保證工作穩(wěn)定性的驗證測試。例如測試一個Web站點在大量的負(fù)荷下,何時系統(tǒng)的響應(yīng)會退化或失敗。測試壓力測試的關(guān)鍵是如何產(chǎn)生大量的壓力測試請求,以使被測系統(tǒng)達(dá)到其工作性能的瓶頸點。
[0003]作為一種基本的質(zhì)量保證行為的壓力測試,是每個重要的計算機(jī)軟件測試工作的一部分。壓力測試的基本思路很簡單:不是在常規(guī)條件下運行手動或自動測試,而是在計算機(jī)數(shù)量較少或系統(tǒng)資源匱乏的條件下執(zhí)行測試。通常要進(jìn)行壓力測試的資源包括CPU可用性、MEM可用性和網(wǎng)絡(luò)傳輸帶寬。
[0004]下面,介紹目前已有技術(shù)的計算機(jī)軟件壓力測試系統(tǒng)及其相關(guān)測試方法,主要包括以下幾種測試類型或測試方法,再說明它們各自存在的缺陷:
[0005](A)同步壓力并發(fā)機(jī)制:壓力測試系統(tǒng)向被測系統(tǒng)進(jìn)行同步壓力方式的并發(fā)請求測試,即壓力測試系統(tǒng)先向被測系統(tǒng)發(fā)出某一個壓力測試請求,在沒有得到該請求的響應(yīng)之前,測試系統(tǒng)會一直等待,直到得到被測系統(tǒng)的響應(yīng)后,才會發(fā)出新的壓力測試請求。也就是同步壓力并發(fā)機(jī)制的測試過程中,測試系統(tǒng)發(fā)送壓力測試請求,只有得到被測系統(tǒng)的響應(yīng)后,才會發(fā)起新的請求。即測試系統(tǒng)的壓力并發(fā)量取決于被測系統(tǒng)執(zhí)行壓力測試請求的功能大小,不能真正測試出被測系統(tǒng)的性能瓶頸點。
[0006](B)多線程的壓力產(chǎn)生方式:壓力測試系統(tǒng)通過線程池方式進(jìn)行壓力測試,在測試開始前,壓力測試系統(tǒng)先創(chuàng)建一個線程池,當(dāng)產(chǎn)生新的壓力測試請求時,從線程池中取得空閑線程并使用該線程產(chǎn)生新的請求。當(dāng)請求響應(yīng)或超時后,才將該線程重新放入線程池中,以供后續(xù)請求使用。因為在多線程的壓力產(chǎn)生方式中,線程的調(diào)用切換都是由操作系統(tǒng)完成的,雖然在效率上要比進(jìn)程間的切換高,但是,線程的切換仍然需要占用一定的CPU時間。再者,線程也會占用一定的系統(tǒng)資源;此外,線程的個數(shù)在理論上受到內(nèi)存的限制:通常一臺2G內(nèi)存的機(jī)器,最多只能在理論上啟動2048個線程。這些缺陷都使得測試參數(shù)受到較大限制。
[0007](C)單級并發(fā)控制機(jī)制:壓力測試系統(tǒng)只進(jìn)行單級的并發(fā)控制機(jī)制,即只能控制測試系統(tǒng)線程級別的壓力并發(fā)的測試場景。這種單級的并發(fā)控制機(jī)制只能對線程級別的并發(fā)進(jìn)行控制,對于進(jìn)程和/或測試集群的并發(fā)未加以考慮;故其應(yīng)用受到局限。
【發(fā)明內(nèi)容】
[0008]有鑒于此,本發(fā)明的目的是提供一種基于異步并發(fā)機(jī)制的壓力測試系統(tǒng)及其測試方法,本發(fā)明較好地解決了現(xiàn)有技術(shù)存在的各種問題和缺陷:無論被測系統(tǒng)是否產(chǎn)生對原來壓力測試請求的響應(yīng),本發(fā)明測試系統(tǒng)都會根據(jù)預(yù)設(shè)參數(shù)的數(shù)值,產(chǎn)生設(shè)定數(shù)量的異步恒定速率、并發(fā)機(jī)制的多個壓力測試請求,再對被測系統(tǒng)的處理能力和響應(yīng)時延執(zhí)行更加符合真實使用狀況的系統(tǒng)壓力測試和驗證。而且,本發(fā)明壓力測試系統(tǒng)的測試參數(shù)調(diào)整范圍廣,還可以選擇多種測試方式、采用進(jìn)程下的自動機(jī)和低系統(tǒng)資源開銷方式產(chǎn)生壓力測試請求,具有諸多優(yōu)點。
[0009]為了達(dá)到上述目的,本發(fā)明提供了一種基于異步并發(fā)機(jī)制的壓力測試系統(tǒng),其特征在于:該壓力測試系統(tǒng)根據(jù)預(yù)設(shè)測試參數(shù)的數(shù)值,產(chǎn)生設(shè)定參數(shù)的異步測試的壓力測試請求,用于對被測系統(tǒng)的處理能力和響應(yīng)時延進(jìn)行壓力測試,以便獲得更加符合被測系統(tǒng)真實使用狀況的壓力測試數(shù)據(jù)與測試結(jié)果的驗證;所述系統(tǒng)包括腳本管理裝置、測試管理裝置、異步壓力產(chǎn)生裝置和直接安裝在被測系統(tǒng)設(shè)備上的資源采集裝置四個組成部件;其中:
[0010]腳本管理裝置,負(fù)責(zé)根據(jù)被測系統(tǒng)的測試要求生成測試腳本,并對該測試腳本進(jìn)行編輯與驗證,再對通過驗證的測試腳本進(jìn)行統(tǒng)一的腳本管理,最后將測試腳本加載到測試管理裝置進(jìn)行處理;設(shè)有順序連接的腳本編輯組件、腳本測試組件和腳本管理加載組件共三個組成構(gòu)件;
[0011]測試管理裝置,負(fù)責(zé)接收與承載腳本管理裝置傳送來的測試腳本,生成測試任務(wù),并對該測試任務(wù)執(zhí)行異步壓力的生成管理:按照爆發(fā)式壓力、平緩式壓力、周期式壓力的一種或多種不同的壓力測試方式對被測系統(tǒng)的處理能力和響應(yīng)時延進(jìn)行異步的壓力測試請求的壓力測試;還將設(shè)定異步的壓力測試請求的測試參數(shù):包括壓力測試請求的門限值及其測試周期、并發(fā)壓力測試請求的門限值及其測試周期、以及壓力測試請求的發(fā)送方式,都發(fā)送給異步壓力產(chǎn)生裝置用于壓力測試;同時與異步壓力產(chǎn)生裝置交互信息,采集異步壓力產(chǎn)生裝置反饋的測試數(shù)據(jù),并接收來自資源采集裝置的各種資源使用信息進(jìn)行匯總處理后,再對被測系統(tǒng)的實際性能參數(shù)進(jìn)行驗證,以便實時調(diào)整壓力測試各項參數(shù)門限值;設(shè)有分別連接的測試腳本執(zhí)行組件和測試協(xié)議適配組件,測試統(tǒng)計組件和測試參數(shù)管理組件,以及匯總處理測試數(shù)據(jù)的測試任務(wù)調(diào)度組件共五個組成構(gòu)件;
[0012]異步壓力產(chǎn)生裝置,負(fù)責(zé)接收來自測試管理裝置的測試腳本、測試方式和壓力測試請求的各項數(shù)據(jù),實時生成壓力測試的具體參數(shù),將壓力測試請求發(fā)送給被測系統(tǒng),并實時動態(tài)計算每秒應(yīng)該產(chǎn)生的壓力測試請求數(shù)量,實時調(diào)整與控制測試過程中發(fā)送的壓力測試請求總數(shù)量;同時在壓力測試整個過程中實時采集與統(tǒng)計各項測試數(shù)據(jù):包括發(fā)送的壓力測試請求總數(shù)量、請求成功率,請求失敗率、請求最大響應(yīng)時延、請求最小響應(yīng)時延和平均響應(yīng)時延信息,再將全部統(tǒng)計信息返回給測試管理裝置;設(shè)有測試數(shù)據(jù)分發(fā)組件、異步處理組件、并發(fā)控制組件、測試執(zhí)行組件和測試指標(biāo)統(tǒng)計組件共五個組成構(gòu)件;
[0013]資源采集裝置,負(fù)責(zé)采集被測系統(tǒng)的各種硬件資源使用信息:至少包括CPU、內(nèi)存MEM和網(wǎng)絡(luò)接口 I/O的使用狀況、再將采集的信息返回給測試管理裝置進(jìn)行處理;設(shè)有CPU信息采集組件、MEM信息采集組件、網(wǎng)絡(luò)接口 I/O信息采集組件和數(shù)據(jù)上報組件共四個組成構(gòu)件。
[0014]為了達(dá)到上述目的,本發(fā)明還提供了一種采用本發(fā)明基于異步并發(fā)機(jī)制的壓力測試系統(tǒng)的壓力測試方法,其特征在于:腳本管理裝置根據(jù)測試對象和測試要求選擇測試腳本,如果現(xiàn)有的測試腳本不能滿足測試需求,則對測試腳本執(zhí)行編輯操作,再由測試管理裝置根據(jù)確認(rèn)后的測試腳本選擇不同壓力控制的異步請求測試方式,然后異步壓力產(chǎn)生裝置按照并發(fā)異步的壓力測試請求參數(shù)的門限值及其測試時間周期、壓力測試請求的發(fā)送方式并行發(fā)送多個請求進(jìn)行壓力測試;最后,資源采集裝置實時采集與計算統(tǒng)計壓力測試時的各種測試結(jié)果數(shù)據(jù),至少包括統(tǒng)計發(fā)送的壓力測試請求總數(shù)量、請求成功率,請求失敗率、請求最大響應(yīng)時延、請求最小響應(yīng)時延、平均響應(yīng)時延信息,CPU、MEM和網(wǎng)絡(luò)接口 I/O信息,用于驗證被測系統(tǒng)的壓力性能是否滿足設(shè)計指標(biāo);如果滿足系統(tǒng)的測試要求,則結(jié)束測試;否則,調(diào)整測試參數(shù),繼續(xù)測試;所述方法包括下列操作步驟:
[0015]步驟1,腳本管理裝置中的腳本管理加載組件先判斷現(xiàn)有的測試腳本是否滿足測試系統(tǒng)的測試要求,如果不滿足測試要求,則由腳本編輯組件與腳本測試組件分別執(zhí)行測試腳本的生成、修改、編輯與驗證,直至滿足測試要求;再將驗證合格的測試腳本加載到測試管理裝置進(jìn)行后續(xù)處理;
[0016]步驟2,測試管理裝置根據(jù)被測試系統(tǒng)設(shè)定的測試機(jī)制與測試要求,調(diào)整測試參數(shù)和選擇不同壓力控制的測試方式:測試參數(shù)管理組件設(shè)置并發(fā)異步的壓力測試請求的各項參數(shù):包括并發(fā)異步的壓力測試請求的門限值、測試時間周期、選擇按照爆發(fā)式壓力、平緩式壓力、周期式壓力的一種和/或多種方式進(jìn)行并發(fā)壓力測試;再將這些測試參數(shù)發(fā)送給異步壓力產(chǎn)生裝置;
[0017]步驟3,異步壓力產(chǎn)生裝置的異步處理組件根據(jù)被測系統(tǒng)的測試要求,在測試時間周期內(nèi),按照測試管理裝置的測試參數(shù)管理組件設(shè)置的測試參數(shù)自動生成壓力測試請求,再由測試執(zhí)行組件將這些壓力測試請求發(fā)送到被測系統(tǒng)進(jìn)行異步機(jī)制測試;
[0018]步驟4,異步壓力產(chǎn)生裝置的并發(fā)控制組件執(zhí)行進(jìn)程內(nèi)的自動機(jī)測試流程:并發(fā)控制組件接收到設(shè)定的壓力測試請求后,將該壓力測試請求下發(fā)給測試執(zhí)行組件中的處理進(jìn)程內(nèi)的自動機(jī)執(zhí)行并行處理,每個進(jìn)程同時支持多個自動機(jī)測試,每個進(jìn)程能夠最大并行處理8192個并發(fā)壓力測試請求,每個自動機(jī)獨立、自動處理完成各自測試操作,自動機(jī)之間則并行自動執(zhí)行壓力測試請求,以提高測試并發(fā)量和處理效率;
[0019]步驟5,資源采集裝置采集測試結(jié)果數(shù)據(jù),再傳送給測試管理裝置進(jìn)行統(tǒng)計分析:統(tǒng)計的測試結(jié)果數(shù)據(jù)包括:壓力測試請求的發(fā)送總數(shù)、最大響應(yīng)時延、最小響應(yīng)時延,平均響應(yīng)時延,請求成功率和請求失敗率,以及被測系統(tǒng)CPU、MEM與網(wǎng)絡(luò)接口 I/O的使用狀況;如果測試管理裝置對測試結(jié)果數(shù)據(jù)的統(tǒng)計分析的評價是測試通過,則結(jié)束測試;否則,調(diào)整測試參數(shù),返回執(zhí)行步驟3,繼續(xù)進(jìn)行后續(xù)測試。
[0020]本發(fā)明基于異步并發(fā)機(jī)制的壓力測試系統(tǒng)和測試方法主要創(chuàng)新技術(shù)是:
[0021]本發(fā)明提供了一種基于異步并發(fā)機(jī)制的壓力測試系統(tǒng)及其測試方法,不同于原來的同步并發(fā)機(jī)制,本發(fā)明測試系統(tǒng)中的每個新的壓力測試請求不是在接收到上一請求的響應(yīng)后才發(fā)送新的壓力測試請求,而是無論被測系統(tǒng)是否完成對已發(fā)送的壓力測試請求的響應(yīng),它都會根據(jù)預(yù)設(shè)的測試參數(shù),在每秒產(chǎn)生額定數(shù)量的壓力測試請求給被測系統(tǒng)。異步并發(fā)機(jī)制的主要特點是增加壓力測試請求的并發(fā)數(shù)量。當(dāng)需要產(chǎn)生新的請求時,如果沒有接收到上一請求的響應(yīng)時,可以繼續(xù)保持一段等待的時間。但是,本發(fā)明的壓力測試系統(tǒng)仍然繼續(xù)產(chǎn)生新的壓力測試請求,而且,該新的壓力測試請求將與以前已經(jīng)發(fā)送的壓力測試請求無關(guān),從而達(dá)到異步并發(fā)的目的。
[0022]本發(fā)明還提供了一種測試進(jìn)程內(nèi)多自動機(jī)的并發(fā)壓力產(chǎn)生方式。根據(jù)測試任務(wù)預(yù)定的壓力測試請求的門限值,平均分配多個自動機(jī)