張鵬飛
廣東農(nóng)工商職業(yè)技術(shù)學(xué)院510507
在整個軟件開發(fā)過程中,優(yōu)秀的測試軟件是實現(xiàn)保證軟件開發(fā)質(zhì)量、程序運行兼容性的重要途徑,通過軟件進行程序的自動化測試可以減少軟件測試的開銷、降低軟件開發(fā)的難度。但目前不少軟件測試工具由于并沒有統(tǒng)一的測試腳本標(biāo)準(zhǔn),導(dǎo)致了其在測試自動化環(huán)節(jié)中很容易形成不兼容、甚至相互排斥的現(xiàn)象,從而導(dǎo)致進行軟件測試時需要反復(fù)解決軟件測試兼容的問題,而非軟件本身的測試。加上由于當(dāng)前的自動化測試執(zhí)行工具大都提供了自己的腳本語言和執(zhí)行方法,這些腳本語言所含的信息非常豐富,操作性也很強,并且這些腳本信息所產(chǎn)生的維護性也非常高,導(dǎo)致執(zhí)行腳本的語言解析能力開發(fā)難度也隨之增大,例如:Mercury Interactive公司的WinRunner,其軟件在整個執(zhí)行過程中,需要人們提前設(shè)置大量的解釋器才能完成測試過程,這就導(dǎo)致了整個軟件測試的過程花費的時間很長,測試的難度增大。
所謂自動化測試框架,即是應(yīng)用于自動化測試所使用的框架。按照框架的定義,自動化測試框架要么是提供可重用的基礎(chǔ)自動化測試模塊,如:selenium、watir等,它們主要提供最基礎(chǔ)的自動化測試功能,比如打開一個程序,模擬鼠標(biāo)和鍵盤來點擊或操作被測試對象,最后再驗證被測對象的屬性以判斷程序的正確性;要么是可以提供自動化測試執(zhí)行和管理功能的架構(gòu)模塊,如:robot,STAF等,它們本身不提供基礎(chǔ)的自動化測試支持,只是用于組織、管理和執(zhí)行那些獨立的自動化測試用例,測試完成后再統(tǒng)計測試結(jié)果,通常這類框架一般都會集成一個基礎(chǔ)自動化測試模塊,如:robot框架就可以集成selenium框架。
為了能夠更好的闡述測試工具中XML測試腳本和其他測試驅(qū)動程序間的相互轉(zhuǎn)化功能的實現(xiàn),本文將設(shè)計一個基于XML的測試轉(zhuǎn)化工具,使其能夠通過將XML格式的腳本進行轉(zhuǎn)化的方式,將整個XML文檔內(nèi)的數(shù)據(jù)進行分析和轉(zhuǎn)化,轉(zhuǎn)化之后的文件能夠在JAVA和C++當(dāng)中運行。
從該軟件的功能實現(xiàn)上看,我們所需要設(shè)計的軟件應(yīng)當(dāng)具備以下功能:
(1)XML的腳本描述方式;
(2)自定義標(biāo)簽的設(shè)置方式;
(3)JAVA和C++的程序轉(zhuǎn)換方式;
(4)JAVA類的測試方式;
(5)C++類的測試方式。
由于本軟件的開發(fā)目的是為了能夠?qū)y試文檔進行轉(zhuǎn)化,因此在軟件開發(fā)的過程中,應(yīng)當(dāng)注意到整個測試腳本和測試語言之間的差異,例如:C++和C語言的差異,Java和C++之間的語言差異等,以便減少在軟件開發(fā)過程中由于語言差異而導(dǎo)致測試腳本出現(xiàn)錯誤的幾率。
本文所闡述的XML自動化轉(zhuǎn)化過程具體業(yè)務(wù)流程如圖1所示:
圖1 類自動測試業(yè)務(wù)流程
如圖1,待測代碼和測試數(shù)據(jù)需要編程人員編寫XML的測試腳本,此腳本能夠?qū)霚y試程序當(dāng)中,而且還可以轉(zhuǎn)換成為HTML的測試用例報告,還能夠直接轉(zhuǎn)換成為測試驅(qū)動程序的代碼,整個測試驅(qū)動程序經(jīng)過編譯執(zhí)行之后,對于測試代碼的執(zhí)行結(jié)果,測試系統(tǒng)會將其保存到測試日志當(dāng)中,將測試日志和測試腳本相互結(jié)合,就轉(zhuǎn)換成了最終的測試報告。
根據(jù)模塊的可復(fù)用性,我們可以將整個測試用例劃分成以下的模塊進行。
(1)模塊功能
輸入測試用例和待測試的類,識別待測類的語法成分,生成XML測試腳本并輸出。
(2)模塊構(gòu)成
腳本生成模塊是由程序運行的子模塊相互組合而成,主要有:
讀入程序模塊:此模塊將測試文件和測試程序讀入程序當(dāng)中。
代碼格式化:將程序匯總中的程序通過轉(zhuǎn)化的形式進行讀取,并刪除注釋、成員函數(shù)等。
識別程序:對程序中的關(guān)鍵字符和關(guān)鍵代碼進行識別,提取出程序中的類名、函數(shù)名、參數(shù)名等,進行保存。
XML生成模塊:將讀入的代碼和程序通過標(biāo)準(zhǔn)化XML以及設(shè)計好的程序標(biāo)簽進行轉(zhuǎn)化,設(shè)計出其運行的代碼和程序。
(3)模塊業(yè)務(wù)流程
腳本自動生成模塊讀入待測試的類源代碼,經(jīng)代碼格式化,結(jié)合關(guān)鍵字符表進行關(guān)鍵字識別后,由DOM生成符合CTSS(Class Test Script Schema,類測試腳本模型)的XML腳本大綱;然后讀入測試數(shù)據(jù),填入XML腳本大綱中,生成XML測試腳本并輸出。
根據(jù)上述基于XML的設(shè)計過程,實現(xiàn)了測試用例生成代碼和工具,通過反復(fù)測試,我們可以實現(xiàn)如下的設(shè)計目標(biāo)和成果:
(1)在不同測試程序之間,程序運行無誤。
(2)在XML文檔轉(zhuǎn)換過程中,XML文檔能夠自動生成對應(yīng)的檢查措施,并能夠?qū)氲叫碌臋z測自動化軟件當(dāng)中。
(3)只要嚴(yán)格按照設(shè)計的XML文檔編寫要求書寫標(biāo)簽,就能獲得可執(zhí)行的正確測試代碼。
從整個程序的測試結(jié)果和測試技術(shù)的開發(fā)過程來看,使用XML技術(shù)建立起來的腳本數(shù)據(jù)模型,能夠很輕松的解決各個測試程序相互之間不兼容的問題,另外由于XML文檔結(jié)構(gòu)清晰,更易于進行維護。使用此方法,配合輔助軟件和工具,不但能夠從總體上減輕程序員編寫代碼的負(fù)擔(dān),而且能夠降低測試腳本的編寫難度和復(fù)雜度,通過富有自定義標(biāo)簽?zāi)芰Φ哪_本內(nèi)容,提升了自動化測試程序的靈活性和可擴展性,也減輕了程序的復(fù)雜性和冗余度。我們通過實例所開發(fā)出的自動化程序測試工具,也完全證明了這種方式是一種實際可行,并可再生的設(shè)計方案。
[l]陸璐,王柏勇編著.軟件自動化測試技術(shù)[M].北京交通大學(xué)出版社,2006.
[2]Ron Patton;張曉松,王鈺,曹躍等(譯).軟件測試(原書第二版)[M].北京:機械工業(yè)出版社,2006:23-28.
[3]ClarkeEM,GrambergO,PeledD.Model Checking.England:The MIT Press,1999.