一種多線程和并發(fā)測試模擬器及其測試方法
【專利摘要】本發(fā)明提出了一種多線程和并發(fā)測試模擬器及其測試方法,測試模擬器包括測試器、調(diào)度執(zhí)行器和測試執(zhí)行器,該測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,該調(diào)度執(zhí)行器與測試器相連,用于對線程進(jìn)行調(diào)度,該測試執(zhí)行器與調(diào)度執(zhí)行器相連,用于對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。本發(fā)明的測試模擬器在開發(fā)階段為開發(fā)人員提供一個(gè)有效的輕量級(jí)的,易用的測試過程模器,能夠檢測系統(tǒng)的健壯性和性能,其配置簡單,成本低。本發(fā)明的測試方法簡單易用,不需要配置腳本,也不需要專業(yè)的測試技能。
【專利說明】一種多線程和并發(fā)測試模擬器及其測試方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及應(yīng)用系統(tǒng)檢測【技術(shù)領(lǐng)域】,具體涉及一種多線程和并發(fā)測試模擬器及其測試方法。
【背景技術(shù)】
[0002]目前,對于應(yīng)用系統(tǒng)中多線程和并發(fā)的測試,通常使用JMeter或LoadRunner等專業(yè)的壓力測試工具進(jìn)行測試,其中,JMeter是Apache組織開發(fā)的基于Java的壓力測試工具,用于對軟件做壓力測試RoadRunner是一種預(yù)測系統(tǒng)行為和性能的負(fù)載測試工具,通過以模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測的方式來確認(rèn)和查找問題,LoadRunner能夠?qū)φ麄€(gè)企業(yè)架構(gòu)進(jìn)行測試。以上這兩種工具配置比較復(fù)雜,要配置腳本,成本較高,同時(shí)還需要專業(yè)的測試技能。
【發(fā)明內(nèi)容】
[0003]為了克服上述現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的是提供一種多線程和并發(fā)測試模擬器及其測試方法,該模擬器配置簡單,成本低。該測試方法針對輕量級(jí)的系統(tǒng),測試過程簡單。
[0004]為了實(shí)現(xiàn)本發(fā)明的上述目的,根據(jù)本發(fā)明的一個(gè)方面,本發(fā)明提供了一種多線程和并發(fā)測試模擬器,包括測試器、調(diào)度執(zhí)行器和測試執(zhí)行器,所述測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,所述多線程控制器用于對線程數(shù)量進(jìn)行控制,所述并發(fā)控制器用于對并發(fā)的線程數(shù)量進(jìn)行控制,所述線程調(diào)度池用于對并發(fā)進(jìn)行控制,所述調(diào)度執(zhí)行器與測試器相連,用于對線程進(jìn)行調(diào)度,所述測試執(zhí)行器與所述調(diào)度執(zhí)行器相連,用于對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。
[0005]本發(fā)明的多線程和并發(fā)測試模擬器在開發(fā)階段為開發(fā)人員提供一個(gè)有效的輕量級(jí)的,易用的測試過程模器,能夠檢測系統(tǒng)的健壯性和性能,其配置簡單,不需要配置腳本,成本低。
[0006]為了實(shí)現(xiàn)本發(fā)明的上述目的,根據(jù)本發(fā)明的二個(gè)方面,本發(fā)明提供了一種多線程和并發(fā)測試模擬器的測試方法,包括如下步驟:
[0007]S1:創(chuàng)建測試器和調(diào)度執(zhí)行器,所述測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,所述多線程控制器用于對線程數(shù)量進(jìn)行控制,所述并發(fā)控制器用于對并發(fā)的線程數(shù)量進(jìn)行控制,所述線程調(diào)度池用于對并發(fā)進(jìn)行控制,所述調(diào)度執(zhí)行器與測試器相連,用于對線程進(jìn)行調(diào)度;
[0008]S2:選定測試模擬類,所述測試模擬類為步驟SI中線程的類;
[0009]S3:創(chuàng)建測試執(zhí)行器,所述測試執(zhí)行器與所述調(diào)度執(zhí)行器相連,用于根據(jù)選定的測試模擬類對多線程的排隊(duì)場景進(jìn)行模擬;
[0010]S4:利用測試執(zhí)行器對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。
[0011]本發(fā)明針對多線程和并發(fā)環(huán)境下的工作情況,在開發(fā)階段為開發(fā)人員提供一個(gè)有效的、輕量級(jí)的測試方法,該測試方法簡單易用,不需要配置腳本,不需要專業(yè)的測試技能。
[0012]在本發(fā)明的一種優(yōu)選實(shí)施例中,采用Spring的執(zhí)行服務(wù)類ExecutorService作為測試執(zhí)行器提供調(diào)度執(zhí)行任務(wù)。
[0013]在本發(fā)明的另一種優(yōu)選實(shí)施例中,所述調(diào)度執(zhí)行器運(yùn)行時(shí)設(shè)置有監(jiān)控時(shí)間,當(dāng)監(jiān)控時(shí)間結(jié)束,所述調(diào)度執(zhí)行器調(diào)度的線程被終止。
[0014]本發(fā)明通過設(shè)置監(jiān)控時(shí)間,提高了線程執(zhí)行器的效率。
[0015]在本發(fā)明的再一種優(yōu)選實(shí)施例中,在所述步驟SI中,對線程數(shù)量和并發(fā)的線程數(shù)量設(shè)置默認(rèn)值,所述線程數(shù)量默認(rèn)值為100,所述并發(fā)的線程數(shù)量默認(rèn)值為10。
[0016]本發(fā)明通過設(shè)置默認(rèn)值,提高了容錯(cuò)性。
[0017]在本發(fā)明的再另一種優(yōu)選實(shí)施例中,在所述步驟SI中還判斷是否對并發(fā)進(jìn)程進(jìn)行同步處理。
[0018]本發(fā)明通過判斷是否對并發(fā)進(jìn)程進(jìn)行同步處理,提高了模擬器測試的準(zhǔn)確性。
[0019]本發(fā)明的附加方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
【專利附圖】
【附圖說明】
[0020]本發(fā)明的上述和/或附加的方面和優(yōu)點(diǎn)從結(jié)合下面附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
[0021]圖1是本發(fā)明多線程和并發(fā)測試模擬器的結(jié)構(gòu)示意圖;
[0022]圖2是本發(fā)明多線程和并發(fā)測試模擬器的流程圖;
[0023]圖3是本發(fā)明一種優(yōu)選實(shí)施例中的測試器和調(diào)度執(zhí)行器的函數(shù)調(diào)用;
[0024]圖4是本發(fā)明一種優(yōu)選實(shí)施例中多線程和并發(fā)測試模擬器的測試方法的函數(shù)調(diào)用。
【具體實(shí)施方式】
[0025]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。
[0026]在本發(fā)明的描述中,除非另有規(guī)定和限定,需要說明的是,術(shù)語“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是機(jī)械連接或電連接,也可以是兩個(gè)元件內(nèi)部的連通,可以是直接相連,也可以通過中間媒介間接相連,對于本領(lǐng)域的普通技術(shù)人員而言,可以根據(jù)具體情況理解上述術(shù)語的具體含義。
[0027]本發(fā)明提供了一種多線程和并發(fā)測試模擬器,如圖1所示,該多線程和并發(fā)測試模擬器I包括測試器10、調(diào)度執(zhí)行器11和測試執(zhí)行器12,該測試器10包括多線程控制器101、并發(fā)控制器102和線程調(diào)度池103,其中,多線程控制器101用于對線程數(shù)量進(jìn)行控制,并發(fā)控制器102用于對并發(fā)的線程數(shù)量進(jìn)行控制,線程調(diào)度池103用于對并發(fā)進(jìn)行控制,調(diào)度執(zhí)行器11與測試器10相連,用于對線程進(jìn)行調(diào)度,測試執(zhí)行器12與調(diào)度執(zhí)行器11相連,用于對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏2進(jìn)行顯示。
[0028]本發(fā)明的多線程和并發(fā)測試模擬器在開發(fā)階段為開發(fā)人員提供一個(gè)有效的輕量級(jí)的,易用的測試過程模擬器,能夠檢測系統(tǒng)的健壯性和性能,其配置簡單,不需要配置腳本,成本低。
[0029]本發(fā)明還提供了一種多線程和并發(fā)測試模擬器的測試方法,如圖2所示,其包括如下步驟:
[0030]S1:創(chuàng)建測試器和調(diào)度執(zhí)行器,該測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,多線程控制器用于對線程數(shù)量進(jìn)行控制,并發(fā)控制器用于對并發(fā)的線程數(shù)量進(jìn)行控制,線程調(diào)度池用于對并發(fā)進(jìn)行控制,調(diào)度執(zhí)行器與測試器相連,用于對線程進(jìn)行調(diào)度;
[0031]S2:選定測試模擬類,該測試模擬類為步驟SI中線程的類;
[0032]S3:創(chuàng)建測試執(zhí)行器,該測試執(zhí)行器與調(diào)度執(zhí)行器相連,用于根據(jù)選定的該測試模擬類對多線程的排隊(duì)場景進(jìn)行模擬;
[0033]S4:利用測試執(zhí)行器對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。
[0034]在本發(fā)明的一種優(yōu)選實(shí)施方式中,該多線程和并發(fā)測試模擬器的測試方法包括如下步驟:
[0035]第一步:創(chuàng)建測試器和調(diào)度執(zhí)行器,該測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,多線程控制器用于對線程數(shù)量進(jìn)行控制,并發(fā)控制器用于對并發(fā)的線程數(shù)量進(jìn)行控制,線程調(diào)度池用于對并發(fā)的線程進(jìn)行調(diào)度。
[0036]在本實(shí)施方式中,多線程可以是任意的程序操作,在本發(fā)明的一種更加優(yōu)選的實(shí)施方式中,多線程是指發(fā)出點(diǎn)擊操作的用戶總數(shù),并發(fā)是統(tǒng)一時(shí)間段內(nèi)的進(jìn)程數(shù)量峰值,線程調(diào)度池是對并發(fā)的控制,采用線程池技術(shù)來維護(hù)并發(fā)的可靠性,保證測試的平行性,在本實(shí)施方式中,線程調(diào)度池優(yōu)選采用數(shù)據(jù)庫連接池,由此可以通過多線程數(shù)量確定一個(gè)總的用戶范圍。
[0037]調(diào)度執(zhí)行器分別與測試器的多線程控制器、并發(fā)控制器和線程調(diào)度池相連,用于對線程進(jìn)行調(diào)度,在本實(shí)施方式中,具體采用的調(diào)度執(zhí)行器是spr ing的執(zhí)行服務(wù)類ExecutorService,在本發(fā)明的另外的優(yōu)選實(shí)施方式中,該調(diào)度執(zhí)行器還設(shè)置有線程池,用于對待調(diào)度線程的睡眠狀態(tài)進(jìn)行存儲(chǔ)。
[0038]第二步:選定測試模擬類,該測試模擬類為第一步中線程的類,在本實(shí)施方式中,通過random機(jī)制來獲取不同的測試模擬類。
[0039]第三步:創(chuàng)建測試執(zhí)行器,該測試執(zhí)行器與調(diào)度執(zhí)行器相連,并利用該測試執(zhí)行器對測試器內(nèi)設(shè)置的多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。在本實(shí)施方式中,通過spring的執(zhí)行服務(wù)類ExecutorService技術(shù)提供執(zhí)行調(diào)度的服務(wù),來模擬多線程的排隊(duì)場景。在本實(shí)施方式中,測試執(zhí)行器在對多線程的排隊(duì)場景進(jìn)行模擬的同時(shí),還可以對測試結(jié)果進(jìn)行統(tǒng)計(jì),如對測試器中進(jìn)程數(shù)量,運(yùn)行的時(shí)間,調(diào)度執(zhí)行器執(zhí)行的結(jié)果,及并發(fā)測試的成功率等結(jié)果進(jìn)行統(tǒng)計(jì)。
[0040]圖3是本發(fā)明一種優(yōu)選實(shí)施例中創(chuàng)建測試器和調(diào)度執(zhí)行器的函數(shù)調(diào)用,第I行是在Spring環(huán)境中定義一個(gè)測試器simulatorRunner,第2行是定義線程數(shù),第3行是定義并發(fā)數(shù),第4行是定義持續(xù)時(shí)間,如果在持續(xù)時(shí)間約定的范圍內(nèi)測試失敗,則將被標(biāo)記為失敗,第5行設(shè)置為true時(shí),當(dāng)一個(gè)線程執(zhí)行一個(gè)測試模擬類時(shí),除非線程池中的其它同級(jí)(并行)線程都已經(jīng)執(zhí)行完畢它才能執(zhí)行,因此,實(shí)際上這樣做的目的是保證了并發(fā)性,用平行來完成并發(fā)的目的,第6行是定義一個(gè)用來調(diào)度的調(diào)度執(zhí)行器ExecutorService,執(zhí)行提交測試動(dòng)作,在本實(shí)施方式中,米用Scheduled ExecutorService,其是ExecutorService接口的一個(gè)實(shí)現(xiàn)類,第9行是在Spring環(huán)境中定義一個(gè)第6行提到的調(diào)度執(zhí)行器,第10行當(dāng)此屬性為true時(shí),測試模擬類運(yùn)行出現(xiàn)異常時(shí)程序不會(huì)停止,仍然進(jìn)行下個(gè)線程的測試,第11行是設(shè)置調(diào)度執(zhí)行器的線程池的容量大小。如圖3所示,在創(chuàng)建測試器時(shí),需要對線程數(shù)量和并發(fā)的線程數(shù)量設(shè)置默認(rèn)值,在本實(shí)施方式中,利用numberOfRuns設(shè)置線程模擬數(shù),利用numberOfConcurrentStarts設(shè)置并發(fā)模擬數(shù),在本發(fā)明的一種優(yōu)選實(shí)施方式中,線程數(shù)量默認(rèn)值為100,并發(fā)的線程數(shù)量默認(rèn)值為10,并且該值的設(shè)置不要大于number Of Run s中設(shè)置的數(shù)值。
[0041]在本實(shí)施方式中,在調(diào)度執(zhí)行器運(yùn)行時(shí)設(shè)置有監(jiān)控時(shí)間,當(dāng)監(jiān)控時(shí)間結(jié)束,線程執(zhí)行器被終止,同時(shí)還需要判斷是否對并發(fā)進(jìn)程進(jìn)行同步處理。在本發(fā)明的一種優(yōu)選實(shí)施方式中,利用coolDownPeriod設(shè)置監(jiān)控時(shí)間,該監(jiān)控時(shí)間根據(jù)任務(wù)要求進(jìn)行選擇,默認(rèn)為1000毫秒,在此設(shè)置的時(shí)間一到,線程執(zhí)行不管有沒有結(jié)束都將被終止。在本實(shí)施方式中,還利用synchronizedScheduling判斷是否對一個(gè)并發(fā)進(jìn)程組同步處理,true表明可以同步進(jìn)行一個(gè)并發(fā)數(shù)的工作,而false則是根據(jù)線程模擬數(shù)逐個(gè)執(zhí)行,默認(rèn)false。
[0042]在本實(shí)施方式中,通過random機(jī)制來獲取不同的測試模擬類。例如具體的函數(shù)調(diào)用為 “〈bean id=,> companys imulator,,
[0043]class=” com.feinn0.app.account, test.CompanySaveSimulator,,>,,,測試模擬類companySimulator來源于SimulatorBase類,實(shí)現(xiàn)基類中的run方法,并在此方法中執(zhí)行業(yè)務(wù)邏輯動(dòng)作。
[0044]圖4示出了本發(fā)明多線程和并發(fā)測試模擬器的測試方法的函數(shù)調(diào)用,從圖中可見,首先加載創(chuàng)建的測試器和調(diào)度執(zhí)行器,然后加載測試執(zhí)行器,在本實(shí)施方式中,同時(shí)啟動(dòng)測試監(jiān)聽器執(zhí)行測試用例,提供設(shè)置接口接收線程數(shù)、并發(fā)數(shù),以及針對運(yùn)行后結(jié)果的分析所需要的停頓時(shí)間,該停頓時(shí)間是指在有多個(gè)測試模擬類運(yùn)行的情況下,一個(gè)測試模擬類結(jié)束后執(zhí)行下個(gè)測試模擬類的間隔時(shí)間,再后加載測試模擬類,將上述定義的測試器、sping提供的調(diào)度執(zhí)行器和測試模擬類,通過spring的ExecutorService技術(shù)提供執(zhí)行調(diào)度的服務(wù),對測試模擬類進(jìn)行執(zhí)行測試,就可以實(shí)現(xiàn)多線程的排隊(duì)場景模擬,最后通過打印機(jī)將測試結(jié)果打印輸出。
[0045]本發(fā)明針對多線程和并發(fā)環(huán)境下的工作情況,在開發(fā)階段為開發(fā)人員提供一個(gè)有效的、輕量級(jí)的測試方法,該測試方法簡單易用,不需要配置腳本,不需要專業(yè)的測試技能。
[0046]在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
[0047]盡管已經(jīng)示出和描述了本發(fā)明的實(shí)施例,本領(lǐng)域的普通技術(shù)人員可以理解:在不脫離本發(fā)明的原理和宗旨的情況下可以對這些實(shí)施例進(jìn)行多種變化、修改、替換和變型,本發(fā)明的范圍由權(quán)利要求及其等同物限定。
【權(quán)利要求】
1.一種多線程和并發(fā)測試模擬器,其特征在于,包括測試器、調(diào)度執(zhí)行器和測試執(zhí)行器,所述測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,所述多線程控制器用于對線程數(shù)量進(jìn)行控制,所述并發(fā)控制器用于對并發(fā)的線程數(shù)量進(jìn)行控制,所述線程調(diào)度池用于對并發(fā)進(jìn)行控制,所述調(diào)度執(zhí)行器與測試器相連,用于對線程進(jìn)行調(diào)度,所述測試執(zhí)行器與所述調(diào)度執(zhí)行器相連,用于對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。
2.如權(quán)利要求1所述的多線程和并發(fā)測試模擬器,其特征在于:所述測試執(zhí)行器為spring 的執(zhí)行服務(wù)類 ExecutorService。
3.如權(quán)利要求1所述的多線程和并發(fā)測試模擬器,其特征在于:所述線程數(shù)量默認(rèn)值為100,所述并發(fā)的線程數(shù)量默認(rèn)值為10。
4.一種多線程和并發(fā)測試模擬器的測試方法,其特征在于,包括如下步驟: 51:創(chuàng)建測試器和調(diào)度執(zhí)行器,所述測試器包括多線程控制器、并發(fā)控制器和線程調(diào)度池,所述多線程控制器用于對線程數(shù)量進(jìn)行控制,所述并發(fā)控制器用于對并發(fā)的線程數(shù)量進(jìn)行控制,所述線程調(diào)度池用于對并發(fā)進(jìn)行控制,所述調(diào)度執(zhí)行器與測試器相連,用于對線程進(jìn)行調(diào)度; 52:選定測試模擬類,所述測試模擬類為步驟SI中線程的類; 53:創(chuàng)建測試執(zhí)行器,所述測試執(zhí)行器與所述調(diào)度執(zhí)行器相連,用于根據(jù)所述選定的測試模擬類對多線程的排隊(duì)場景進(jìn)行模擬; 54:利用測試執(zhí)行器對多線程的排隊(duì)場景進(jìn)行模擬并通過顯示屏進(jìn)行顯示。
5.如權(quán)利要求4所述的多線程和并發(fā)測試模擬器的測試方法,其特征在于:采用Spring的執(zhí)行服務(wù)類ExecutorService作為測試執(zhí)行器提供調(diào)度執(zhí)行任務(wù)。
6.如權(quán)利要求4所述的多線程和并發(fā)測試模擬器的測試方法,其特征在于:所述調(diào)度執(zhí)行器運(yùn)行時(shí)設(shè)置有監(jiān)控時(shí)間,當(dāng)監(jiān)控時(shí)間結(jié)束,所述調(diào)度執(zhí)行器調(diào)度的線程被終止。
7.如權(quán)利要求4所述的多線程和并發(fā)測試模擬器的測試方法,其特征在于:在所述步驟SI中,對線程數(shù)量和并發(fā)的線程數(shù)量設(shè)置默認(rèn)值,所述線程數(shù)量默認(rèn)值為100,所述并發(fā)的線程數(shù)量默認(rèn)值為10。
8.如權(quán)利要求4所述的多線程和并發(fā)測試模擬器的測試方法,其特征在于:在所述步驟SI中還判斷是否對并發(fā)進(jìn)程進(jìn)行同步處理。
【文檔編號(hào)】G06F11/26GK103838654SQ201210491393
【公開日】2014年6月4日 申請日期:2012年11月27日 優(yōu)先權(quán)日:2012年11月27日
【發(fā)明者】于建軍 申請人:重慶新媒農(nóng)信科技有限公司