SilkTest在數據驅動(dòng)技術(shù)中的應用
1 SilkTest的主要特點(diǎn)及工作原理
1.1 SilkTest主要特點(diǎn)
SilkTest的主要特點(diǎn)為:
(1)整合開(kāi)發(fā)環(huán)境(IDE)。用戶(hù)可以用它來(lái)開(kāi)發(fā)、編輯、運行、分析和調試4Test文件。
(2)真正的對象識別。
(3)內置的全年全天候(24×7×365)無(wú)需人為干預測試時(shí)的恢復系統(Recovery System)。
(4)完全分布式測試??梢葬槍/S應用進(jìn)行測試,可使硬件資源有效使用。
(5)可擴展、高便攜性、可編輯、易于維護的腳本語(yǔ)言(4Test Language)。
(6)用于重用性更好、更易于測試及腳本維護的GUI提取層(GUI abs Traction Layer)。
1.2 SilkTest的工作原理
在SilkTest看來(lái),被測試軟件(AUT)由許多GUI對象組成。用戶(hù)在進(jìn)行測試時(shí)通過(guò)鍵盤(pán)/鼠標與這些對象交互。具體應用時(shí),SilkTest通過(guò)面向對象的概念,(類(lèi)/屬性/方法)識別這些GUI對象;測試時(shí)模擬用戶(hù)的操作,與這些GUI對象交互,通過(guò)SilkTestrepository自動(dòng)記錄用戶(hù)操作過(guò)程中對各個(gè)GUI對象的操作,然后將這些操作轉換成4Test的腳本,寫(xiě)入腳本程序中。當對軟件做了修改并重新運行這個(gè)測試時(shí),SilkTest就可以利用測試回放功能把測試前所做的輸入操作重新應用到本次測試中,并自動(dòng)比較軟件對本次測試和以前測試的響應是否相同,如果不同,就表明對軟件的修改產(chǎn)生了新的錯誤,實(shí)現自動(dòng)測試的目的。
2 SilkTest在數據驅動(dòng)測試中的應用
數據驅動(dòng)技術(shù)實(shí)行的就是測試腳本和數據的分離技術(shù),使得測試腳本成為可以驅動(dòng)所有類(lèi)似測試用例組的通用腳本,使測試用例的修改和維護更加容易,簡(jiǎn)化了回歸測試。
2.1 測試環(huán)境
使用SilkTest的集成開(kāi)發(fā)環(huán)境IDE,在開(kāi)發(fā)基于應用服務(wù)器的分布式應用軟件過(guò)程中,往往需要對服務(wù)器和IDE工具之間的協(xié)同工作能力進(jìn)行測試,以保證開(kāi)發(fā)出的應用程序最終可以正確地安裝到應用服務(wù)器上并正常工作,其典型步驟如圖1所示。
如圖1所示,首先,在IDE中將服務(wù)器端組件部署到應用服務(wù)器上①。這需要在IDE中進(jìn)行一系列的手工操作;然后,需要在IDE中生成或配置與服務(wù)器端組件相對應的客戶(hù)端組件③;最后,從IDE中運行客戶(hù)端組件,進(jìn)行客戶(hù)端與服務(wù)器端交互操作測試,并產(chǎn)生測試結果②。
2.2 SilkTest在數據驅動(dòng)中的具體應用
考慮到上述測試的部署、配置和運行的操作主要在集成開(kāi)發(fā)環(huán)境中進(jìn)行,因此可以通過(guò)使用SilkTest錄制操作來(lái)實(shí)現測試的自動(dòng)化。SilkTest將所記錄的圖形用戶(hù)界面對象轉換成4Test語(yǔ)言對象。由于4Test語(yǔ)言是面向對象的,所以可以對4Test語(yǔ)言腳本進(jìn)行各種修改,也可以用變量代替錄制測試步驟過(guò)程中使用的實(shí)際值,從而實(shí)現數據驅動(dòng)的自動(dòng)測試。在測試IDE工具軟件時(shí),不同測試用例組的操作之間具有極大的相似性,因此存在采用數據驅動(dòng)的方式來(lái)進(jìn)一步優(yōu)化用SilkTest錄制測試操作的可能性。也就是說(shuō),錄制一個(gè)典型的測試流程,然后通過(guò)對SilkTest錄制的腳本進(jìn)行編程修改,將其改造成可以驅動(dòng)全部測試用例的通用驅動(dòng)程序。
(1)用SilkTest實(shí)現數據驅動(dòng)的回歸測試的流程,如圖2所示。
(2)具體的錄制修改過(guò)程。根據SilkTest的要求,在用SilkTest錄制測試步驟之前,應當首先錄制與測試過(guò)程中的鼠標或鍵盤(pán)事件相關(guān)AUT的各個(gè)GUI控件。用SilkTest記錄這些控件時(shí),只需要將鼠標依次在GUI控件上劃過(guò)即可。SilkTest會(huì )將這些控件轉換成相應的4Test語(yǔ)言對象。SilkTest在記錄控件的同時(shí),也記錄了它們與父控件之間的隸屬關(guān)系。所記錄的GUI控件對象及其隸屬關(guān)系稱(chēng)為測試框架(Frame)。SiIkTest還會(huì )自動(dòng)為所記錄GUI控件命名,但是這些名稱(chēng)通常是由控件名和序號組成的,不易于理解,因此需要將所記錄的控件用易于理解和記憶的名稱(chēng)重新命名,以便于今后的開(kāi)發(fā)和維護。
在測試框架錄制完成之后,需要錄制手工執行的典型測試步驟。SilkTest會(huì )將記錄下來(lái)的手工操作步驟轉換成4Test語(yǔ)言的腳本。下面的代碼是記錄配置服務(wù)器連接操作的一段4Test語(yǔ)言代碼示例:
在上述代碼中,用4Test語(yǔ)言記錄了在部署配置對話(huà)框中輸入服務(wù)器名、端口號、登錄用戶(hù)名和密碼等內容,并點(diǎn)擊“連接”按鈕與服務(wù)器進(jìn)行連接。應當注意的是,代碼中使用錄制時(shí)輸入的具體值作為各個(gè)方法的參數,SilkTest運行測試時(shí)會(huì )自動(dòng)將這些值填充在部署配置對話(huà)框的相應位置上。
為了實(shí)現數據驅動(dòng),讓測試具有更大的靈活性,需要對錄制好的4Test語(yǔ)言腳本進(jìn)行修改,用參數替代錄制過(guò)程中使用的實(shí)際值,然后通過(guò)某種方式為這些參數賦值。對于上面的例子,可以定義一個(gè)包含各個(gè)輸入項的數據類(lèi)型:
然后把這個(gè)數據類(lèi)型傳遞給ConfigureHost方法:
在測試時(shí),使用有關(guān)服務(wù)器配置的實(shí)際值可以存放在某個(gè)數據文件中,并在程序的適當部分將其讀入。
對于不同的測試用例組,它們之間的差別可能還包括組件名稱(chēng)和文件存儲位置等內容的不同,那么只需要用上面所說(shuō)的方法將這些存在差異的地方的具體值用參數代替,并在運行特定的測試用例組時(shí),從相應的數據文件中讀取相應的值,就可以把專(zhuān)用的測試步驟變成通用的測試步驟。因此,僅需要用SilkTest錄制一個(gè)典型測試用例的運行步驟,再經(jīng)過(guò)一些相應的修改后,就可以采用SilkTest自動(dòng)運行這類(lèi)回歸測試中的所有測試用例。另外,由于實(shí)現了數據驅動(dòng)的測試,因此對測試項目的增加和修改也非常容易。
(3)使用SilkTest來(lái)驗證AUT的GUI的正確性。
在這種情況下,SilkTest依次執行4Test語(yǔ)言腳本中的各個(gè)操作,并判斷每步操作是否會(huì )導致預期的顯示結果。如果每一步的顯示結果都與所預期的一致,SilkTest認為測試通過(guò),否則,就認為測試失敗,并在自動(dòng)生成的測試結果文件中顯示運行結果與預期結果之間的差異。
但是,所述方法使用了SilkTest,實(shí)現了涉及軟件之間協(xié)同工作能力的數據驅動(dòng)回歸測試,其中SilkTest自動(dòng)執行的是運行測試用例組的步驟。也就是說(shuō),SilkTest只是實(shí)現了測試用例組的執行過(guò)程,而不涉及測試用例組和測試用例本身的邏輯,所以即使所有的測試步驟都順利執行,并不代表測試也已經(jīng)順利地通過(guò)。
為了利用SilkTest自動(dòng)對測試結果進(jìn)行判斷,可以在測試用例中加入輸出語(yǔ)句,這樣在運行測試時(shí),所有測試用例的運行結果都會(huì )輸出到指定的日志文件中。當SilkTest運行完一個(gè)或一組測試用例,將包含測試結果的日志文件與一個(gè)基準文件(Benchmark File)進(jìn)行比較。一般來(lái)說(shuō),基準文件是在一個(gè)或一組測試用例全部正確運行的情況下得到的測試輸出日志,它通常是在測試用例設計完成時(shí)就確定的。如果包含測試結果的日志文件與基準文件完全匹配,可以認為測試通過(guò)。如果它們之間存在差別,那么就認為測試沒(méi)有通過(guò),并在SilkTest的測試結果文件中打印兩個(gè)文件之間的差別。
3結語(yǔ)
闡述了自動(dòng)化回歸測試工具SilkTest的主要特點(diǎn)及工作原理;介紹了SilkTest在數據驅動(dòng)技術(shù)中的應用;簡(jiǎn)化了測試人員的測試復雜度;提高了測試效率和保證測試的可靠性;降低了測試費用。
評論