本發(fā)明涉及測試技術(shù)領(lǐng)域,特別涉及一種面向分布式存儲集群的測試方法及裝置。
背景技術(shù):
目前,大數(shù)據(jù)運(yùn)算時代所產(chǎn)生的海量數(shù)據(jù)多為非結(jié)構(gòu)化數(shù)據(jù),且數(shù)據(jù)的數(shù)量級別以指數(shù)型趨勢增長。
為滿足海量數(shù)據(jù)的存儲需求,分布式存儲系統(tǒng)應(yīng)運(yùn)而生。分布式存儲系統(tǒng)的功能可以解決海量數(shù)據(jù)存儲和服務(wù)器應(yīng)用的問題,其將存儲重新納入服務(wù)器內(nèi),將傳統(tǒng)服務(wù)器使用方式重新激活,常規(guī)服務(wù)器在擔(dān)任計算角色的同時,也擔(dān)任數(shù)據(jù)存儲角色。
但是,分布式存儲系統(tǒng)是橫向擴(kuò)展的,多個服務(wù)器之間同時要依賴復(fù)雜的網(wǎng)絡(luò)拓?fù)洌纬纱鎯?。分布式存儲系統(tǒng)通過相關(guān)算法提供數(shù)據(jù)讀寫及落盤功能。因此,分布式存儲集群的測試需要考慮多方因素,進(jìn)而導(dǎo)致難度較大,且現(xiàn)有技術(shù)中還沒有針對分布式存儲集群的測試方法。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是提供一種面向分布式存儲集群的測試方法及裝置,目的在于解決現(xiàn)有分布式存儲集群測試難以實現(xiàn)的問題。
為解決上述技術(shù)問題,本發(fā)明提供一種面向分布式存儲集群的測試方法,該方法包括:
運(yùn)行預(yù)搭建的自動化控制節(jié)點的執(zhí)行腳本讀取任務(wù)隊列,獲取待執(zhí)行任務(wù)信息,所述待執(zhí)行任務(wù)信息為包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息的信息;
從任務(wù)機(jī)池選取所需的虛擬機(jī)節(jié)點;
根據(jù)所述集群配置信息,基于所述虛擬機(jī)節(jié)點,執(zhí)行搭建分布式集群腳本,搭建分布式集群;
根據(jù)所述測試腳本信息,通過所述虛擬機(jī)節(jié)點獲取腳本庫的測試腳本;
根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果。
可選地,在所述根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果之后還包括:
根據(jù)所述測試結(jié)果及測試過程中的測試信息,生成測試日志。
可選地,在所述根據(jù)所述測試結(jié)果及測試過程中的測試信息,生成測試日志之后還包括:
分析所述測試日志,生成測試報告;
以預(yù)設(shè)發(fā)送方式,將所述測試報告自動發(fā)送至預(yù)設(shè)地址。
可選地,在所述根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果之后還包括:
清理所述分布式集群,釋放所述虛擬機(jī)節(jié)點。
可選地,所述自動化控制節(jié)點的搭建過程具體為:
創(chuàng)建ssh-key,并設(shè)置ssh免密信息;
配置所述腳本庫、yum源及所述任務(wù)隊列;
將所述任務(wù)機(jī)池的各個虛擬機(jī)節(jié)點信息寫入數(shù)據(jù)庫;
獲取預(yù)編寫的自動化測試配置文件。
此外,本發(fā)明還提供了一種面向分布式存儲集群的測試裝置,該裝置包括:
待執(zhí)行任務(wù)信息獲取模塊,用于運(yùn)行預(yù)搭建的自動化控制節(jié)點的執(zhí)行腳本讀取任務(wù)隊列,獲取待執(zhí)行任務(wù)信息,所述待執(zhí)行任務(wù)信息為包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息的信息;
節(jié)點選取模塊,用于從任務(wù)機(jī)池選取所需的虛擬機(jī)節(jié)點;
集群搭建模塊,用于根據(jù)所述集群配置信息,基于所述虛擬機(jī)節(jié)點,執(zhí)行搭建分布式集群腳本,搭建分布式集群;
測試腳本獲取模塊,用于根據(jù)所述測試腳本信息,通過所述虛擬機(jī)節(jié)點獲取腳本庫的測試腳本;
測試模塊,用于根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果。
可選地,還包括:
日志生成模塊,用于根據(jù)所述測試結(jié)果及測試過程中的測試信息,生成測試日志。
可選地,還包括:
測試報告生成模塊,用于分析所述測試日志,生成測試報告;
自動發(fā)送模塊,用于以預(yù)設(shè)發(fā)送方式,將所述測試報告自動發(fā)送至預(yù)設(shè)地址。
可選地,還包括:
清理模塊,用于清理所述分布式集群,釋放所述虛擬機(jī)節(jié)點。
可選地,還包括:
創(chuàng)建模塊,用于創(chuàng)建ssh-key,并設(shè)置ssh免密信息;
配置模塊,用于配置所述腳本庫、yum源及所述任務(wù)隊列;
寫入模塊,用于將所述任務(wù)機(jī)池的各個虛擬機(jī)節(jié)點信息寫入數(shù)據(jù)庫;
配置文件獲取模塊,用于獲取預(yù)編寫的自動化測試配置文件。
本發(fā)明所提供的一種面向分布式存儲集群的測試方法及裝置,通過運(yùn)行預(yù)搭建的自動化控制節(jié)點的執(zhí)行腳本讀取任務(wù)隊列,獲取待執(zhí)行任務(wù)信息,上述待執(zhí)行任務(wù)信息為包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息的信息;從任務(wù)機(jī)池選取所需的虛擬機(jī)節(jié)點;根據(jù)集群配置信息,基于虛擬機(jī)節(jié)點,執(zhí)行搭建分布式集群腳本,搭建分布式集群;根據(jù)測試腳本信息,通過虛擬機(jī)節(jié)點獲取腳本庫的測試腳本;根據(jù)測試用例信息,在虛擬機(jī)節(jié)點執(zhí)行測試腳本,得出測試結(jié)果。本申請通過分布式集群的自動化搭建,功能測試的自動化,實現(xiàn)了分布式存儲集群的自動化測試;且測試執(zhí)行效率較高,可以覆蓋人工測試容易忽略的測試點,測試覆蓋度較高,進(jìn)而使得測試效率和測試質(zhì)量較高。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的面向分布式存儲集群的測試方法的一種具體實施方式的流程示意圖;
圖2為本發(fā)明實施例提供的面向分布式存儲集群的自動化測試方法的示意圖;
圖3為本發(fā)明實施例提供的面向分布式存儲集群的測試裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
請參考圖1,圖1為本發(fā)明實施例提供的面向分布式存儲集群的測試方法的一種具體實施方式的流程示意圖,該方法包括以下步驟:
步驟101:運(yùn)行預(yù)搭建的自動化控制節(jié)點的執(zhí)行腳本讀取任務(wù)隊列,獲取待執(zhí)行任務(wù)信息,所述待執(zhí)行任務(wù)信息為包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息的信息。
可以理解,上述待執(zhí)行任務(wù)信息至少可以包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息,其具體可以通過讀取提交至任務(wù)隊列中的測試任務(wù)的任務(wù)配置文件獲取,而該任務(wù)配置文件可以為使用標(biāo)記語言編寫的自動測試配置文件。當(dāng)然,上述待執(zhí)行任務(wù)信息還可以包括其它信息,在此不作限定。
上述任務(wù)信息可以具體為測試任務(wù)的相關(guān)信息,例如,任務(wù)id;上述集群配置信息可以具體為分布式集群配置文件存儲路徑等相關(guān)信息,該分布式集群配置文件可以為預(yù)先根據(jù)集群配置信息生成的配置文件;上述測試腳本信息可以具體為腳本庫地址信息和測試腳本地址信息等;上述測試用例信息可以具體為測試用例的存儲地址信息等。
上述自動化控制節(jié)點可以是預(yù)先搭建好的,也可以不是預(yù)先搭建好,此時,可以先搭建好自動化控制節(jié)點,再執(zhí)行相應(yīng)的測試任務(wù)。
故在本發(fā)明的一些實施例中,上述自動化控制節(jié)點的搭建過程可以具體為:創(chuàng)建ssh-key,并設(shè)置ssh免密信息;配置所述腳本庫、yum源及所述任務(wù)隊列;將所述任務(wù)機(jī)池的各個虛擬機(jī)節(jié)點信息寫入數(shù)據(jù)庫;獲取預(yù)編寫的自動化測試配置文件。
在搭建自動化控制節(jié)點之前,可以先使用虛擬機(jī)方式,創(chuàng)建任務(wù)機(jī)池,即任務(wù)機(jī)池中包括多個用于執(zhí)行測試任務(wù)的虛擬機(jī)節(jié)點;且為各個任務(wù)機(jī)安裝所需操作系統(tǒng),該操作系統(tǒng)可以為待測軟件包的基礎(chǔ)操作系統(tǒng);各個任務(wù)機(jī)操作系統(tǒng)之間可以配置ssh無密碼訪問。
接著創(chuàng)建自動化控制節(jié)點,設(shè)置ssh免密信息,即自動化控制節(jié)點與任務(wù)機(jī)池內(nèi)的各個虛擬機(jī)節(jié)點同樣配置ssh無密碼訪問;在自動化控制節(jié)點設(shè)置任務(wù)隊列,搭建腳本庫(git/svn)以及yum源,該yum源上存儲有rpm包;然后,將任務(wù)機(jī)池的各個任務(wù)機(jī)信息寫入輕量級數(shù)據(jù)庫中;接收使用標(biāo)記語言編寫的自動化測試配置文件,其中,自動化測試配置文件可以包括預(yù)先設(shè)置的任務(wù)節(jié)點數(shù)量、測試腳本存儲路徑等相關(guān)信息;最后,可以將所需測試任務(wù)提交至任務(wù)隊列。
步驟102:從任務(wù)機(jī)池選取所需的虛擬機(jī)節(jié)點。
可以理解,上述任務(wù)機(jī)池可以有多個任務(wù)機(jī)節(jié)點即虛擬機(jī)節(jié)點,執(zhí)行一次測試任務(wù)時,可以根據(jù)需要選擇虛擬機(jī)節(jié)點個數(shù),例如,某一次測試任務(wù)所需的虛擬機(jī)節(jié)點個數(shù)為3個,而當(dāng)前空閑同一類型操作系統(tǒng)的虛擬機(jī)節(jié)點數(shù)大于3個,此時,可以任意選取3個虛擬機(jī)節(jié)點即可;而當(dāng)空閑同一類型操作系統(tǒng)的虛擬機(jī)節(jié)點小于3個時,則等待至有3個虛擬機(jī)節(jié)點。
步驟103:根據(jù)所述集群配置信息,基于所述虛擬機(jī)節(jié)點,執(zhí)行搭建分布式集群腳本,搭建分布式集群。
選取出所需的虛擬機(jī)節(jié)點后,可以根據(jù)集群配置信息,將選取出的多個虛擬機(jī)節(jié)點搭建成一個分布式集群。
步驟104:根據(jù)所述測試腳本信息,通過所述虛擬機(jī)節(jié)點獲取腳本庫的測試腳本。
上述測試腳本信息可以包括腳本庫地址信息和測試腳本地址信息,此時,基于所搭建的分布式集群中的虛擬機(jī)節(jié)點,先根據(jù)腳本庫地址信息將腳本庫復(fù)制至本地,該腳本庫地址信息可以具體表現(xiàn)為目錄,而測試腳本地址信息相對于目錄的子目錄,接著根據(jù)測試腳本地址信息遠(yuǎn)程到腳本庫,從腳本庫中讀取對應(yīng)的測試腳本至虛擬機(jī)節(jié)點。
步驟105:根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果。
分布式存儲集群中的虛擬機(jī)節(jié)點獲取到相應(yīng)的測試腳本后,可以在該虛擬機(jī)節(jié)點上執(zhí)行所獲取的測試腳本。具體地,執(zhí)行相應(yīng)的測試腳本之后,可以根據(jù)測試用例存儲地址等相關(guān)信息,讀取到測試用例,并運(yùn)行該測試用例,進(jìn)而得出測試結(jié)果。
上述測試腳本可以具體為shell腳本,也可以為其它類型的腳本,在此不作限定。
在得出測試結(jié)果后,可以生成相應(yīng)的測試日志,以便后續(xù)的查看和分析。故在本發(fā)明的一些實施例中,在上述根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果之后還可以包括:根據(jù)所述測試結(jié)果及測試過程中的測試信息,生成測試日志。
上述測試信息可以是指測試過程中的腳本數(shù)量及執(zhí)行時間等相關(guān)信息,根據(jù)測試結(jié)果和測試信息生成測試日志,即測試日志可以包括測試結(jié)果、腳本數(shù)量及執(zhí)行時間等相關(guān)信息。
可以理解,每一條功能測試腳本有其對應(yīng)的測試日志。而生成測試日志后,虛擬機(jī)節(jié)點可以將測試日志上傳至指定節(jié)點的指定路徑下,便于后續(xù)的日志的讀取。
為使得測試結(jié)果直觀可見,可以對測試日志進(jìn)行分析,生成測試包括,故在本發(fā)明的一些實施例中,在上述根據(jù)所述測試結(jié)果及測試過程中的測試信息,生成測試日志之后還可以包括:分析所述測試日志,生成測試報告;以預(yù)設(shè)發(fā)送方式,將所述測試報告自動發(fā)送至預(yù)設(shè)地址。
具體地,可以通過日志分析腳本讀取指定路徑下的測試日志,對其進(jìn)行分析,生成測試報告。該測試報告具體可以表現(xiàn)為測試表,該表中可以包括一些預(yù)先設(shè)定的測試項,例如,腳本執(zhí)行數(shù)量、執(zhí)行成功數(shù)量及失敗數(shù)量等。
上述預(yù)設(shè)發(fā)送方式可以具體為郵件,也可以為短信等其它形式,在此不作限定。上述預(yù)設(shè)地址可以具體是指測試人員的郵件地址、手機(jī)地址等。
可以看出,通過日志的自動化分析,自動化生成測試報告,可以使得測試結(jié)果清晰直觀,且使得測試人員及時了解相應(yīng)的測試情況,同時,也可以提高一定的測試效率。
為合理使用系統(tǒng)資源,且便于后續(xù)的系統(tǒng)配置工作的進(jìn)行,可以在一次測試完成后,釋放相應(yīng)資源,避免資源的長期被占用。故在本發(fā)明的一些實施例中,在上述根據(jù)所述測試用例信息,在所述虛擬機(jī)節(jié)點執(zhí)行所述測試腳本,得出測試結(jié)果之后還可以包括:清理所述分布式集群,釋放所述虛擬機(jī)節(jié)點。
可以理解,在一次測試完成后,可以同時進(jìn)行測試日志的讀取、測試報告生成和資源釋放。且在測試失敗時,也會進(jìn)行相應(yīng)的資源釋放。
為使本發(fā)明實施例的方案更直觀,下面將結(jié)合圖2進(jìn)行介紹,圖2為本發(fā)明實施例提供的面向分布式存儲集群的自動化測試方法的示意圖。
如圖2所示,提交測試任務(wù)至任務(wù)隊列后,執(zhí)行任務(wù)隊列中的任務(wù),從包括n個任務(wù)機(jī)的任務(wù)機(jī)池中選取任務(wù)機(jī)1、任務(wù)機(jī)2及任務(wù)機(jī)3搭建成一個集群,并從yum源中獲取rpm包安裝在集群節(jié)點上,然后任務(wù)機(jī)1從測試腳本庫中獲取所需的測試腳本,任務(wù)機(jī)1執(zhí)行所獲取的測試腳本,測試完成上傳測試日志,然后分析測試日志可以生成測試報告,并將該測試報告以郵件方式進(jìn)行自動發(fā)送。
本實施例所提供的面向分布式存儲集群的測試方法,通過運(yùn)行預(yù)搭建的自動化控制節(jié)點的執(zhí)行腳本讀取任務(wù)隊列,獲取待執(zhí)行任務(wù)信息,上述待執(zhí)行任務(wù)信息為包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息的信息;從任務(wù)機(jī)池選取所需的虛擬機(jī)節(jié)點;根據(jù)集群配置信息,基于虛擬機(jī)節(jié)點,執(zhí)行搭建分布式集群腳本,搭建分布式集群;根據(jù)測試腳本信息,通過虛擬機(jī)節(jié)點獲取腳本庫的測試腳本;根據(jù)測試用例信息,在虛擬機(jī)節(jié)點執(zhí)行測試腳本,得出測試結(jié)果。該方法通過分布式集群的自動化搭建,功能測試的自動化,實現(xiàn)了分布式存儲集群的自動化測試;且測試執(zhí)行效率較高,可以覆蓋人工測試容易忽略的測試點,測試覆蓋度較高,進(jìn)而使得測試效率和測試質(zhì)量較高。
下面對本發(fā)明實施例提供的一種面向分布式存儲集群的測試裝置進(jìn)行介紹,下文描述的一種面向分布式存儲集群的測試裝置與上文描述的一種面向分布式存儲集群的測試方法可相互對應(yīng)參照。
請參考圖3,圖3為本發(fā)明實施例提供的面向分布式存儲集群的測試裝置的結(jié)構(gòu)示意圖,該裝置包括:
待執(zhí)行任務(wù)信息獲取模塊31,用于運(yùn)行預(yù)搭建的自動化控制節(jié)點的執(zhí)行腳本讀取任務(wù)隊列,獲取待執(zhí)行任務(wù)信息,上述待執(zhí)行任務(wù)信息為包括任務(wù)信息、集群配置信息、測試腳本信息及測試用例信息的信息;
節(jié)點選取模塊32,用于從任務(wù)機(jī)池選取所需的虛擬機(jī)節(jié)點;
集群搭建模塊33,用于根據(jù)集群配置信息,基于虛擬機(jī)節(jié)點,執(zhí)行搭建分布式集群腳本,搭建分布式集群;
測試腳本獲取模塊34,用于根據(jù)測試腳本信息,通過虛擬機(jī)節(jié)點獲取腳本庫的測試腳本;
測試模塊35,用于根據(jù)測試用例信息,在虛擬機(jī)節(jié)點執(zhí)行測試腳本,得出測試結(jié)果。
在本發(fā)明的一些實施例中,上述裝置還可以包括:
日志生成模塊,用于根據(jù)測試結(jié)果及測試過程中的測試信息,生成測試日志。
在本發(fā)明的一些實施例中,上述裝置還可以包括:
測試報告生成模塊,用于分析測試日志,生成測試報告;
自動發(fā)送模塊,用于以預(yù)設(shè)發(fā)送方式,將測試報告自動發(fā)送至預(yù)設(shè)地址。
在本發(fā)明的一些實施例中,上述裝置還可以包括:
清理模塊,用于清理分布式集群,釋放虛擬機(jī)節(jié)點。
在本發(fā)明的一些實施例中,上述裝置還可以包括:
創(chuàng)建模塊,用于創(chuàng)建ssh-key,并設(shè)置ssh免密信息;
配置模塊,用于配置腳本庫、yum源及任務(wù)隊列;
寫入模塊,用于將任務(wù)機(jī)池的各個虛擬機(jī)節(jié)點信息寫入數(shù)據(jù)庫;
配置文件獲取模塊,用于獲取預(yù)編寫的自動化測試配置文件。
本實施例所提供的面向分布式存儲集群的測試裝置,該裝置通過分布式集群的自動化搭建,功能測試的自動化,實現(xiàn)了分布式存儲集群的自動化測試;且測試執(zhí)行效率較高,可以覆蓋人工測試容易忽略的測試點,測試覆蓋度較高,進(jìn)而使得測試效率和測試質(zhì)量較高。
說明書中各個實施例采用遞進(jìn)的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應(yīng),所以描述的比較簡單,相關(guān)之處參見方法部分說明即可。
專業(yè)人員還可以進(jìn)一步意識到,結(jié)合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機(jī)軟件或者二者的結(jié)合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以對每個特定的應(yīng)用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機(jī)存儲器(rpm)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本發(fā)明所提供的面向分布式存儲集群的測試方法及裝置進(jìn)行了詳細(xì)介紹。本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進(jìn)行若干改進(jìn)和修飾,這些改進(jìn)和修飾也落入本發(fā)明權(quán)利要求的保護(hù)范圍內(nèi)。