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