本申請屬于計算機軟件測試領域,具體地說,涉及一種壓力模擬方法和裝置。
背景技術:
近年來,隨著互聯網技術的迅速發展,非結構化數據、大數據、云存儲已經毫無爭議地成為了信息技術發展趨勢和熱點,分布式文件系統作為核心基礎被推到了浪潮之巔,廣泛被工業界和學術界熱推。
分布式系統通常由網絡、數據庫、應用服務器多個部分組成?,F代分布式文件系統普遍具有高性能、高擴展、高可用、高效能、易使用、易管理等特點。然而,在確定一個分布式系統具有上述優點之前,需要對系統進行各方面的測試,從而保證系統足以滿足用戶的需求。
對于分布式系統而言,壓力測試非常重要。一個分布式系統能夠承受多大的壓力是衡量這個分布式系統的關鍵因素之一。因此,為了測試的真實,每個測試壓力器都會盡可能的模擬分布式集群產生的壓力。
在現有的技術方案中,通常采用極限壓力的測試方法對文件操作使用方式進行模擬。其問題在于,隨著壓力測試場景的變換和增加,需要不斷的增加壓力生成方式進行測試,這樣需要不斷增加新的開發,造成技術資源的浪費;與此同時,現有技術不能通過配置的方式配置模擬出任意復雜的壓力測試場景,模擬方式較單一。
因此,一種新型的分布式壓力模擬方法和裝置亟待提出。
技術實現要素:
有鑒于此,本申請所要解決的技術問題是提供了一種壓力模擬方法和裝置。
為了解決上述技術問題,本申請公開了一種壓力模擬方法,包括如下步驟:
獲取壓力模擬類型,并讀取所述模擬類型相對應的配置文件;解析所述配置文件并根據所述配置文件的解析結果創建一定數量的線程;所述線程調用execute方法,根據所述配置文件的解析結果執行與所述壓力模型相對應的預設的原子操作。
其中,所述壓力模擬類型包括文件類型以及文件的操作類型。
其中,執行與所述壓力模型相對應的預設的原子操作之前,所述方法還包括:將一種文件類型的一種操作類型封裝成一個原子操作。
其中,根據配置文件創建一定數量的線程,還包括:在每個所述線程中創建一個原子操作的類的對象。
其中,解析所述配置文件包括:由執行框架解析第一類參數,其中所述第一類參數包括所述壓力模擬類型對應的當前原子操作的執行時間、所述當前原子操作的執行頻率以及為所述當前原子操作創建的線程數。
其中,解析所述配置文件包括:所述執行框架將第二類參數傳遞至所述原子操作的類的對象,并由所述原子操作的類的對象解析所述第二類參數。
其中,所述方法還包括:在所述第二類參數中,使用分布的方式描述所述原子操作的參數。
本申請公開了一種壓力模擬裝置,包括:
參數獲取模塊,用于獲取壓力模擬類型,并讀取所述模擬類型相對應的配置文件;
解析與創建模塊,用于解析所述配置文件并根據所述配置文件的解析結果創建一定數量的線程;
壓力產生模塊,所述線程調用execute方法,用于根據所述配置文件的解析結果執行與所述壓力模型相對應的預設的原子操作。
其中,所述壓力模擬類型包括文件類型以及文件的操作類型。
所述裝置還包括原子操作封裝模塊:所述原子操作封裝模塊,用于執行與所述壓力模型相對應的預設的原子操作之前,將一種文件類型的一種操作類型封裝成一個原子操作。
所述解析與創建模塊還用于:在每個所述線程中創建一個原子操作的類的對象。
所述解析與創建模塊具體用于:由執行框架解析第一類參數,其中所述第一類參數包括所述壓力模擬類型對應的當前原子操作的執行時間、所述當前原子操作的執行頻率以及為所述當前原子操作創建的線程數。
所述解析與創建模塊具體用于:所述執行框架將第二類參數傳遞至所述原子操作的類的對象,并由所述原子操作的類的對象解析所述第二類參數。
所述裝置還包括:在所述第二類參數中,使用分布的方式描述所述原子操作的參數。
與現有技術相比,本申請可以獲得包括以下技術效果:
1)采用配置文件的方式為壓力測試編程進行配置描述,可以通過對配置文件的修改模擬出任意復雜的壓力測試場景;
2)將復雜的壓力生成方式拆分成不同類型的原子操作,并通過原子操作的任意組合實現不同場景下的壓力測試,降低迭代開發成本;
3)采用分布的方式來描述原子操作的參數,使得參數可以動態變化從而動態模擬分布式集群產生的壓力,更加真實。
當然,實施本申請的任一產品必不一定需要同時達到以上所述的所有技術效果。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構成對本申請的不當限定。在附圖中:
圖1是本申請實施例一的技術流程圖;
圖2是本申請實施例二的技術流程圖;
圖3是本申請實施例三的技術流程圖;
圖4是本申請實施例四的裝置結構示意圖。
具體實施方式
以下將配合附圖及實施例來詳細說明本申請的實施方式,藉此對本申請如何應用技術手段來解決技術問題并達成技術功效的實現過程能充分理解并據以實施。
在一個典型的配置中,計算設備包括一個或多個處理器(cpu)、輸入/輸出接口、網絡接口和內存。
內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內存等形式,如只讀存儲器(rom)或閃存(flashram)。內存是計算機可讀介質的示例。
計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限于相變內存(pram)、靜態隨機存取存儲器(sram)、動態隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內存技術、只讀光盤只讀存儲器(cd-rom)、數字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質,可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括非暫存電腦可讀媒體(transitorymedia),如調制的數據信號和載波。
如在說明書及權利要求當中使用了某些詞匯來指稱特定組件。本領域技術人員應可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權利要求并不以名稱的差異來作為區分組件的方式,而是以組件在功能上的差異來作為區分的準則。如在通篇說明書及權利要求當中所提及的“包 含”為一開放式用語,故應解釋成“包含但不限定于”。“大致”是指在可接收的誤差范圍內,本領域技術人員能夠在一定誤差范圍內解決所述技術問題,基本達到所述技術效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續描述為實施本申請的較佳實施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護范圍當視所附權利要求所界定者為準。
還需要說明的是,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的商品或者系統中還存在另外的相同要素。
圖1是本申請實施例一的技術流程圖,結合圖1,本申請實施例一種壓力模擬方法,可以由如下的步驟實現:
步驟s110:獲取壓力模擬類型,并讀取所述模擬類型相對應的配置文件;
步驟s120:解析所述配置文件并根據所述配置文件的解析結果創建一定數量的線程;
步驟s130:所述線程調用execute方法,根據所述配置文件的解析結果執行與所述壓力模型相對應的預設的原子操作。
需要說明的是,本申請實施例中,預先將每個文件類型的一次寫或讀或刪除或創建封裝成一個原子操作,例如,現有的壓力測試文件有a、b、c三種文件類型,那么對于讀、寫、刪除、創建這四種操作類型,將會得到3*4=12種原子類型,即a文件的寫、b文件的寫、c文件的寫、a文件的讀、b文件的讀、c文件的讀、a文件的刪除、b文件的刪除、c文件的刪除、a文件的創建、b文件的創建、c文件的創建等等,共12種壓力測試類型。
具體的,在步驟s110中,獲取壓力模擬類型,所述壓力模擬類型可以是測試人員選擇的,也可以是壓力模擬器配置的。壓力模擬類型中主要包括文件類型以及文件的操作類型,即當前的壓力測試想要采用哪種文件類型的 那些操作對當前的系統進行壓力測試。其中,文件的操作類型主要包括讀、寫、刪除、創建、調用等。不同的文件類型適用于不同的讀寫刪除創建等,其性能不同,自然對系統產生的壓力也不同,例如txt的讀、doc的寫等等。
對于每一種壓力模擬類型,為其配置一個相應的配置文件,配置文件中描述了壓力模擬過程中的壓力生成方式,例如,壓力模擬類型對應的原子操作類型、執行時間、執行頻率等。
比如:一個壓力場景可以表示為1個a文件的寫和1個b文件的讀。
一個典型的配置文件的描述方式舉例如下:
[a_write]
class=awrite
time=100
thread=10
qps=g1(1,2)
arg1=g4(111)
如上配置文件所示,兩個配置文件描述的壓力模擬類型分別是a文件的寫。在a文件的寫這一壓力模擬類型的配置文件中,class=awrite表示a文件的寫對應的原子操作類型以及原子操作對應的類的對象;time=100表示a文件的寫對應的原子操作的執行時間;thread=10表示為a文件的寫這一壓力模擬類型創建的線程數;qps=g1(1,2)表示a文件的寫對應的原子操作的執行頻率,arg1=g4(111)表示a文件對應的原子操作在執行時的寫入的文件長度,其中,g()函數表示一種分布,通過分布類將其解析后通常會返回一個數值或者字符串。
具體的,在步驟s120中,首先對所述配置文件進行解析。配置文件中主要包含兩類參數,具體解析時,先由執行框架frame對第一類參數進行解析,其中,所述第一類參數具體包括所述壓力模擬類型對應的當前原子操作的執行時間、所述當前原子操作的執行頻率以及為所述當前原子操作創建的線程數等。
在本步驟中,當執行框架frame對第一類參數進行解析的結果包括當前原子操作創建的線程數時,為當前的所述壓力模擬類型創建相應數量的線程。
具體的,在創建線程之后,在每個所述線程中創建一個原子操作的類的對象,所述原子操作的類的對象是根據所述壓力模擬類型進行創建的。例如,當壓力模擬類型是“a文件的讀”時,創建的原子操作的類的對象即是“a文件的讀”,記為classa。所述classa能夠解析與原子操作有關的參數。因此,對于配置文件中的第二類參數,所述執行框架frame將其傳遞至classa進行解析。
需要說明的是,所述第二類參數主要是原子操作的需求參數,包括當前原子操作的文件的長度、文件大小等。通常采用分布的方式動態描述這些參數,例如cauchy(柯西分布),constant(常量分布),empirical(經驗分布),exponent(指數分布),extreme(極值分布),geometric(幾何分布),lognormal(對數正態分布),normal(正態分布),poisson(泊松分布),uniform(均勻分布)等。利用這些不同的分布來描述原子操作的參數,使得這些參數能夠不斷的動態變化,可以在一次設置的情況下,模擬出不同的壓力生成方式,對系統的測試更加真實,同時也能夠節省時間,避免對配置文件的不斷修改。
具體的,在步驟130中,建立的每個線程在執行的時候,調用當前線程中創建的原子操作的類的對象的execute方法,每調用一次execute方法就是執行一次原子操作,即完成一次預設類型的壓力模擬。
本實施例中,通過將不同類型文件的不同操作封裝成原子操作并通過配置文件的方式對原子操作進行配置描述,能夠組合成任意復雜的壓力測試場景;與此同時,采用分布的方式來描述原子操作的參數,使得原子操作的參數能夠動態變化從而實現了對壓力的動態模擬,實現了更加真實的壓力測試。
圖2是本申請實施例二的技術流程圖,結合圖2,本申請一種壓力模擬方法還可以有如下可行的實施方式:
步驟s210:將不同文件類型的一次執行操作封裝成一個原子操作。
其中,所述不同文件類型包括能夠在系統操作并對系統產生一定壓力的 所有文件的類型;所述執行操作包括寫或讀或刪除或創建或調用等,當然,應當理解,所有能夠對文件執行的操作都應在本發明的保護范圍之內。
步驟s220:為壓力模擬寫配置文件。
所述配置文件中描述了產生模擬壓力的壓力器的壓力生產方式,解析所述配置文件能夠得到所述壓力器在進行壓力模擬時采用何種壓力模擬類型、壓力模擬類型對應的原子操作、原子操作的執行時間、執行頻率以及第二參數的傳遞對象等等。
本實施例中,假設現有file1\file2兩種不同類型的文件,其適用的兩種操作分別為讀\寫。假設file1的讀\寫、file2的讀\寫對應的所述配置文件分別如下所展示的:
[file1_write]
class=a
qps=g1(n1)
thread=20
time=100
arg1=g1(n2)
[file1_read]
class=b
qps=g4(n3)
thread=10
time=120
arg2=g2(n4)
[file2_read]
class=c
qps=g4(n5)
thread=20
time=100
arg3=g3(n6)
[file2_write]
class=d
qps=g1(n7)
thread=20
time=150
arg4=g4(n8)
在file1_write的配置文件中,對file1這一文件類型的寫操作對應的原子操作是a,且在為file1的寫操作創建線程后,在每個線程中創建a的類的對象classa,并由a來解析file1_write的配置文件中的第二參數;qps=g1(n1)表示,以n1的g1()分布來描述file1_write對應的原子操作的執行頻率;thread=20,表示為file1_write這一壓力模擬創建20個進程;time=100表示ile1_write對應的原子操作的執行時間為100;arg1=g1(n2)表示以n2的g2()f分布來描述ile1_write對應的原子操作的文件長度。其中,每執行一次原子操作,qps=g1(n1)以及arg1=g1(n2)都會返回一個值或者字符串供壓力器直接使用。
file1_read、file2_read以及file2_write的配置文件參考以上描述進行理解,此處不做贅述。
需要說明的是,本申請實施例中,步驟s210和步驟s220并無固定的先后順序,也可以是先寫配置文件再進行原子操作的封裝,上述分步描述僅供闡述說明使用,對本申請實施例并不構成限制。
步驟s230:獲取壓力模擬類型并讀取所述壓力模擬類型對應的配置文件。
本實施例中,壓力模擬類型可以是自定義的,可由測試人員進行選擇。假設本實施例中,測試類型為file1文件的讀以及file2文件的寫。當獲取到壓力模擬類型之后,可根據所述壓力模擬類型讀取寫好的配置文件,承接上一步驟中所舉的例子,本實施例中,讀取的是file1_read以及file2_write。
步驟s240:執行框架frame對所述配置文件進行解析并創建相應的線程。
在配置文件中,執行框架并非能夠完全解析所有的參數,它只能夠解析部分特殊參數,即第一類參數,例如步驟s220中的class、qps、thread、tim等。除這些參數外,還有另一類參數是執行框架frame不能直接解析的,即第二類參數。frame將自己不能解析的第二類參數傳遞給能夠對第二類參數進行解析的類,具體傳遞對象就是frame解析出的class。例如,承接步驟s230,執行框架對配置文件的解析結果中,class=a,則第二類參數的將由執行框架傳遞給classa進行解析,例如file1_write配置文件中的arg1=g1(n2)。
所述執行框架frame除解析配置文件以及傳遞參數之外,還需根據解析到的壓力模擬類型創建的線程數為當前壓力模擬創建相應數量的線程。承接步驟s220以及s230中的例子,為file1的讀操作創建20個線程,為file2的寫操作創建20個線程。
步驟s250:在每個線程中創建一個原子操作的類的對象并將第二參數傳遞至每個線程里的對象;
每個原子操作都是一個類,本實施例中,在每個線程中為原子操作創建類的對象。承接上一步驟的例子,為file1的讀操作創建20個線程之后,在每個線程中創建classa的對象,并將第二參數,即arg1=g1(n2)傳遞給classa里的對象。
步驟s260:每個線程執行調用execute方法執行相應的原子操作。
本步驟中,每個線程的參數配置好之后,即可調用execute方法,執行與所述壓力模擬類型相對應的原子操作。例如,在file1的讀操作創建的線程中調用execute方法時,執行的是與file1的讀操作相對應的原子操作;同理,若是在file2的寫操作創建的線程中調用execute方法時,執行的是與file2的寫操作相對應的原子操作。
在每個線程中,每調用一次execute方法都是執行一次原子操作,重復執行步驟s270直至到timeout或出現任何異常。
優選的,在步驟s260之后,本申請實施例還可包括步驟s270以及步驟s280。
步驟s270:修改壓力模擬類型。
壓力測試場景越接近真實的壓力場景對系統抗壓能力的測試越有效,然而真實的系統產生壓力時是多變的且不定性的,因此,如上述步驟所示的單一壓力測試方式并不能夠完全滿足測試需求。本申請實施例中,當壓力測試所需的壓力模擬類型修改或增加時,并不需要重新進行進行測試代碼的編寫,只需要告知進行壓力模擬的壓力器需要進行模擬的壓力類型是什么。
例如,本申請實施例中,測試類型更改為file1文件的寫以及file1文件的讀以及file2文件的刪除。
步驟s280:根據所述壓力模擬類型讀取相應的配置文件。
不同壓力模擬類型的配置文件是已經寫好的,當獲知壓力測試的壓力模擬類型時,直接根據所需讀取現有的配置文件并進行解析即可。
承接上一步驟的例子,根據壓力模擬類型讀取file1文件的寫的配置文件file1_write、file1文件的讀的配置文件file1_read以及file2文件的刪除的配置文件file2_delete。
在步驟s280之后的步驟如步驟s240~步驟s260所述,此處不做贅述。
特別的,當壓力模擬類型增加時,將分別為不同類型的壓力模擬創建預設數量的線程,并在不同類型的線程中調用execute方法執行相應不同類型的原子操作。承接上述例子,本實施例中,將在為file1文件的寫創建的線程中,調用execute方法執行寫file1文件的原子操作,在為file1文件的讀創建的線程中,調用execute方法執行讀file1文件的原子操作,為file2文件的刪除創建的線程中,調用execute方法執行刪除file2文件的原子操作。
當壓力模擬類型再變化或是更加復雜時,只需獲取目標模擬類型,便可讀取相應的配置文件并執行相應的原子操作,從而通過不同類型原子操作的組合實現任意類型的壓力模擬。
本實施例中,通過將壓力測試拆分成不同的原子操作,并且通過不同的原子操作進行組合的方式實現不同場景的壓力測試,降低了壓力測試的開發成本,簡易而高效。
圖3是本申請實施例三的技術流程圖,結合圖2,本申請一種壓力模擬方法還有如下另一種可行的實施方式:
步驟s310:將不同文件類型的一次執行操作封裝成一個原子操作。
其中,所述不同文件類型包括能夠在系統操作并對系統產生一定壓力的所有文件的類型;所述執行操作包括寫或讀或刪除或創建或調用等,當然,應當理解,所有能夠對文件執行的操作都應在本發明的保護范圍之內。
步驟s320:為壓力模擬寫配置文件。
所述配置文件中描述了產生模擬壓力的壓力器的壓力生產方式,解析所述配置文件能夠得到所述壓力器在進行壓力模擬時采用何種壓力模擬類型、壓力模擬類型對應的原子操作、原子操作的執行時間、執行頻率以及第二參數的傳遞對象等等。
本實施例中,假設現有file1\file2兩種不同類型的文件,其適用的兩種操作分別為讀\寫。假設file1的讀\寫、file2的讀\寫對應的所述配置文件分別如下所展示的:
[file1_write]
class=a
qps=g1(n1)
thread=20
time=100
arg1=g1(n2)
[file1_read]
class=b
qps=g4(n3)
thread=10
time=120
arg2=g2(n4)
[file2_read]
class=c
qps=g4(n5)
thread=20
time=100
arg3=g3(n6)
[file2_write]
class=d
qps=g1(n7)
thread=20
time=150
arg4=g4(n8)
在file1_write的配置文件中,對file1這一文件類型的寫操作對應的原子操作是a,且在為file1的寫操作創建線程后,在每個線程中創建a的類的對象classa,并由a來解析file1_write的配置文件中的第二參數;qps=g1(n1)表示,以n1的g1()分布來描述file1_write對應的原子操作的執行頻率;thread=20,表示為file1_write這一壓力模擬創建20個進程;time=100表示ile1_write對應的原子操作的執行時間為100;arg1=g1(n2)表示以n2的g2()f分布來描述ile1_write對應的原子操作的文件長度。其中,每執行一次原子操作,qps=g1(n1)以及arg1=g1(n2)都會返回一個值或者字符串供壓力器直接使用。
file1_read、file2_read以及file2_write的配置文件參考以上描述進行理解,此處不做贅述。
需要說明的是,本申請實施例中,步驟s310和步驟s320并無固定的先后順序,也可以是先寫配置文件再進行原子操作的封裝,上述分步描述僅供闡述說明使用,對本申請實施例并不構成限制。
步驟s330:獲取壓力模擬類型并讀取所述壓力模擬類型對應的配置文件。
本實施例中,壓力模擬類型可以是自定義的,可由測試人員進行選擇。假設本實施例中,測試類型為file1文件的讀以及file2文件的寫。當獲取到壓力模擬類型之后,可根據所述壓力模擬類型讀取寫好的配置文件,承接上一步驟中所舉的例子,本實施例中,讀取的是file1_read以及file2_write。
步驟s340:執行框架frame對所述配置文件進行解析并創建相應的線程。
在配置文件中,執行框架并非能夠完全解析所有的參數,它只能夠解析部分特殊參數,即第一類參數,例如步驟s320中的class、qps、thread、time等。除這些參數外,還有另一類參數是執行框架frame不能直接解析的,即第二類參數。frame將自己不能解析的第二類參數傳遞給能夠對第二類參數進行解析的類,具體傳遞對象就是frame解析出的class。例如,承接步驟s230,執行框架對配置文件的解析結果中,class=a,則第二類參數的將由執行框架傳遞給classa進行解析,例如file1_write配置文件中的arg1=g1(n2)。
所述執行框架frame除解析配置文件以及傳遞參數之外,還需根據解析到的壓力模擬類型創建的線程數為當前壓力模擬創建相應數量的線程。承接步驟s320以及s330中的例子,為file1的讀操作創建20個線程,為file2的寫操作創建20個線程。
步驟s350:在每個線程中創建一個原子操作的類的對象并將第二參數傳遞至每個線程里的對象;
每個原子操作都是一個類,本實施例中,在每個線程中為原子操作創建類的對象。承接上一步驟的例子,為file1的讀操作創建20個線程之后,在 每個線程中創建classa的對象,并將第二參數,即arg1=g1(n2)傳遞給classa里的對象。
步驟s360:每個線程執行調用execute方法執行相應的原子操作。
本步驟中,每個線程的參數配置好之后,即可調用execute方法,執行與所述壓力模擬類型相對應的原子操作。例如,在file1的讀操作創建的線程中調用execute方法時,執行的是與file1的讀操作相對應的原子操作;同理,若是在file2的寫操作創建的線程中調用execute方法時,執行的是與file2的寫操作相對應的原子操作。
在每個線程中,每調用一次execute方法都是執行一次原子操作,重復執行步驟s370直至到timeout或出現任何異常。
優選的,在步驟s360之后,本申請實施例還可包括步驟s370以及步驟s380。
步驟s370:修改壓力模擬類型對應的的配置文件。
在本實施例中,假設這樣一種壓力測試場景,對file1的寫操作的測試時間需要加長,且測試頻率需要更快,按照本申請實施例的技術方案,不需要重新編寫測試程序,只需更改file1的寫操作的配置文件即可,配置文件中的第一類參數和第二類參數都可根據測試的需要進行修改。
承接步驟s320中的例子,file1的寫操作的配置文件可以更改如下:
[file1_write]
class=a
qps=g1(n7)
thread=20
time=200
arg1=g1(n8)
上述對配置文件的修改,更新了寫file1原子操作對應的執行頻率,創建的線程數、執行時間以及寫文件的長度等。當然,應當理解,上述修改僅供舉例使用,對本申請實施例不構成任何限制。
本申請實施例中,當壓力測試所需的壓力模擬類型的壓力生成方式產生變化時,并不需要重新進行進行測試代碼的編寫,只需更改相應的配置文件即可實現不同場景、不同壓力大小的壓力測試。
步驟s380:執行框架frame對所述配置文件進行解析并創建相應的線程。
在上一步驟中,配置文件經過修改更新,此步驟中,需重新讀取更新后的配置文件,并對更新后的配置文件進行解析,從而根據配置文件產生目標壓力對系統進行測試。
在步驟s380之后的步驟如步驟s350~步驟s360所述,此處不做贅述。
本實施例中,通過修改不同壓力測試類型對應的配置文件,改變壓力模擬的壓力產生方式,即使壓力測試的要求有所更改,也無需增加新的測試代碼,修改配置文件即可模擬出任意場景的壓力測試。
圖4是本申請實施例四的裝置結構示意圖,結合圖4,本申請一種壓力模擬裝置,包括:
參數獲取模塊410,用于獲取壓力模擬類型,并讀取所述模擬類型相對應的配置文件;
解析與創建模塊420,用于解析所述配置文件并根據所述配置文件的解析結果創建一定數量的線程;
壓力產生模塊430,所述線程調用execute方法,用于根據所述配置文件的解析結果執行與所述壓力模型相對應的預設的原子操作。
其中,所述壓力模擬類型包括文件類型以及文件的操作類型。
所述裝置還包括原子操作封裝模塊440:所述原子操作封裝模塊,用于執行與所述壓力模型相對應的預設的原子操作之前,將一種文件類型的一種操作類型封裝成一個原子操作。
所述解析與創建模塊420還用于:在每個所述線程中創建一個原子操作的類的對象。
所述解析與創建模塊420具體用于:由執行框架解析第一類參數,其中所述第一類參數包括所述壓力模擬類型對應的當前原子操作的執行時間、所述當前原子操作的執行頻率以及為所述當前原子操作創建的線程數。
所述解析與創建模塊420具體用于:所述執行框架將第二類參數傳遞至所述原子操作的類的對象,并由所述原子操作的類的對象解析所述第二類參數。
所述裝置還包括:在所述第二類參數中,使用分布的方式描述所述原子操作的參數。
圖4所示實施例可以執行圖1、圖2及圖3所示實施例所述方法,其實現原理和技術效果不做贅述。
上述說明示出并描述了本發明的若干優選實施例,但如前所述,應當理解本發明并非局限于本文所披露的形式,不應看作是對其他實施例的排除,而可用于各種其他組合、修改和環境,并能夠在本文所述發明構想范圍內,通過上述教導或相關領域的技術或知識進行改動。而本領域人員所進行的改動和變化不脫離本發明的精神和范圍,則都應在本發明所附權利要求的保護范圍內。