代云華,余立建,廖新良
(1.西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 610031; 2.電子科技大學(xué) 軟件學(xué)院,成都 611731)
數(shù)據(jù)通信技術(shù)的快速發(fā)展對(duì)自動(dòng)化測(cè)試技術(shù)提出了更高的要求,在保障自動(dòng)化測(cè)試高可靠性的前提下,高效率的自動(dòng)化測(cè)試成了近年來自動(dòng)化測(cè)試發(fā)展的主要瓶頸[1]。目前一般的自動(dòng)化測(cè)試系統(tǒng)[2]包含任務(wù)管理模塊、任務(wù)調(diào)度模塊、用例執(zhí)行模塊、設(shè)備管理模塊和日志服務(wù)器模塊,如圖1。任務(wù)管理模塊主要提供對(duì)測(cè)試任務(wù)的添加、刪除、查看等管理;任務(wù)調(diào)度模塊主要是按照一定的調(diào)度算法對(duì)提交的各測(cè)試任務(wù)或測(cè)試任務(wù)中的各測(cè)試用例進(jìn)行排序,使測(cè)試任務(wù)或測(cè)試用例按照排好的順序先后執(zhí)行;用例執(zhí)行模塊主要是運(yùn)行調(diào)度后測(cè)試任務(wù)中的測(cè)試用例;設(shè)備管理模塊主要是提供對(duì)設(shè)備的添加、刪除、查看等功能;日志服務(wù)器模塊主要是將測(cè)試過程產(chǎn)生的日志及測(cè)試結(jié)果發(fā)送給相關(guān)的測(cè)試人員??梢钥闯觯詣?dòng)化測(cè)試效率的提高主要集中在任務(wù)調(diào)度模塊。
圖1 自動(dòng)化測(cè)試系統(tǒng)結(jié)構(gòu)圖
為了提高自動(dòng)化測(cè)試的效率,大部分公司的自動(dòng)化測(cè)試系統(tǒng)都支持并行運(yùn)行的多個(gè)測(cè)試任務(wù),每個(gè)測(cè)試任務(wù)完成一組測(cè)試用例,這種方式也稱為基于任務(wù)調(diào)度的自動(dòng)化測(cè)試[3],如圖2。與以往手工測(cè)試或串行的自動(dòng)化測(cè)試方法相比,測(cè)試效率提高了許多倍。這種并行運(yùn)行多個(gè)測(cè)試任務(wù)的方式有以下特點(diǎn):
圖2 基于任務(wù)調(diào)度的自動(dòng)化測(cè)試
(1)基于優(yōu)先級(jí)的方式調(diào)度任務(wù)。將需要運(yùn)行的任務(wù)按照之前自定義的任務(wù)優(yōu)先級(jí)來排序,優(yōu)先級(jí)相同的任務(wù)再按提交任務(wù)的時(shí)間先后來排序。優(yōu)先級(jí)越高,空閑設(shè)備若滿足該測(cè)試任務(wù)的要求就先執(zhí)行該測(cè)試任務(wù),若空閑設(shè)備不滿足,則讓低優(yōu)先級(jí)的任務(wù)先運(yùn)行起來,這樣可以提高設(shè)備的利用率。同時(shí)一旦平臺(tái)中設(shè)備滿足測(cè)試任務(wù)的需求,測(cè)試任務(wù)便可運(yùn)行,這樣多個(gè)任務(wù)可以并行獨(dú)立的運(yùn)行。
(2)測(cè)試設(shè)備的最大化占用。在測(cè)試任務(wù)運(yùn)行之前,需要給該測(cè)試任務(wù)分配所需的測(cè)試設(shè)備,對(duì)所需測(cè)試設(shè)備的選取采用讀取該測(cè)試任務(wù)包含的所有測(cè)試拓?fù)渲袑?duì)設(shè)備的需求,包括設(shè)備類型、設(shè)備的接口類型、設(shè)備連接數(shù)等信息,統(tǒng)計(jì)出該測(cè)試任務(wù)對(duì)測(cè)試設(shè)備的最大需求數(shù)量,選出符合要求的設(shè)備。
(3)測(cè)試用例串行運(yùn)行。測(cè)試任務(wù)中包含的所有測(cè)試用例按照預(yù)先編寫的測(cè)試套件中的先后順序依次執(zhí)行,每運(yùn)行一個(gè)測(cè)試用例,都需要根據(jù)該測(cè)試用例所需的測(cè)試設(shè)備從之前任務(wù)所占用的設(shè)備中選出本測(cè)試用例所需的測(cè)試設(shè)備,然后根據(jù)選出的測(cè)試設(shè)備構(gòu)造拓?fù)洵h(huán)境,再執(zhí)行預(yù)先編寫好的本測(cè)試用例的測(cè)試腳本。
(4)測(cè)試設(shè)備的互斥訪問。一臺(tái)測(cè)試設(shè)備只能被一個(gè)測(cè)試任務(wù)占用,不能被多個(gè)測(cè)試任務(wù)同時(shí)占用,測(cè)試任務(wù)運(yùn)行結(jié)束后能主動(dòng)釋放占用的測(cè)試設(shè)備,供其它測(cè)試任務(wù)繼續(xù)使用。
從上述分析可以看出,采用基于任務(wù)調(diào)度的方式,以測(cè)試用例為最小的測(cè)試腳本單位,每執(zhí)行一個(gè)測(cè)試用例都需要重新選擇一次測(cè)試設(shè)備,重新構(gòu)造一次拓?fù)洌挥挟?dāng)一個(gè)測(cè)試用例執(zhí)行完時(shí),才能執(zhí)行下一個(gè)測(cè)試用例,這樣大大降低了自動(dòng)化測(cè)試的高效性;另外在測(cè)試任務(wù)執(zhí)行前,測(cè)試設(shè)備的選取是以最大化的占用方式,既節(jié)省了每個(gè)測(cè)試用例在整個(gè)平臺(tái)中選擇測(cè)試設(shè)備所帶來的麻煩,又使得每個(gè)測(cè)試用例占用的測(cè)試設(shè)備與測(cè)試任務(wù)占有的設(shè)備相比通常要少很多,會(huì)形成該測(cè)試任務(wù)實(shí)際上占用了很多的測(cè)試設(shè)備,但大部分時(shí)間卻只用到了其中的少部分,其它因測(cè)試設(shè)備不足而無法運(yùn)行起來的測(cè)試任務(wù)卻被阻塞了;再者,只有平臺(tái)中空閑的設(shè)備滿足了測(cè)試任務(wù)最大的設(shè)備需求后,測(cè)試任務(wù)才能運(yùn)行,否則一直處于等待狀態(tài),這樣大大降低了設(shè)備的利用率。
在自動(dòng)化測(cè)試系統(tǒng)中,每一個(gè)需要測(cè)試的任務(wù)(如一個(gè)協(xié)議vlan)包括許多需要測(cè)試的功能點(diǎn),這些功能點(diǎn)即為一個(gè)測(cè)試用例,一個(gè)測(cè)試用例包含了測(cè)試該功能點(diǎn)需要搭建的拓?fù)洵h(huán)境及在該拓?fù)洵h(huán)境下測(cè)試該功能點(diǎn)的具體步驟(測(cè)試腳本)。因此,一個(gè)測(cè)試任務(wù)包含多個(gè)測(cè)試用例,每個(gè)測(cè)試用例包含一個(gè)拓?fù)?,各測(cè)試用例的拓?fù)溆锌赡苁且粯拥模话闱闆r下,一個(gè)測(cè)試任務(wù)只有幾個(gè)拓?fù)?,即一個(gè)拓?fù)鋵?duì)應(yīng)多個(gè)測(cè)試用例,對(duì)于拓?fù)湎嗤臏y(cè)試用例,需要的測(cè)試設(shè)備是相同的,因此,可以將它們歸為一類,在運(yùn)行時(shí)只用分配一次設(shè)備,構(gòu)造一次拓?fù)浼纯伞?/p>
這樣,對(duì)于一個(gè)測(cè)試任務(wù),就可以以拓?fù)錇榛締挝粊韯澐譁y(cè)試用例,即基于拓?fù)湔{(diào)度的方式,如圖3。這種方式有以下特點(diǎn):
圖3 基于拓?fù)湔{(diào)度的自動(dòng)化測(cè)試
(1)各測(cè)試任務(wù)并行運(yùn)行相互獨(dú)立,延續(xù)了基于任務(wù)調(diào)度方式的思想,采用優(yōu)先級(jí)方式調(diào)度測(cè)試任務(wù)。
(2)各測(cè)試拓?fù)溟g的運(yùn)行相互獨(dú)立,即各拓?fù)溥x擇設(shè)備、構(gòu)造拓?fù)洹⑦\(yùn)行腳本等都是互不干擾的;測(cè)試拓?fù)湟灿袃?yōu)先級(jí)關(guān)系,各測(cè)試拓?fù)浒凑兆远x的優(yōu)先級(jí)排序,優(yōu)先級(jí)相同的按照測(cè)試拓?fù)滟Y源需求高低來排序,資源需求相同就任選其中的一個(gè)測(cè)試拓?fù)洹?/p>
(3)在一個(gè)測(cè)試拓?fù)渲?,先選擇本測(cè)試拓?fù)渌璧臏y(cè)試設(shè)備,根據(jù)選出的測(cè)試設(shè)備構(gòu)造拓?fù)?,然后運(yùn)行各測(cè)試用例的腳本。一個(gè)測(cè)試拓?fù)浒鄠€(gè)測(cè)試用例,采用串行的方式運(yùn)行,無需重新選擇測(cè)試設(shè)備和構(gòu)造拓?fù)?,直接沿用上個(gè)測(cè)試用例搭建的拓?fù)洵h(huán)境。
(4) 測(cè)試任務(wù)的狀態(tài)由所包括的各拓?fù)涞臓顟B(tài)決定,只有當(dāng)測(cè)試任務(wù)中的所有拓?fù)渌臏y(cè)試用例都執(zhí)行完后,測(cè)試任務(wù)才算執(zhí)行完。
與基于任務(wù)調(diào)度方式相比,基于拓?fù)湔{(diào)度方式具有以下優(yōu)點(diǎn):
(1)在測(cè)試設(shè)備滿足的情況下,一個(gè)測(cè)試任務(wù)中的多個(gè)測(cè)試用例并行運(yùn)行,大大減少了該測(cè)試任務(wù)的總體測(cè)試時(shí)間。
(2)從為每個(gè)測(cè)試用例分配設(shè)備、構(gòu)造拓?fù)涞綖椴煌耐負(fù)浞峙湓O(shè)備、構(gòu)造拓?fù)洌?jié)約了系統(tǒng)為測(cè)試腳本準(zhǔn)備測(cè)試拓?fù)洵h(huán)境的時(shí)間。
(3)只要平臺(tái)中空閑的測(cè)試設(shè)備滿足測(cè)試任務(wù)中的某個(gè)測(cè)試拓?fù)涞脑O(shè)備需求,測(cè)試任務(wù)便可運(yùn)行起來,而基于任務(wù)調(diào)度方式只有當(dāng)平臺(tái)中空閑的測(cè)試設(shè)備滿足測(cè)試任務(wù)的最大設(shè)備需求時(shí),測(cè)試任務(wù)才會(huì)運(yùn)行,否則一直處于等待狀態(tài)。相比之下,基于拓?fù)湔{(diào)度的方式大大提高了設(shè)備的利用率。
(4)一般情況下,自動(dòng)化測(cè)試非常容易受環(huán)境的影響,含多個(gè)測(cè)試用例的測(cè)試任務(wù)經(jīng)常不能一次性全完成,采用原來串行運(yùn)行測(cè)試用例的方式,由于測(cè)試時(shí)間過長(zhǎng),受環(huán)境影響的概率相應(yīng)增加,采用基于拓?fù)湔{(diào)度的方式,由于測(cè)試時(shí)間相對(duì)更短,也減少了受環(huán)境影響的概率。
根據(jù)以上對(duì)拓?fù)湔{(diào)度方式的分析,本文在圖1的基礎(chǔ)上將任務(wù)調(diào)度模塊進(jìn)行細(xì)化,分成了任務(wù)調(diào)度模塊、拓?fù)湔{(diào)度模塊和任務(wù)狀態(tài)更新模塊,如圖4。任務(wù)調(diào)度模塊的主要功能是在測(cè)試任務(wù)隊(duì)列中根據(jù)測(cè)試任務(wù)的優(yōu)先級(jí)選出一個(gè)測(cè)試任務(wù);拓?fù)湔{(diào)度模塊的主要功能是為任務(wù)調(diào)度模塊選出的測(cè)試任務(wù)所包含的每個(gè)測(cè)試拓?fù)?,根?jù)優(yōu)先級(jí)分配測(cè)試設(shè)備;任務(wù)狀態(tài)更新模塊主要功能是根據(jù)測(cè)試任務(wù)中各測(cè)試拓?fù)洳粩喔淖兊倪\(yùn)行狀態(tài),更新測(cè)試任務(wù)的狀態(tài)。
圖4 任務(wù)調(diào)度模塊的設(shè)計(jì)
本文的自動(dòng)化測(cè)試系統(tǒng)采用了目前非常成熟、流行的TCL[4]開發(fā)語言在linux系統(tǒng)上開發(fā),使用SlickEdit開發(fā)工具,所有測(cè)試參數(shù)使用XML[5]語言,使系統(tǒng)具有協(xié)議描述能力強(qiáng)、靈活性好、移植性好的特點(diǎn),充分保證了通用性和持續(xù)性。
利用拓?fù)湔{(diào)度方式實(shí)現(xiàn)的自動(dòng)化測(cè)試系統(tǒng)在自動(dòng)化測(cè)試平臺(tái)上測(cè)試各模塊,在平臺(tái)測(cè)試設(shè)備充分的情況下,測(cè)試結(jié)果如表2。與基于任務(wù)調(diào)度方式的測(cè)試結(jié)果相比,節(jié)省了測(cè)試時(shí)間,提高了自動(dòng)化測(cè)試的效率。
表2 各模塊測(cè)試時(shí)間統(tǒng)計(jì)
本文給出了一種基于拓?fù)湔{(diào)度方式設(shè)計(jì)自動(dòng)化測(cè)試系統(tǒng)的方法,該方法應(yīng)用到實(shí)際的自動(dòng)化測(cè)試系統(tǒng)中,大大減少了測(cè)試任務(wù)的總體運(yùn)行時(shí)間,使自動(dòng)化測(cè)試平臺(tái)中的測(cè)試設(shè)備得到了充分的利用,降低了測(cè)試任務(wù)受環(huán)境的影響,提高了自動(dòng)化測(cè)試效率和可靠性。
[1]郭偉斌,郭錫坤. 自動(dòng)化測(cè)試的研究和探討[J].電腦開發(fā)與應(yīng)用,2008,21(12):10-12.
[2]柳 勝. 軟件自動(dòng)化測(cè)試框架設(shè)計(jì)與實(shí)踐[M]. 北京:人民郵電出版社,2009.
[3]侯亞榮,張書杰,李 健,等. 一種實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度方法[P]. 中國(guó)專利:200710176704. 2008-03-19.
[4]WelchBrent B. The complete Tcl/Tk training course[M]. 北京:電子工業(yè)出版社,2001.
[5]DalviDinar,GrayJoe,英 宇. NET XML高級(jí)編程[M].北京:清華大學(xué)出版社,2002.