專利名稱:一種分布式智能調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及自動(dòng)化軟件測試技術(shù)領(lǐng)域,尤其涉及一種分布式智能調(diào)度方法。
背景技術(shù):
目前ERP產(chǎn)品的特點(diǎn)是功能強(qiáng)大、流程復(fù)雜,手工回歸測試工作量大,人力成本過高,所以自動(dòng)化測試技術(shù)是個(gè)最優(yōu)的選擇。但是如果使用一臺(tái)機(jī)器串行執(zhí)行測試場景完成一次全面的回歸測試,耗時(shí)時(shí)間長,無法滿足日常補(bǔ)丁測試周期短、頻率高的需求。如何保 證自動(dòng)化回歸測試能在不增加人力的情況下短期內(nèi)完成日常補(bǔ)丁回歸測試,是需要解決的問題。因此,出現(xiàn)了分布式智能調(diào)度系統(tǒng)。然而,現(xiàn)有的分布式調(diào)度的技術(shù)存在如下缺陷
.1.無法支持用戶靈活選擇測試場景
目前的主流技術(shù)采用關(guān)鍵字導(dǎo)出測試場景或按照?qǐng)鼍傲斜戆凑諆?yōu)先級(jí)等機(jī)制分發(fā)測試場景。這種調(diào)度機(jī)制存在的缺陷在于用戶只能運(yùn)行同一關(guān)鍵字的場景組,無法靈活選擇測試場景;或者沒有智能處理場景間的依賴關(guān)系,導(dǎo)致某個(gè)場景沒有運(yùn)行的話,后續(xù)腳本都無法走到,增加腳本運(yùn)行失敗的可能性;
.2.不支持多個(gè)數(shù)據(jù)庫實(shí)例同時(shí)運(yùn)行的需求
目前現(xiàn)有技術(shù)只實(shí)現(xiàn)同一個(gè)數(shù)據(jù)庫實(shí)例內(nèi)場景運(yùn)行的調(diào)度,而實(shí)際情況需要多個(gè)數(shù)據(jù)庫實(shí)例并行運(yùn)行,已有技術(shù)存在局限;
.3.沒有包含中斷處理技術(shù)
目前現(xiàn)有技術(shù)在處理測試機(jī)運(yùn)行失敗后,測試工具就中斷停止,需要重新運(yùn)行一次,才能繼續(xù)。并且測試日志依賴于測試工具的日志系統(tǒng),無法按照測試需求記錄中斷記錄、日志。故,針對(duì)上述現(xiàn)有技術(shù)存在的缺陷,實(shí)有必要進(jìn)行研究,以提供一種分布式智能調(diào)度方法。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明的目的在于提供一種分布式智能調(diào)度方法,其支持用戶靈活選擇測試場景以及多個(gè)數(shù)據(jù)庫實(shí)例同時(shí)運(yùn)行的需求。為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案為
一種分布式智能調(diào)度系統(tǒng)及方法,包括如下步驟
510:提供一支持用戶靈活選擇場景的用戶操作平臺(tái);
511:提供分布式調(diào)度執(zhí)行機(jī)制;
512:在操作平臺(tái)中為每個(gè)數(shù)據(jù)庫實(shí)例選擇測試場景;
其中,執(zhí)行步驟SlO之前首先完成場景列表,所述場景列表記錄了所有場景的所屬關(guān)鍵應(yīng)用、業(yè)務(wù)類型、場景編號(hào)、場景名稱、腳本相對(duì)于腳本項(xiàng)目的存放路徑、以及依賴項(xiàng)編號(hào)的基本信息;所述用戶操作平臺(tái)以該場景列表為依據(jù),支持用戶選擇產(chǎn)品版本、關(guān)鍵應(yīng)用、業(yè)務(wù)類型過濾場景,靈活選擇測試場景,生成運(yùn)行場景列表。
進(jìn)一步地,所述用戶操作平臺(tái)包括有參數(shù)設(shè)置界面、選擇場景界面、監(jiān)控機(jī)端操作界面、以及測試機(jī)端操作界面;其中,參數(shù)設(shè)置界面用于設(shè)置此次測試任務(wù)的唯一標(biāo)識(shí)、以及設(shè)置要進(jìn)行測試的數(shù)據(jù)庫實(shí)例名稱;監(jiān)控機(jī)端操作界面設(shè)置有一個(gè)端口號(hào);而測試機(jī)端操作界面用于設(shè)置要連接的監(jiān)控機(jī)IP、端口號(hào)、本機(jī)腳本項(xiàng)目存放的路徑,進(jìn)行與監(jiān)控機(jī)間的連接。進(jìn)一步地,所述步驟Sll具體包括
SllO :設(shè)置監(jiān)控機(jī)端智能調(diào)度機(jī)制;
Sm :測試機(jī)端接收測試指令,調(diào)用腳本運(yùn)行,內(nèi)含中斷處理;
5112:測試機(jī)實(shí)時(shí)回傳測試結(jié)果,分配任務(wù)運(yùn)行結(jié)束后返回日志;
5113:監(jiān)控機(jī)分析測試結(jié)果,檢查測試機(jī)狀態(tài),如果空閑,則轉(zhuǎn)到執(zhí)行步驟S110。進(jìn)一步地,在所述SllO中,以用戶操作平臺(tái)生成的運(yùn)行場景列表為循環(huán)依據(jù),運(yùn) 行場景列表中設(shè)置運(yùn)行狀態(tài)字段;調(diào)度機(jī)制按順序循環(huán)判斷當(dāng)前場景的運(yùn)行條件,當(dāng)該場景尚未運(yùn)行,且其依賴項(xiàng)運(yùn)行成功的才予以進(jìn)行分發(fā)。進(jìn)一步地,在所述步驟S113中,監(jiān)控機(jī)接收到測試機(jī)發(fā)回的運(yùn)行信息后,進(jìn)行處理,如果是測試結(jié)果信息,則實(shí)時(shí)記錄到運(yùn)行結(jié)果中,如果是測試日志,則說明該測試機(jī)運(yùn)行結(jié)束,將日志信息附到監(jiān)控機(jī)端的日志文件后面,返回繼續(xù)進(jìn)行后續(xù)腳本的分配,直到所有的場景運(yùn)行結(jié)束。進(jìn)一步地,在所述步驟S12中,通過運(yùn)行場景生成機(jī)制把已選場景放在一個(gè)運(yùn)行場景列表中,用實(shí)例名稱字段標(biāo)識(shí)運(yùn)行的實(shí)例,在腳本執(zhí)行時(shí),腳本會(huì)判斷當(dāng)前實(shí)例名稱是否是要運(yùn)行的實(shí)例,進(jìn)行選擇實(shí)例處理,再進(jìn)行測試。相較于現(xiàn)有技術(shù),本發(fā)明分布式智能調(diào)度方法的用戶操作平臺(tái)支持用戶靈活選擇測試場景;通過監(jiān)控機(jī)調(diào)度機(jī)制,實(shí)現(xiàn)測試場景間關(guān)系的智能處理;支持多個(gè)數(shù)據(jù)庫實(shí)例并行運(yùn)行;腳本內(nèi)含中斷處理,實(shí)現(xiàn)測試結(jié)果記錄內(nèi)容的隨需而變。
圖I是是本發(fā)明的分布式運(yùn)行設(shè)計(jì)示意 圖2是是本發(fā)明的用戶操作平臺(tái)的參數(shù)設(shè)置界面示意 圖3是是本發(fā)明的用戶操作平臺(tái)的選擇場景界面示意 圖4是是本發(fā)明的用戶操作平臺(tái)的監(jiān)控機(jī)端界面示意 圖5是是本發(fā)明的用戶操作平臺(tái)的測試機(jī)端界面示意 圖6是本發(fā)明智能調(diào)度程序?qū)崿F(xiàn)流程圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。請(qǐng)參照?qǐng)DI所示,本發(fā)明分布式智能調(diào)度方法包括如下步驟
SlO :提供一支持用戶靈活選擇場景的用戶操作平臺(tái)
首先完成場景列表,請(qǐng)參照?qǐng)DI中的輸入文件-場景列表所示,場景列表文件用excel表的形式,每個(gè)產(chǎn)品版本作為一個(gè)sheet頁進(jìn)行存放,記錄了所有場景的所屬關(guān)鍵應(yīng)用、業(yè)務(wù)類型、場景編號(hào)、場景名稱、腳本相對(duì)于腳本項(xiàng)目的存放路徑、依賴項(xiàng)編號(hào)等基本信息,該列表在場景腳本開發(fā)結(jié)束后進(jìn)行完善。用戶操作平臺(tái)以場景列表為依據(jù),支持用戶選擇產(chǎn)品版本、關(guān)鍵應(yīng)用、業(yè)務(wù)類型過濾場景,靈活選擇測試場景,生成運(yùn)行場景列表。該用戶操作平臺(tái)包括有參數(shù)設(shè)置界面、選擇場景界面、監(jiān)控機(jī)端操作界面、以及測試機(jī)端操作界面。其中,參數(shù)設(shè)置界面,參照?qǐng)D2所示,具體為設(shè)置此次測試任務(wù)的唯一標(biāo)識(shí);選擇場景界面,參照?qǐng)D3所示,實(shí)現(xiàn)從場景列表中根據(jù)用戶選擇的產(chǎn)品版本、關(guān)鍵應(yīng)用、業(yè)務(wù)類型過濾出來場景,用戶可以靈活選擇運(yùn)行場景,而后指定在哪個(gè)數(shù)據(jù)庫實(shí)例中運(yùn)行,生成運(yùn)行場景列表;監(jiān)控機(jī)端操作界面,參照?qǐng)D4所示,可設(shè)置監(jiān)控機(jī)端的端口號(hào),開啟這個(gè)端口號(hào)的socket,開啟監(jiān)聽。提供狀態(tài)欄,顯示各個(gè)測試機(jī)已經(jīng)運(yùn)行的場景數(shù)量,當(dāng)前運(yùn)行的場景名稱、運(yùn)行日志等信息;而測試機(jī)端操作界面,參照?qǐng)D5所示,可設(shè)置要連接的監(jiān)控機(jī)IP、端口號(hào)、本機(jī)腳本項(xiàng)目存放的路徑,進(jìn)行與監(jiān)控機(jī)間的連接。其內(nèi)測試指令窗口實(shí)時(shí)顯示接收的監(jiān)控機(jī)端的指令,運(yùn)行狀態(tài)窗口實(shí)時(shí)顯示當(dāng)前運(yùn)行場景的日志。Sll :提供分布式調(diào)度執(zhí)行機(jī)制,其中,該步驟Sll具體包括
SllO :實(shí)現(xiàn)監(jiān)控機(jī)端智能調(diào)度機(jī)制。參照?qǐng)DI所示,監(jiān)控機(jī)端實(shí)現(xiàn)開啟監(jiān)聽、測試場景 的智能調(diào)度、結(jié)果處理、以及根據(jù)結(jié)果進(jìn)行后續(xù)場景的再分配,直到所有的場景運(yùn)行結(jié)束。詳細(xì)的程序處理流程圖請(qǐng)參照?qǐng)D6,以用戶操作平臺(tái)生成的運(yùn)行場景列表為循環(huán)依據(jù),運(yùn)行場景列表中設(shè)置運(yùn)行狀態(tài)字段,分為未運(yùn)行、正在運(yùn)行、運(yùn)行失敗、依賴項(xiàng)運(yùn)行失敗無法運(yùn)行。調(diào)度機(jī)制按順序循環(huán)判斷當(dāng)前場景的運(yùn)行條件。當(dāng)該場景尚未運(yùn)行,并且其依賴項(xiàng)運(yùn)行成功的才予以進(jìn)行分發(fā);如果場景正在運(yùn)行或者已運(yùn)行,依賴項(xiàng)運(yùn)行失敗或由于其依賴項(xiàng)運(yùn)行失敗無法運(yùn)行的情況,則該場景不進(jìn)行調(diào)度;如果該場景尚未運(yùn)行,依賴項(xiàng)也尚未運(yùn)行的情況,則找到其直接依賴項(xiàng)判斷是否滿足執(zhí)行條件,若滿足則運(yùn)行,若不滿足則依次上溯循環(huán)判斷其依賴項(xiàng),直到找到最源頭的依賴項(xiàng),進(jìn)行運(yùn)行條件的判斷,若滿足則執(zhí)行,當(dāng)起初要調(diào)度的場景的所有前序依賴項(xiàng)都檢查、運(yùn)行完畢后,再進(jìn)行此場景的調(diào)度執(zhí)行。對(duì)于運(yùn)行標(biāo)識(shí)的書寫使用依賴項(xiàng)運(yùn)行失敗,所有的后續(xù)場景直接標(biāo)識(shí)為“依賴項(xiàng)***運(yùn)行失敗,無法運(yùn)行”。這種智能調(diào)度方式就擺脫了用戶選擇場景必須按內(nèi)在順序排列的要求,支持用戶的靈活選擇,實(shí)現(xiàn)場景間關(guān)系的智能處理。Slll :測試機(jī)端實(shí)現(xiàn)內(nèi)容,請(qǐng)參照?qǐng)DI測試機(jī)端,以兩臺(tái)測試機(jī)為例。測試機(jī)端實(shí)現(xiàn)接收測試指令,調(diào)用腳本運(yùn)行,并進(jìn)行中斷處理。腳本在處理運(yùn)行中的非預(yù)期窗口實(shí)現(xiàn)中斷處理技術(shù)。預(yù)知非預(yù)期窗口可能有哪幾類,分別實(shí)現(xiàn)對(duì)這些窗口的異常處理方法;對(duì)于不可預(yù)知的異常情況,才重新啟動(dòng)被測程序,實(shí)現(xiàn)測試工具無中斷運(yùn)行。同時(shí)該技術(shù)實(shí)現(xiàn)了自己的錯(cuò)誤記錄方法,不僅記錄中斷截圖、還可復(fù)制異常窗口的詳細(xì)信息、獲取測試工具返回的錯(cuò)誤堆棧信息,實(shí)現(xiàn)了錯(cuò)誤信息獲取的個(gè)性化需求。S112 :測試機(jī)實(shí)時(shí)回傳測試結(jié)果,分配任務(wù)運(yùn)行結(jié)束后返回日志。S113 :監(jiān)控機(jī)分析測試結(jié)果,檢查測試機(jī)狀態(tài),如果空閑,則轉(zhuǎn)到執(zhí)行步驟S110。S114:監(jiān)控機(jī)接收到測試機(jī)發(fā)回的運(yùn)行信息后,進(jìn)行處理,如果是測試結(jié)果信息實(shí)時(shí)記錄到運(yùn)行結(jié)果中,如果是測試日志,則說明該測試機(jī)運(yùn)行結(jié)束,將日志信息附到監(jiān)控機(jī)端的日志文件后面,返回第一步繼續(xù)進(jìn)行后續(xù)腳本的分配,直到所有的場景運(yùn)行結(jié)束。S12 :在操作平臺(tái)中為每個(gè)數(shù)據(jù)庫實(shí)例選擇測試場景參照?qǐng)D3選擇場景所示,選擇場景時(shí),通過運(yùn)行實(shí)例輸入框,設(shè)定已選場景在哪個(gè)數(shù)據(jù)庫實(shí)例中運(yùn)行,運(yùn)行場景生成機(jī)制會(huì)把所有的已選場景放在一個(gè)運(yùn)行場景列表中,用實(shí)例名稱字段進(jìn)行標(biāo)識(shí)。在腳本執(zhí)行時(shí),腳本會(huì)判斷當(dāng)前實(shí)例名稱是否是要運(yùn)行的實(shí)例,進(jìn)行選擇實(shí)例處理,再進(jìn)行測試。運(yùn)行結(jié)果文件會(huì)分?jǐn)?shù)據(jù)庫實(shí)例分別予以存放,實(shí)現(xiàn)數(shù)據(jù)庫實(shí)例測試結(jié)果的便捷分析。本發(fā)明方法使用Socket TCP/IP協(xié)議,實(shí)現(xiàn)監(jiān)控機(jī)與測試機(jī)間的通信,在此基礎(chǔ)上拓展四大部分用戶操作平臺(tái)、監(jiān)控機(jī)端、測試機(jī)端、運(yùn)行結(jié)果文件,形成自動(dòng)化測試分布式智能調(diào)度系統(tǒng)。通過提供用戶操作平臺(tái)、監(jiān)控機(jī)調(diào)度機(jī)制、測試腳本內(nèi)含中斷處理技術(shù)以解決目前現(xiàn)有技術(shù)存在的問題。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種分布式智能調(diào)度方法,其特征在于,包括如下步驟 510:提供一支持用戶靈活選擇場景的用戶操作平臺(tái); 511:提供分布式調(diào)度執(zhí)行機(jī)制; 512:在操作平臺(tái)中為每個(gè)數(shù)據(jù)庫實(shí)例選擇測試場景; 其中,執(zhí)行步驟SlO之前首先完成場景列表,所述場景列表記錄了所有場景的所屬關(guān)鍵應(yīng)用、業(yè)務(wù)類型、場景編號(hào)、場景名稱、腳本相對(duì)于腳本項(xiàng)目的存放路徑、以及依賴項(xiàng)編號(hào)的基本信息;所述用戶操作平臺(tái)以該場景列表為依據(jù),支持用戶選擇產(chǎn)品版本、關(guān)鍵應(yīng)用、業(yè)務(wù)類型過濾場景,靈活選擇測試場景,生成運(yùn)行場景列表。
2.如權(quán)利要求I所述分布式智能調(diào)度方法,其特征在于所述用戶操作平臺(tái)包括有參數(shù)設(shè)置界面、選擇場景界面、監(jiān)控機(jī)端操作界面、以及測試機(jī)端監(jiān)控界面;其中,參數(shù)設(shè)置界面用于設(shè)置此次測試任務(wù)的唯一標(biāo)識(shí)、以及設(shè)置要進(jìn)行測試的數(shù)據(jù)庫實(shí)例名稱;監(jiān)控機(jī)端操作界面設(shè)置有一個(gè)端口號(hào);而測試機(jī)端操作界面用于設(shè)置要連接的監(jiān)控機(jī)IP、端口號(hào)、本機(jī)腳本項(xiàng)目存放的路徑,進(jìn)行與監(jiān)控機(jī)間的連接。
3.如權(quán)利要求2所述分布式智能調(diào)度方法,其特征在于所述步驟Sll具體包括 5110:設(shè)置監(jiān)控機(jī)端智能調(diào)度機(jī)制; 5111:測試機(jī)端接收測試指令,調(diào)用腳本運(yùn)行,內(nèi)含中斷處理; 5112:測試機(jī)實(shí)時(shí)回傳測試結(jié)果,分配任務(wù)運(yùn)行結(jié)束后返回日志; 5113:監(jiān)控機(jī)分析測試結(jié)果,檢查測試機(jī)狀態(tài),如果空閑,則轉(zhuǎn)到執(zhí)行步驟S110。
4.如權(quán)利要求3所述分布式智能調(diào)度方法,其特征在于在所述SllO中,以用戶操作平臺(tái)生成的運(yùn)行場景列表為循環(huán)依據(jù),運(yùn)行場景列表中設(shè)置運(yùn)行狀態(tài)字段;調(diào)度機(jī)制按順序循環(huán)判斷當(dāng)前場景的運(yùn)行條件,當(dāng)該場景尚未運(yùn)行,且其依賴項(xiàng)運(yùn)行成功的才予以進(jìn)行分發(fā)。
5.如權(quán)利要求4所述分布式智能調(diào)度方法,其特征在于在所述步驟S113中,監(jiān)控機(jī)接收到測試機(jī)發(fā)回的運(yùn)行信息后,進(jìn)行處理,如果是測試結(jié)果信息,則實(shí)時(shí)記錄到運(yùn)行結(jié)果中,如果是測試日志,則說明該測試機(jī)運(yùn)行結(jié)束,將日志信息附到監(jiān)控機(jī)端的日志文件后面,返回繼續(xù)進(jìn)行后續(xù)腳本的分配,直到所有的場景運(yùn)行結(jié)束。
6.如權(quán)利要求5所述分布式智能調(diào)度方法,其特征在于在所述步驟S12中,通過運(yùn)行場景生成機(jī)制把已選場景放在一個(gè)運(yùn)行場景列表中,用實(shí)例名稱字段標(biāo)識(shí)運(yùn)行的實(shí)例,在腳本執(zhí)行時(shí),腳本會(huì)判斷當(dāng)前實(shí)例名稱是否是要運(yùn)行的實(shí)例,進(jìn)行選擇實(shí)例處理,再進(jìn)行測試。
全文摘要
本發(fā)明公開了一種分布式智能調(diào)度方法,包括如下步驟S10提供一支持用戶靈活選擇場景的用戶操作平臺(tái);S11提供分布式調(diào)度執(zhí)行機(jī)制;S12在操作平臺(tái)中為每個(gè)數(shù)據(jù)庫實(shí)例選擇測試場景;其中,執(zhí)行步驟S10之前首先完成場景列表,所述場景列表記錄了所有場景的所屬關(guān)鍵應(yīng)用、業(yè)務(wù)類型、場景編號(hào)、場景名稱、腳本相對(duì)于腳本項(xiàng)目的存放路徑、以及依賴項(xiàng)編號(hào)的基本信息。本發(fā)明的用戶操作平臺(tái)支持用戶靈活選擇測試場景;通過監(jiān)控機(jī)調(diào)度機(jī)制,實(shí)現(xiàn)測試場景間關(guān)系的智能處理;支持多個(gè)數(shù)據(jù)庫實(shí)例并行運(yùn)行;腳本內(nèi)含中斷處理,實(shí)現(xiàn)測試結(jié)果記錄內(nèi)容的隨需而變。
文檔編號(hào)G06F11/36GK102799526SQ20121023609
公開日2012年11月28日 申請(qǐng)日期2012年7月10日 優(yōu)先權(quán)日2012年7月10日
發(fā)明者趙超, 程寶君, 劉俊紅 申請(qǐng)人:浪潮集團(tuán)山東通用軟件有限公司