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