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