本發(fā)明涉及軟件測(cè)試領(lǐng)域,尤其涉及云壓力測(cè)試數(shù)據(jù)分配的方法、裝置、計(jì)算設(shè)備及壓力測(cè)試系統(tǒng)。
背景技術(shù):
:壓力測(cè)試就是在模擬網(wǎng)絡(luò)環(huán)境或真實(shí)網(wǎng)絡(luò)環(huán)境下,對(duì)被測(cè)軟件系統(tǒng)發(fā)起線性增長(zhǎng)負(fù)載測(cè)試或者梯形增長(zhǎng)負(fù)載測(cè)試,并記錄測(cè)試對(duì)被測(cè)軟件系統(tǒng)的影響。例如,為了對(duì)各種服務(wù)平臺(tái)(例如購(gòu)物網(wǎng)站平臺(tái)、訂票平臺(tái)等)進(jìn)行壓測(cè),通常需要多個(gè)壓測(cè)負(fù)載機(jī)并行地對(duì)服務(wù)平臺(tái)進(jìn)行訪問。例如,壓測(cè)系統(tǒng)被配置為模擬100萬(wàn)用戶量級(jí)的壓測(cè)。壓測(cè)系統(tǒng)為分布式系統(tǒng),可以包括調(diào)度服務(wù)器和多個(gè)負(fù)載服務(wù)器(負(fù)載機(jī))等。取決于本身的硬件配置和調(diào)度服務(wù)器的指示,負(fù)載機(jī)可以啟動(dòng)一個(gè)或多個(gè)進(jìn)程實(shí)例。每個(gè)進(jìn)程實(shí)例可以包括至少一個(gè)用戶線程。通常,一個(gè)用戶線程可以執(zhí)行模擬一個(gè)用戶的訪問操作。通常,每個(gè)用戶線程執(zhí)行一次測(cè)試任務(wù)所需要的數(shù)據(jù)包括多個(gè)用戶線程通用的測(cè)試腳本數(shù)據(jù)和由本線程獨(dú)立使用的信息(例如,用戶名和密碼等)。由于壓測(cè)的用戶量級(jí)較大,因此如何保證每個(gè)用戶線程獲取獨(dú)立使用的數(shù)據(jù)是一個(gè)亟待解決的問題。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供一種新的測(cè)試數(shù)據(jù)分配的技術(shù)方案,有效的解決了上面至少一個(gè)問題。根據(jù)本發(fā)明的一個(gè)方面,提供一種測(cè)試數(shù)據(jù)分配的方法,適于在計(jì)算設(shè)備中執(zhí)行測(cè)試任務(wù)的線程中執(zhí)行。該計(jì)算設(shè)備包括來自調(diào)度服務(wù)器的測(cè)試配置信息。每個(gè)線程具有由該調(diào)度服務(wù)器所分配的線程編號(hào)。該方法包括下述步驟。根據(jù)線程編號(hào),獲取測(cè)試配置信息中對(duì)應(yīng)本線程的配置信息子集。在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值。可選地,在根據(jù)本發(fā)明的測(cè)試數(shù)據(jù)分配的方法中,測(cè)試請(qǐng)求包括下述中至少一種:http請(qǐng)求、https請(qǐng)求、ftp請(qǐng)求、Java對(duì)象請(qǐng)求、JDBC請(qǐng)求、LDAP請(qǐng)求和SOAP請(qǐng)求。線程編號(hào)包括計(jì)算設(shè)備標(biāo)識(shí)字段、進(jìn)程標(biāo)識(shí)字段和線程標(biāo)識(shí)字段。可選地,在根據(jù)本發(fā)明的測(cè)試數(shù)據(jù)分配的方法中,根據(jù)線程編號(hào),獲取測(cè)試配置信息中對(duì)應(yīng)本線程的配置信息子集的步驟包括:根據(jù)下述公式確定所對(duì)應(yīng)配置信息子集的開始地址和結(jié)束地址:StartLine=MaxDataRow/MaxUser*用戶ID*EndLine=MaxDataRow/MaxUser*用戶ID*+BlockSize其中,MaxDataRow表示測(cè)試配置信息的總行數(shù),用戶ID*表示線程編號(hào),MaxUser表示調(diào)度服務(wù)器所分配的線程總數(shù),BlockSize表示分配給每個(gè)線程的資源塊大小,StartLine表示開始地址,EndLine表示結(jié)束地址;將StartLine和EndLine所指向的區(qū)間存儲(chǔ)到緩沖區(qū)中并作為所對(duì)應(yīng)的配置信息子集。可選地,在根據(jù)本發(fā)明的測(cè)試數(shù)據(jù)分配的方法中,配置信息子集包括每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的取值列表。在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值的步驟包括:對(duì)于每個(gè)待賦值的參數(shù)名稱,從其所對(duì)應(yīng)的取值列表中提取一個(gè)未被本線程提取過的值作為相應(yīng)的參數(shù)值。可選地,在根據(jù)本發(fā)明的測(cè)試數(shù)據(jù)分配的方法中,從其所對(duì)應(yīng)的取值列表中提取一個(gè)未被本線程提取過的值作為相應(yīng)的參數(shù)值的操作包括:根據(jù)本線程從該取值列表中提取值的已有迭代次數(shù),按存儲(chǔ)順序從該取值列表中取出一個(gè)值作為相應(yīng)的參數(shù)值。可選地,在根據(jù)本發(fā)明的測(cè)試數(shù)據(jù)分配的方法中,參數(shù)名稱包括第一參數(shù)名和與第一參數(shù)名關(guān)聯(lián)的第二參數(shù)名。在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值的步驟包括:按照位置順序或者隨機(jī)順序提取第一參數(shù)名對(duì)應(yīng)的第一參數(shù)值;提取與第一參數(shù)值關(guān)聯(lián)的第二參數(shù)值并賦值給第二參數(shù)名。根據(jù)本發(fā)明又一個(gè)方面,提供一種測(cè)試數(shù)據(jù)分配的裝置,適于駐留在計(jì)算設(shè)備中執(zhí)行測(cè)試任務(wù)的線程中。該計(jì)算設(shè)備包括來自調(diào)度服務(wù)器的測(cè)試配置信息。每個(gè)線程具有由該調(diào)度服務(wù)器所分配的線程編號(hào)。該裝置包括分配單元和提取單元。分配單元適于根據(jù)線程編號(hào),獲取測(cè)試配置信息中對(duì)應(yīng)本線程的配置信息子集。提取單元適于在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值。根據(jù)本發(fā)明又一個(gè)方面,提供一種計(jì)算設(shè)備,包括一個(gè)或多個(gè)執(zhí)行測(cè)試任務(wù)的線程。其中每個(gè)線程駐留有根據(jù)本發(fā)明的測(cè)試數(shù)據(jù)分配的裝置。根據(jù)本發(fā)明又一個(gè)方面,提供一種壓力測(cè)試系統(tǒng),包括調(diào)度服務(wù)器和根據(jù)本發(fā)明的計(jì)算設(shè)備。調(diào)度服務(wù)器適于解析測(cè)試任務(wù),并確定執(zhí)行測(cè)試任務(wù)的線程總數(shù)。綜上,根據(jù)本發(fā)明的技術(shù)方案,可以獲取執(zhí)行測(cè)試任務(wù)的線程所要獨(dú)立使用的配置信息子集。在此基礎(chǔ)上,根據(jù)本發(fā)明的技術(shù)方案可以按照順序(隨機(jī))方式對(duì)參數(shù)名稱進(jìn)行賦值,并且可以保證每次取值不重復(fù)。這樣,本發(fā)明的技術(shù)方案可以在壓力測(cè)試過程中,高實(shí)時(shí)性的參數(shù)化請(qǐng)求對(duì)象(例如,http請(qǐng)求或ftp請(qǐng)求等),并且能保證依次對(duì)不同請(qǐng)求對(duì)象中相同參數(shù)名賦以獨(dú)立使用的參數(shù)值(即不同請(qǐng)求中所賦值不同)。特別說明的是,本發(fā)明的技術(shù)方案對(duì)于高并發(fā)(用戶線程量級(jí)較大)的壓力測(cè)試,可以保證每個(gè)請(qǐng)求對(duì)象(即請(qǐng)求事務(wù))中參數(shù)值的唯一性,從而可以更真實(shí)地模擬高并發(fā)地訪問被測(cè)系統(tǒng)的過程。附圖說明為了實(shí)現(xiàn)上述以及相關(guān)目的,本文結(jié)合下面的描述和附圖來描述某些說明性方面,這些方面指示了可以實(shí)踐本文所公開的原理的各種方式,并且所有方面及其等效方面旨在落入所要求保護(hù)的主題的范圍內(nèi)。通過結(jié)合附圖閱讀下面的詳細(xì)描述,本公開的上述以及其它目的、特征和優(yōu)勢(shì)將變得更加明顯。遍及本公開,相同的附圖標(biāo)記通常指代相同的部件或元素。圖1示出了根據(jù)本發(fā)明一些實(shí)施例的壓力測(cè)試系統(tǒng)100的框圖;圖2示出了根據(jù)本發(fā)明一些實(shí)施例的測(cè)試數(shù)據(jù)分配分配測(cè)試數(shù)據(jù)的方法200的流程圖;以及圖3示出了根據(jù)本發(fā)明一些實(shí)施例的測(cè)試數(shù)據(jù)分配的裝置300的示意圖。具體實(shí)施方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1示出了根據(jù)本發(fā)明一些實(shí)施例的壓力測(cè)試系統(tǒng)100的框圖。如圖1所示,壓力測(cè)試系統(tǒng)100包括調(diào)度服務(wù)器110和多個(gè)執(zhí)行測(cè)試任務(wù)的計(jì)算設(shè)備120-1、...、120-N,其中N≥2。這里,調(diào)度服務(wù)器110可以對(duì)測(cè)試腳本進(jìn)行解析,以確定所需要所要虛擬的用戶總數(shù)和執(zhí)行壓力測(cè)試的地理位置。取決于所確定的用戶總數(shù)、地理位置和可選用計(jì)算設(shè)備的負(fù)載情況,調(diào)度服務(wù)器110可以在多個(gè)計(jì)算設(shè)備中啟動(dòng)對(duì)應(yīng)用戶總數(shù)的用戶線程。這里,計(jì)算設(shè)備也可以被稱為負(fù)載服務(wù)器。計(jì)算設(shè)備可以是物理獨(dú)立的設(shè)備,也可以是分布式云主機(jī),本發(fā)明對(duì)此不做限制。另外,壓力測(cè)試系統(tǒng)100還適于向計(jì)算設(shè)備發(fā)送測(cè)試配置信息。這里,測(cè)試配置信息例如可以包括線程發(fā)送請(qǐng)求時(shí)所需要的用戶名和密碼等參數(shù)值。在根據(jù)本發(fā)明一個(gè)實(shí)施例中,壓力測(cè)試的用戶數(shù)量為1000萬(wàn)。調(diào)度服務(wù)器110可以在多個(gè)計(jì)算設(shè)備中啟動(dòng)1000萬(wàn)執(zhí)行測(cè)試任務(wù)的用戶線程。典型地,按照測(cè)試腳本的執(zhí)行流程,壓力測(cè)試系統(tǒng)100例如可以劃分3個(gè)執(zhí)行階段,但不限于此。例如,3個(gè)執(zhí)行階段包括初始階段、運(yùn)行階段和結(jié)束階段。3個(gè)執(zhí)行階段例如均為5分鐘。在初始階段,執(zhí)行測(cè)試任務(wù)的線程數(shù)從0線性增長(zhǎng)為1000萬(wàn)。在運(yùn)行階段,執(zhí)行測(cè)試任務(wù)的線程數(shù)保持在1000萬(wàn)。在結(jié)束階段,執(zhí)行測(cè)試任務(wù)的線程總數(shù)從1000萬(wàn)逐漸降低到0。需要說明的是,上述壓力測(cè)試系統(tǒng)100的結(jié)構(gòu)僅僅為示例性說明,但不限于此。通常而言,每個(gè)線程在執(zhí)行測(cè)試期間,可以向被監(jiān)測(cè)軟件(例如為購(gòu)物平臺(tái)服務(wù)器等)發(fā)送請(qǐng)求和接收相應(yīng)的響應(yīng)。每個(gè)發(fā)送的請(qǐng)求可以稱之為一個(gè)事務(wù)。這里,請(qǐng)求例如可以是http請(qǐng)求、https請(qǐng)求、ftp請(qǐng)求、Java對(duì)象請(qǐng)求、JDBC請(qǐng)求、LDAP請(qǐng)求和SOAP請(qǐng)求等,但不限于此。對(duì)于每個(gè)請(qǐng)求而言,線程可以執(zhí)行前置處理操作、發(fā)送請(qǐng)求操作和后置處理操作。以http為例,前置處理操作可以對(duì)待發(fā)送的請(qǐng)求對(duì)象進(jìn)行參數(shù)化。發(fā)送請(qǐng)求操作是將請(qǐng)求發(fā)送到被監(jiān)測(cè)的軟件系統(tǒng)。后置處理操作是對(duì)相應(yīng)消息進(jìn)行處理。例如,線程可以在后置處理操作階段提取各種變量值,但不限于此。在前置處理操作階段,線程可以調(diào)度測(cè)試配置信息,以便保證線程所獲取的配置信息具有唯一性。下面結(jié)合圖2對(duì)線程所執(zhí)行的測(cè)試數(shù)據(jù)分配的方法進(jìn)行示例性說明。圖2示出了根據(jù)本發(fā)明一些實(shí)施例的測(cè)試數(shù)據(jù)分配的方法200的流程圖。方法200適于在執(zhí)行測(cè)試任務(wù)的計(jì)算設(shè)備(也可以稱之為負(fù)載服務(wù)器)中執(zhí)行。更具體而言,方法200適于在計(jì)算設(shè)備上每個(gè)執(zhí)行測(cè)試任務(wù)的線程中執(zhí)行。如圖2所示,方法200始于步驟S210。在步驟S210中,根據(jù)線程編號(hào),獲取測(cè)試配置信息中對(duì)應(yīng)本線程的配置信息子集。這里,線程編號(hào)例如是由調(diào)度服務(wù)器所分配的標(biāo)識(shí)。測(cè)試配置信息為來自調(diào)度服務(wù)器的包含每個(gè)線程所需要的參數(shù)信息的資源文件。在根據(jù)本發(fā)明一個(gè)實(shí)施例中,線程編號(hào)可以包括計(jì)算設(shè)備標(biāo)識(shí)字段、進(jìn)程標(biāo)識(shí)字段和線程標(biāo)識(shí)字段。當(dāng)然,本發(fā)明的實(shí)施例也可以采用其他公知方式對(duì)線程進(jìn)行編號(hào),這里不再贅述。步驟S210可以根據(jù)線程編號(hào)確定供本線程唯一性使用的配置信息子集。這里,配置信息子集可以包括一個(gè)或多個(gè)參數(shù)名稱的取值。每個(gè)參數(shù)名稱可以對(duì)應(yīng)配置信息子集中一個(gè)取值列表。在根據(jù)本發(fā)明一個(gè)實(shí)施例中,步驟S210首先計(jì)算配置信息子集的開始地址和結(jié)束地址。具體地,步驟S210可以通過下述公式進(jìn)行計(jì)算開始地址和結(jié)束地址。StartLine=MaxDataRow/MaxUser*用戶ID*EndLine=MaxDataRow/MaxUser*用戶ID*+BlockSize。其中,MaxDataRow表示測(cè)試配置信息的總行數(shù),用戶ID*表示線程編號(hào),MaxUser表示調(diào)度服務(wù)器所分配的線程總數(shù),BlockSize表示分配給每個(gè)線程的資源塊大小,StartLine表示開始地址,EndLine表示結(jié)束地址。在上述計(jì)算的基礎(chǔ)上,步驟S210可以將StartLine和EndLine所指向的區(qū)間存儲(chǔ)到緩沖區(qū)(其為線程級(jí)緩沖)中并作為所對(duì)應(yīng)的配置信息子集。需要說明的是,取決于配置信息子集的數(shù)據(jù)結(jié)構(gòu),每個(gè)地址(可以開始地址和結(jié)束地址所處區(qū)間的任一個(gè))指向的存儲(chǔ)單元可以被配置為包括一個(gè)參數(shù)名稱(也可以稱為一個(gè)參數(shù)項(xiàng))的一個(gè)取值。另外,每個(gè)地址所指向的存儲(chǔ)單元也可以包括多個(gè)參數(shù)名稱的取值。這里,在每個(gè)地址被配置為存儲(chǔ)一個(gè)參數(shù)名稱的值時(shí),該配置信息子集可以被認(rèn)為是一個(gè)參數(shù)名稱的取值列表。在每個(gè)地址包括多個(gè)參數(shù)名稱的值時(shí),該配置信息子集的每一列可以被認(rèn)為是相應(yīng)參數(shù)名稱的取值列表。例如表1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的配置信息子集的至少一部分。表1用戶名身份證號(hào)碼辦公電話密碼問題答案張志峰1101011X101001002139777777笨蛋吳宇1101011X80010101174008305555小說席國(guó)柳1101011X80010102134008861888唱響世界李洪學(xué)1101011X800101031X1062782165BabyBaby楊志明1101011X80010103362134206500發(fā)現(xiàn)愛如表1所示,本實(shí)施例中配置信息子集包括4個(gè)參數(shù)名稱(用戶名、身份證號(hào)碼、辦公電話和密碼發(fā)問題答案)的取值列表。在確定配置信息子集的基礎(chǔ)上,方法200可以執(zhí)行步驟S220。在每個(gè)測(cè)試請(qǐng)求的前置處理階段,步驟S220從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值。根據(jù)本發(fā)明一個(gè)實(shí)施例,在步驟S220中,對(duì)于每個(gè)帶賦值的參數(shù)名稱,從相應(yīng)的配置信息子集中提取一個(gè)本線程未提取過的值作為相應(yīng)的參數(shù)值。例如,執(zhí)行方法200的線程依次執(zhí)行對(duì)第一請(qǐng)求和第二請(qǐng)求的前置處理操作。在對(duì)第一請(qǐng)求的前置處理操作中,步驟S220提取第一參數(shù)名稱對(duì)應(yīng)取值列表中一個(gè)值作為本請(qǐng)求中第一參數(shù)名稱的取值。在對(duì)第二請(qǐng)求的前置處理操作中,提取第一參數(shù)名稱對(duì)應(yīng)取值列表中另一個(gè)值(不同于第一請(qǐng)求中相應(yīng)取值)作為第二請(qǐng)求中第二參數(shù)名稱的取值。以表1為例,第一請(qǐng)求中用戶名例如為“張志峰”,第二請(qǐng)求中用戶名為“吳宇”。需要說明的是,步驟S220每次從一個(gè)參數(shù)名稱對(duì)應(yīng)取值列表中取值時(shí),可以按照取值列表中值的存儲(chǔ)順序依次取值。根據(jù)本發(fā)明一個(gè)實(shí)施例,步驟S220對(duì)一個(gè)參數(shù)名稱賦值時(shí),可以根據(jù)從該參數(shù)名稱的取值列表中取值的已有迭代次數(shù),按存儲(chǔ)順序取值。例如,已有迭代次數(shù)為2,本次對(duì)參數(shù)名稱賦值可以取第3個(gè)存儲(chǔ)單元(也可以稱為列表中第3行)中值。另外,步驟S220可以隨機(jī)從取值列表中取值,但不限于此。在根據(jù)本發(fā)明一個(gè)實(shí)施例中,執(zhí)行步驟S220的代碼格式示例如下:${DataRandomColumn(paramname,oldvalue,key,getdatatype,finaltype,startline,col,isRef,blockFlag,blockSize,blockStep,custparam)}paramname:參數(shù)名Oldvalue:原值key:數(shù)據(jù)keygetdatatype:iteration,meet,once(獲取數(shù)據(jù)方式:迭代,遇見,一次)finaltype:數(shù)據(jù)用盡處理方式,startline:起始行col:key對(duì)應(yīng)數(shù)據(jù)中的列值isRef:是否為引用函數(shù),默認(rèn)為false,在TableRow中作為內(nèi)嵌函數(shù)設(shè)為trueboolblockFlag是否分塊intblockSize分塊大小intblockStep步長(zhǎng)custparam:用戶參數(shù)在根據(jù)本發(fā)明又一個(gè)實(shí)施例中,至少一部分參數(shù)名稱具有關(guān)聯(lián)關(guān)系(例如登錄用戶名和密碼)。通常而言,配置信息子集中關(guān)聯(lián)參數(shù)的值也關(guān)聯(lián)存放。相應(yīng)地,相關(guān)聯(lián)的參數(shù)名稱(即關(guān)聯(lián)變量)的取值過程也具有關(guān)聯(lián)性。下面以相關(guān)聯(lián)的第一參數(shù)名和第二參數(shù)名為例進(jìn)行說明。在步驟S220中,首先按照位置順序或者隨機(jī)順序提取第一參數(shù)名對(duì)應(yīng)的第一參數(shù)值。然后提取與第一參數(shù)值關(guān)聯(lián)的第二參數(shù)值,并賦值給第二參數(shù)名。根據(jù)本發(fā)明一個(gè)實(shí)施例,提取與第一參數(shù)值關(guān)聯(lián)的第二參數(shù)值的代碼示例如下:${DataRow(paramname,oldvalue,col,preParamName,${preFunctionName(paramname’,oldvalue’,key’,getdatatype’,finaltype’,startline’,col’,isRef’,custparam’)},custparam)}preParamName:被關(guān)聯(lián)參數(shù)名preFunctionName將被關(guān)聯(lián)的參數(shù)函數(shù)名稱:順序取值/隨機(jī)取值TableColumn/TableRandomColumnparamname’:參數(shù)名Oldvalue’:原值Key’:數(shù)據(jù)keyGetdatatype’:替換方式:迭代,遇見,一次Finaltype’:數(shù)據(jù)用盡處理方式,(隨機(jī)方式中默認(rèn)送中斷無實(shí)際意義,只是為了通用)Startline’:起始行Col’:key對(duì)應(yīng)數(shù)據(jù)中的列值Custparam’:用戶參數(shù)以上內(nèi)嵌函數(shù)值軍用被關(guān)聯(lián)參數(shù)設(shè)定的原值。isRef’作為內(nèi)嵌函數(shù)設(shè)為true綜上,根據(jù)本發(fā)明的方法200可以確定執(zhí)行測(cè)試任務(wù)的線程所獨(dú)立使用的配置信息子集。在此基礎(chǔ)上,方法200可以按照順序(隨機(jī))方式對(duì)參數(shù)名稱進(jìn)行賦值,并且可以保證每次取值不重復(fù)。這樣,本發(fā)明的方法200可以在壓力測(cè)試過程中,高實(shí)時(shí)性地參數(shù)化請(qǐng)求對(duì)象(例如,http請(qǐng)求或ftp請(qǐng)求等),并且能保證依次對(duì)不同請(qǐng)求對(duì)象中相同參數(shù)名賦以唯一參數(shù)值(即不同請(qǐng)求中所賦值不同)。特別說明的是,本發(fā)明的方法200對(duì)于高并發(fā)(用戶線程量級(jí)較大)的壓力測(cè)試場(chǎng)景而言,可以保證請(qǐng)求對(duì)象(即請(qǐng)求事務(wù))中參數(shù)值的唯一性,從而可以更真實(shí)地模擬高并發(fā)式訪問被測(cè)系統(tǒng)的過程。圖3示出了根據(jù)本發(fā)明一些實(shí)施例的測(cè)試數(shù)據(jù)分配的裝置300的示意圖。裝置300適于駐留在計(jì)算設(shè)備中每個(gè)執(zhí)行測(cè)試任務(wù)的線程中。該計(jì)算設(shè)備包括來自調(diào)度服務(wù)器的測(cè)試配置信息。每個(gè)線程具有由該調(diào)度服務(wù)器所分配的線程編號(hào)。這里,線程編號(hào)例如可以包括計(jì)算設(shè)備標(biāo)識(shí)字段、進(jìn)程標(biāo)識(shí)字段和線程標(biāo)識(shí)字段,但不限于此。如圖3所示,裝置300包括分配單元310和提取單元320。分配單元310,適于根據(jù)線程編號(hào),獲取測(cè)試配置信息中對(duì)應(yīng)本線程的配置信息子集。在根據(jù)本發(fā)明一個(gè)實(shí)施例中,分配單元310根據(jù)下述公式來計(jì)算所要確定的配置信息子集的開始地址和結(jié)束地址。StartLine=MaxDataRow/MaxUser*用戶ID*EndLine=MaxDataRow/MaxUser*用戶ID*+BlockSize。其中,MaxDataRow表示測(cè)試配置信息的總行數(shù),用戶ID*表示線程編號(hào),MaxUser表示調(diào)度服務(wù)器所分配的線程總數(shù),BlockSize表示分配給每個(gè)線程的資源塊大小,StartLine表示開始地址,EndLine表示結(jié)束地址。在上述計(jì)算的基礎(chǔ)上,分配單元310可以將StartLine和EndLine所指向的區(qū)間存儲(chǔ)到緩沖區(qū)311中并作為所對(duì)應(yīng)的配置信息子集。這里,配置信息子集包括每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的取值列表。提取單元320,適于在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值。這里,測(cè)試請(qǐng)求可以是多種類型的請(qǐng)求事務(wù),例如http請(qǐng)求、https請(qǐng)求、ftp請(qǐng)求、Java對(duì)象請(qǐng)求、JDBC請(qǐng)求、LDAP請(qǐng)求和SOAP請(qǐng)求等,但不限于此。在根據(jù)本發(fā)明一個(gè)實(shí)施例中,對(duì)于每個(gè)待賦值的參數(shù)名稱,提取單元320從其所對(duì)應(yīng)的取值列表中提取一個(gè)未被本線程提取過的值作為相應(yīng)的參數(shù)值。例如,提取單元320可以根據(jù)本線程從該取值列表中提取值的已有迭代次數(shù),按存儲(chǔ)順序從該取值列表中取出一個(gè)值作為相應(yīng)的參數(shù)值。在根據(jù)本發(fā)明又一個(gè)實(shí)施例中,參數(shù)名稱包括第一參數(shù)名和與第一參數(shù)名關(guān)聯(lián)的第二參數(shù)名。提取單元320適于按照位置順序或者隨機(jī)順序提取第一參數(shù)名對(duì)應(yīng)的第一參數(shù)值。在此基礎(chǔ)上,提取單元320提取與第一參數(shù)值關(guān)聯(lián)的第二參數(shù)值并賦值給第二參數(shù)名。關(guān)于裝置300更具體的實(shí)施方式請(qǐng)參見方法200,這里不再贅述。A9、如A8所述的裝置,其中,所述測(cè)試請(qǐng)求包括下述中至少一種:http請(qǐng)求、https請(qǐng)求、ftp請(qǐng)求、Java對(duì)象請(qǐng)求、JDBC請(qǐng)求、LDAP請(qǐng)求和SOAP請(qǐng)求。A10、如A8或A9所述的裝置,其中,所述分配單元適于根據(jù)下述方式來根據(jù)線程編號(hào),獲取測(cè)試配置信息中對(duì)應(yīng)本線程的配置信息子集:根據(jù)下述公式確定所對(duì)應(yīng)配置信息子集的開始地址和結(jié)束地址:StartLine=MaxDataRow/MaxUser*用戶ID*EndLine=MaxDataRow/MaxUser*用戶ID*+BlockSize其中,MaxDataRow表示測(cè)試配置信息的總行數(shù),用戶ID*表示線程編號(hào),MaxUser表示調(diào)度服務(wù)器所分配的線程總數(shù),BlockSize表示分配給每個(gè)線程的資源塊大小,StartLine表示開始地址,EndLine表示結(jié)束地址;將StartLine和EndLine所指向的區(qū)間存儲(chǔ)到緩沖區(qū)中并作為所對(duì)應(yīng)的配置信息子集。A11、如A8-A10中任一項(xiàng)所述的裝置,其中,所述線程編號(hào)包括計(jì)算設(shè)備標(biāo)識(shí)字段、進(jìn)程標(biāo)識(shí)字段和線程標(biāo)識(shí)字段。A12、如A8-A11中任一項(xiàng)所述的裝置,其中,所述配置信息子集包括每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的取值列表;所述提取單元適于根據(jù)下述方式在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值:對(duì)于每個(gè)待賦值的參數(shù)名稱,從其所對(duì)應(yīng)的取值列表中提取一個(gè)未被本線程提取過的值作為相應(yīng)的參數(shù)值。A13、如A12所述的裝置,其中,所述提取單元適于根據(jù)下述方式執(zhí)行從其所對(duì)應(yīng)的取值列表中提取一個(gè)未被本線程提取過的值作為相應(yīng)的參數(shù)值的操作:根據(jù)本線程從該取值列表中提取值的已有迭代次數(shù),按存儲(chǔ)順序從該取值列表中取出一個(gè)值作為相應(yīng)的參數(shù)值。A14、如A8-A11中任一項(xiàng)所述的裝置,其中,所述參數(shù)名稱包括第一參數(shù)名和與第一參數(shù)名關(guān)聯(lián)的第二參數(shù)名,所述提取單元適于根據(jù)下述方式在每個(gè)測(cè)試請(qǐng)求的前置處理階段,從相應(yīng)的配置信息子集中提取該測(cè)試請(qǐng)求中每個(gè)待賦值的參數(shù)名稱對(duì)應(yīng)的參數(shù)值:按照位置順序或者隨機(jī)順序提取第一參數(shù)名對(duì)應(yīng)的第一參數(shù)值;提取與第一參數(shù)值關(guān)聯(lián)的第二參數(shù)值并賦值給第二參數(shù)名。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下被實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員應(yīng)當(dāng)理解在本文所公開的示例中的設(shè)備的模塊或單元或組件可以布置在如該實(shí)施例中所描述的設(shè)備中,或者可替換地可以定位在與該示例中的設(shè)備不同的一個(gè)或多個(gè)設(shè)備中。前述示例中的模塊可以組合為一個(gè)模塊或者此外可以分成多個(gè)子模塊。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。此外,所述實(shí)施例中的一些在此被描述成可以由計(jì)算機(jī)系統(tǒng)的處理器或者由執(zhí)行所述功能的其它裝置實(shí)施的方法或方法元素的組合。因此,具有用于實(shí)施所述方法或方法元素的必要指令的處理器形成用于實(shí)施該方法或方法元素的裝置。此外,裝置實(shí)施例的在此所述的元素是如下裝置的例子:該裝置用于實(shí)施由為了實(shí)施該發(fā)明的目的的元素所執(zhí)行的功能。如在此所使用的那樣,除非另行規(guī)定,使用序數(shù)詞“第一”、“第二”、“第三”等等來描述普通對(duì)象僅僅表示涉及類似對(duì)象的不同實(shí)例,并且并不意圖暗示這樣被描述的對(duì)象必須具有時(shí)間上、空間上、排序方面或者以任意其它方式的給定順序。盡管根據(jù)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是受益于上面的描述,本
技術(shù)領(lǐng)域:
內(nèi)的技術(shù)人員明白,在由此描述的本發(fā)明的范圍內(nèi),可以設(shè)想其它實(shí)施例。此外,應(yīng)當(dāng)注意,本說明書中使用的語(yǔ)言主要是為了可讀性和教導(dǎo)的目的而選擇的,而不是為了解釋或者限定本發(fā)明的主題而選擇的。因此,在不偏離所附權(quán)利要求書的范圍和精神的情況下,對(duì)于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說許多修改和變更都是顯而易見的。對(duì)于本發(fā)明的范圍,對(duì)本發(fā)明所做的公開是說明性的,而非限制性的,本發(fā)明的范圍由所附權(quán)利要求書限定。當(dāng)前第1頁(yè)1 2 3