1.一種分布式調(diào)度自動(dòng)化測(cè)試平臺(tái),其特征在于,該測(cè)試平臺(tái)基于B/S架構(gòu)或CS架構(gòu),使用消息隊(duì)列實(shí)現(xiàn)分布式調(diào)度,其結(jié)構(gòu)包括,
分布式調(diào)度服務(wù)器,進(jìn)行任務(wù)分發(fā);
分布式調(diào)度客戶端,通過分布式調(diào)度服務(wù)器調(diào)度,自動(dòng)進(jìn)行測(cè)試過程;
Web客戶端,用于實(shí)現(xiàn)人機(jī)交互,提供用戶提交任務(wù)、管理任務(wù)的界面。
2.根據(jù)權(quán)利要求1所述的一種分布式調(diào)度自動(dòng)化測(cè)試平臺(tái),其特征在于,所述分布式調(diào)度服務(wù)器使用消息隊(duì)列進(jìn)行任務(wù)分發(fā),當(dāng)接收方出現(xiàn)異常,收不到消息時(shí),消息會(huì)一直暫存在發(fā)送方,當(dāng)接收方再次啟動(dòng)時(shí),再進(jìn)行分發(fā),同時(shí)該分布式調(diào)度服務(wù)器還用于:
1)任務(wù)發(fā)布,首先發(fā)送任務(wù)ID給運(yùn)行機(jī)器,運(yùn)行機(jī)器獲取分配給自己的場(chǎng)景并運(yùn)行;
2)形成運(yùn)行機(jī)器資源池,獲取機(jī)器的狀態(tài)和待運(yùn)行的任務(wù),將指定數(shù)量的任務(wù)分發(fā)到空閑的運(yùn)行機(jī)器上,同時(shí)更新測(cè)試場(chǎng)景和運(yùn)行機(jī)器的狀態(tài);
3)實(shí)現(xiàn)運(yùn)行機(jī)器與分布式調(diào)度服務(wù)器的批量連接,通過IPC技術(shù)實(shí)現(xiàn)跨機(jī)器連接,給運(yùn)行機(jī)器創(chuàng)建計(jì)劃任務(wù),定時(shí)啟動(dòng)分布式調(diào)度客戶端,實(shí)現(xiàn)與分布式調(diào)度服務(wù)器的連接。
3.根據(jù)權(quán)利要求1或2所述的一種分布式調(diào)度自動(dòng)化測(cè)試平臺(tái),其特征在于,所述分布式調(diào)度客戶端包括運(yùn)行機(jī)器和Web服務(wù)器,其中運(yùn)行機(jī)器受分布式服務(wù)器調(diào)度,負(fù)責(zé)測(cè)試運(yùn)行;Web服務(wù)器作為應(yīng)用服務(wù)器,接收分布式調(diào)度服務(wù)器分發(fā)任務(wù),進(jìn)行任務(wù)的過程監(jiān)控,同時(shí)作為分布式調(diào)度客戶端與分布式調(diào)度服務(wù)器連接。
4.根據(jù)權(quán)利要求3所述的一種分布式調(diào)度自動(dòng)化測(cè)試平臺(tái),其特征在于,在步驟1)中,運(yùn)行機(jī)器通過數(shù)據(jù)庫(kù)獲取分配給自己的場(chǎng)景,該數(shù)據(jù)庫(kù)包括主表和從表,主表中記錄測(cè)試任務(wù)的主要信息,包含以下字段:任務(wù)ID,機(jī)器的唯一標(biāo)識(shí);任務(wù)名稱,機(jī)器名;測(cè)試地址,基于CS架構(gòu)時(shí)該地址是被測(cè)服務(wù)器的IP,若是BS架構(gòu)地址是被測(cè)URL;任務(wù)狀態(tài),包括制單、提交任務(wù)、運(yùn)行中、結(jié)束、暫停、停止;申請(qǐng)人;申請(qǐng)時(shí)間;計(jì)劃?rùn)C(jī)器數(shù)量;計(jì)劃啟動(dòng)時(shí)間;預(yù)計(jì)結(jié)束時(shí)間;實(shí)際使用機(jī)器;實(shí)際機(jī)器數(shù)量;實(shí)際開始時(shí)間和實(shí)際結(jié)束時(shí)間;
從表中包含運(yùn)行場(chǎng)景ID,運(yùn)行場(chǎng)景的唯一標(biāo)識(shí);任務(wù)ID,場(chǎng)景所屬的任務(wù);場(chǎng)景ID,存儲(chǔ)的場(chǎng)景ID;運(yùn)行機(jī)器;運(yùn)行結(jié)果;開始時(shí)間和結(jié)束時(shí)間;
在步驟2)中,分別通過機(jī)器管理數(shù)據(jù)表和測(cè)試任務(wù)數(shù)據(jù)表獲取機(jī)器的狀態(tài)和待運(yùn)行的任務(wù),其中機(jī)器管理數(shù)據(jù)表包括以下字段:機(jī)器ID,機(jī)器的唯一標(biāo)識(shí);機(jī)器名;狀態(tài),機(jī)器的運(yùn)行狀態(tài),包括運(yùn)行中、空閑、不可用;運(yùn)行任務(wù),當(dāng)前運(yùn)行的任務(wù),當(dāng)空閑時(shí),則沒有任務(wù);任務(wù)安排,記錄在運(yùn)行、待運(yùn)行的任務(wù)數(shù)組,即計(jì)劃開始、結(jié)束時(shí)間、任務(wù)ID;
測(cè)試任務(wù)數(shù)據(jù)表即為數(shù)據(jù)庫(kù)的主表部分。
5.根據(jù)權(quán)利要求4所述的一種分布式調(diào)度自動(dòng)化測(cè)試平臺(tái),其特征在于,所述從表中的場(chǎng)景ID存儲(chǔ)在自動(dòng)化場(chǎng)景數(shù)據(jù)表中,該自動(dòng)化場(chǎng)景數(shù)據(jù)表中還存儲(chǔ)以下字段:用例ID,測(cè)試用例的唯一標(biāo)識(shí);關(guān)鍵應(yīng)用,用例所述的關(guān)鍵應(yīng)用;模塊名稱,用例所述的模塊名稱;自動(dòng)化場(chǎng)景名稱;自動(dòng)化步驟名稱;腳本相對(duì)路徑;依賴項(xiàng),用例依賴的用例的ID;預(yù)計(jì)用時(shí)。
6.一種分布式調(diào)度自動(dòng)化測(cè)試方法,基于上述分布式調(diào)度自動(dòng)化測(cè)試平臺(tái),其特征在于,其實(shí)現(xiàn)過程為:
用戶提交測(cè)試任務(wù),確定測(cè)試使用哪些用例,使用幾臺(tái)機(jī)器,指定啟動(dòng)時(shí)間;
分布式調(diào)度自動(dòng)化測(cè)試平臺(tái)定時(shí)啟動(dòng)測(cè)試任務(wù),自動(dòng)生成該任務(wù)的運(yùn)行場(chǎng)景,自動(dòng)選擇空閑機(jī)器,分布式調(diào)度機(jī)器,完成測(cè)試;
最后自動(dòng)給用戶發(fā)送測(cè)試啟動(dòng)通知、測(cè)試報(bào)告郵件。
7.根據(jù)權(quán)利要求6所述的一種分布式調(diào)度自動(dòng)化測(cè)試方法,其特征在于,在分布式調(diào)度自動(dòng)化測(cè)試平臺(tái)定時(shí)啟動(dòng)測(cè)試任務(wù)時(shí),根據(jù)自動(dòng)化場(chǎng)景數(shù)據(jù)表生成該任務(wù)的運(yùn)行場(chǎng)景;并查看前一個(gè)任務(wù)的計(jì)劃啟動(dòng)時(shí)間至預(yù)計(jì)結(jié)束時(shí)間這個(gè)時(shí)間段內(nèi),通過機(jī)器管理數(shù)據(jù)表的任務(wù)安排,查看哪些機(jī)器是沒有任務(wù)安排的,則安排該任務(wù)到該機(jī)器上。
8.根據(jù)權(quán)利要求6所述的一種分布式調(diào)度自動(dòng)化測(cè)試方法,其特征在于,當(dāng)用戶指定計(jì)劃啟動(dòng)時(shí)間后,分布式調(diào)度自動(dòng)化測(cè)試平臺(tái)采用輪詢的方式,每隔一段時(shí)間檢查是否有到計(jì)劃啟動(dòng)時(shí)間的任務(wù),有則將該任務(wù),提交給分布式調(diào)度服務(wù)器,進(jìn)行任務(wù)分發(fā);當(dāng)任務(wù)分發(fā)完成后,分布式調(diào)度服務(wù)器檢查當(dāng)前任務(wù)的運(yùn)行場(chǎng)景列表中,是否還有未運(yùn)行的場(chǎng)景,如果有則繼續(xù)分發(fā),如果沒有則發(fā)送郵件給測(cè)試申請(qǐng)人。
9.根據(jù)權(quán)利要求6所述的一種分布式調(diào)度自動(dòng)化測(cè)試方法,其特征在于,運(yùn)行機(jī)器接收到分發(fā)的指令后,到測(cè)試任務(wù)數(shù)據(jù)表中獲取分配的場(chǎng)景,使用中斷處理機(jī)制調(diào)度運(yùn)行,具體為:
從數(shù)據(jù)庫(kù)中查詢,分配給自己的測(cè)試場(chǎng)景,根據(jù)自動(dòng)化場(chǎng)景數(shù)據(jù)表里的獲取腳本存放的路徑,調(diào)度運(yùn)行,同時(shí)在運(yùn)行過程中,回寫數(shù)據(jù)庫(kù)運(yùn)行結(jié)果;
使用中斷處理運(yùn)行機(jī)制:先判斷依賴項(xiàng)是否成功,如果成功則運(yùn)行,如果失敗則阻塞;進(jìn)行異常處理,當(dāng)其中一個(gè)場(chǎng)景中斷后,記錄當(dāng)時(shí)的錯(cuò)誤截屏和日志信息;同時(shí)判斷當(dāng)前狀態(tài)是否滿足下一場(chǎng)景運(yùn)行的條件,如果滿足,繼續(xù)運(yùn)行,如果不滿足,重新準(zhǔn)備被測(cè)環(huán)境,運(yùn)行下一個(gè)場(chǎng)景;
測(cè)試結(jié)果的智能分析:腳本運(yùn)行失敗時(shí),自動(dòng)截圖、通過日志記錄失敗的詳細(xì)信息,并進(jìn)行測(cè)試結(jié)果的智能分析,通過包括控件類型、控件標(biāo)題的特點(diǎn)進(jìn)行判斷,將失敗原因自動(dòng)確定。
10.根據(jù)權(quán)利要求9所述的一種分布式調(diào)度自動(dòng)化測(cè)試方法,其特征在于,所述失敗原因歸為以下三類:
因程序錯(cuò)誤導(dǎo)致的中斷,該類失敗歸為“程序錯(cuò)誤”;
因網(wǎng)絡(luò)原因?qū)е碌牟痪邆淠_本運(yùn)行的前提條件,該類失敗歸為“阻塞”;
因腳本沒有及時(shí)更新,導(dǎo)致腳本與程序沒有同步而導(dǎo)致的失敗,該類失敗歸為“腳本問題”;
分布式調(diào)度自動(dòng)化測(cè)試平臺(tái)通過包括控件類型、控件標(biāo)題的特點(diǎn)進(jìn)行判斷,當(dāng)符合某一類特征時(shí),自動(dòng)歸類為“程序錯(cuò)誤”或者“阻塞”,其他問題歸為“腳本問題”。