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