摘 要: QTP是一種自動(dòng)化測(cè)試工具,它支持腳本的錄制和回放的功能。在腳本回放時(shí),有時(shí)可能由于頁面沒有加載完成,會(huì)出現(xiàn)找不到控件的提示信息,解決這樣的問題實(shí)際上就是解決QTP同步處理的問題。作者結(jié)合實(shí)例總結(jié)歸納出五種QTP同步機(jī)制解決辦法。
關(guān)鍵詞: 自動(dòng)化測(cè)試 QTP同步機(jī)制 解決方法
1.引言
說到QTP,不得不提及Synchronization。在自動(dòng)化測(cè)試中,同步等待是一個(gè)很重要的問題,特別是Ajax的出現(xiàn),使這個(gè)問題更為復(fù)雜。在QTP工具平臺(tái)中實(shí)際上可以統(tǒng)一設(shè)置同步等待時(shí)間,比如20秒。但這樣做效率并不高,如果遇到需要同步等待的情況時(shí),20秒有可能不夠;但如果遇到根本不需要同步等待的情況,則變成了無效等待,延長了腳本運(yùn)行時(shí)間。所以利用設(shè)置相同的同步等待時(shí)間,腳本效率并不高,一般我們不采用這種辦法。QTP同步機(jī)制解決辦法有多種,而且每一種辦法所適用的情況也不盡相同。
2.QTP同步機(jī)制簡介
?。?)QTP簡介
QTP全稱為HP QuickTest Professional software,最新的版本為HP QuickTest Professional 10.0。HP QuickTest Professional提供符合所有主要應(yīng)用軟件環(huán)境的功能測(cè)試和回歸測(cè)試的自動(dòng)化。采用關(guān)鍵字驅(qū)動(dòng)的理念已簡化測(cè)試用例的創(chuàng)建和維護(hù)。它讓用戶可以直接錄制屏幕上的操作流程,自動(dòng)生成功能測(cè)試或者回歸測(cè)試用例。專業(yè)的測(cè)試者也可以通過提供的內(nèi)置腳本和調(diào)試環(huán)境來取得對(duì)測(cè)試和對(duì)象屬性的完全控制。QTP進(jìn)行功能測(cè)試的測(cè)試流程分五個(gè)步驟:制訂測(cè)試計(jì)劃→創(chuàng)建測(cè)試腳本→增強(qiáng)測(cè)試腳本功能→運(yùn)行測(cè)試→分析測(cè)試結(jié)果。
?。?)QTP同步機(jī)制介紹
什么是同步?舉一個(gè)簡單的例子,如圖1所示。在Flight Reservation系統(tǒng)中預(yù)訂一張機(jī)票,參數(shù)設(shè)置見表1。預(yù)訂機(jī)票過程的滾動(dòng)條移動(dòng)就是QTP同步等待的過程。
圖1 Flight Reservation系統(tǒng)中預(yù)訂一張機(jī)票時(shí)同步問題截圖
表1 Flight Reservation系統(tǒng)中預(yù)訂一張機(jī)票的參數(shù)設(shè)置
?。?)需要增加同步等待時(shí)間的幾種情況
·當(dāng)一個(gè)進(jìn)度條需要達(dá)到100%完成時(shí)
·當(dāng)一個(gè)狀態(tài)消息出現(xiàn)時(shí)
·當(dāng)命令按鈕的狀態(tài)更改為可用狀態(tài)時(shí)
·一個(gè)窗口的打開需要數(shù)據(jù)輸入時(shí)
·一個(gè)操作后會(huì)對(duì)應(yīng)彈出一個(gè)消息時(shí)
3.五種QTP同步機(jī)制解決辦法
?。?)對(duì)象的默認(rèn)等待時(shí)間
這是QTP本身自帶的同步機(jī)制,運(yùn)行QTP腳本過程中要對(duì)某個(gè)對(duì)象進(jìn)行操作時(shí),QTP會(huì)根據(jù)對(duì)象庫中對(duì)象的屬性或是對(duì)象描述的屬性對(duì)進(jìn)行搜索此對(duì)象,如果在一段時(shí)間內(nèi)仍未找到相應(yīng)對(duì)象則認(rèn)為些對(duì)象不存在。而這個(gè)時(shí)間則是對(duì)象的默認(rèn)等待時(shí)間,可以在File→Settings→Run→Object Synchronization中設(shè)置,默認(rèn)時(shí)間是20秒。
這種辦法雖然可以避免錯(cuò)誤提示,但當(dāng)?shù)却龝r(shí)間超過20秒,只能設(shè)置更長大的時(shí)間,理論上只要時(shí)間足夠長就可以解決問題,但執(zhí)行效率也會(huì)十分低,而且在大多數(shù)情況下不需要等待這么長的時(shí)間。
對(duì)于C/S項(xiàng)目,等待時(shí)間以同步方法為準(zhǔn);對(duì)于B/S項(xiàng)目,等待時(shí)間系統(tǒng)會(huì)取并集,把自帶同步時(shí)間和自定義同步時(shí)間相加。
?。?)對(duì)象的Exist屬性
這種方法用在if...then語句塊中。每個(gè)對(duì)象都會(huì)有Exist屬性以判定些對(duì)象是否存在,其可以設(shè)置一個(gè)參數(shù)即是等待時(shí)間,在這個(gè)時(shí)間進(jìn)行對(duì)象搜查。使用時(shí)需要注意兩個(gè)問題,一是這是個(gè)對(duì)象屬性而不是對(duì)象方法,它有返回值,是一個(gè)布爾值。所以不能將"Browser("蘇工院").Page("蘇工").WebEdit("wd").Exist(5)"作為一個(gè)語句,必須接受其返回值,不然會(huì)提示引對(duì)象不支持此方法;二是其參數(shù)是秒而非QTP tutorial上提示的毫秒。
?。?)對(duì)象的waitProperty(“property”,“expect Vaue”,timeout)方法
在QTP中幾乎每個(gè)對(duì)象都有這個(gè)方法,此方法是指在timeout時(shí)間內(nèi)等待此對(duì)象的某個(gè)屬性值為期望值。如果在timeout內(nèi)屬性期望值出現(xiàn)則立刻執(zhí)行下一步,否則等待timeout。這種辦法使用時(shí)需要注意問題是QTP設(shè)置同步點(diǎn)的方法:在錄制狀態(tài)下,選擇Insert→Synchronization Point,選擇要同步的對(duì)象,設(shè)置要同步的屬性則可設(shè)置一個(gè)同步點(diǎn)了。
(4)Synce方法
這種方法主要針對(duì)Web系統(tǒng),是網(wǎng)站測(cè)試中的專用方法,主要用于頁面載入時(shí),使用范圍較小,且簡單實(shí)用。
?。?)wait()函數(shù)
執(zhí)行腳本遇到wait()函數(shù)時(shí),暫停執(zhí)行腳本,然后等待定義的時(shí)間,時(shí)間滿后繼續(xù)執(zhí)行下一步。Wait(timeout),等待時(shí)間是此方法的唯一參數(shù),它由秒和毫秒組成?;贏jax局部刷新的Web測(cè)試通常采用這種方法解決同步問題。Wait()函數(shù)的缺點(diǎn)是腳本運(yùn)行時(shí)間長,假設(shè)一般中大型項(xiàng)目的自動(dòng)化測(cè)試用例有500多個(gè),對(duì)應(yīng)有500多個(gè)腳本,如果每個(gè)腳本都等待50秒的話,那么,所有腳本運(yùn)行一次的等待時(shí)間將會(huì)很長。
4.結(jié)語
通過以上歸納和總結(jié),我們可以看到根據(jù)不同實(shí)際同步處理所采用的辦法也不相同,在特定的案例中,采用恰當(dāng)?shù)耐教幚磙k法才能提高QTP腳本的執(zhí)行效率。QTP同步機(jī)制解決辦法在一般的自動(dòng)化測(cè)試相關(guān)書籍中提及的并不多。本文結(jié)合實(shí)際項(xiàng)目總結(jié)歸納出的五種QTP同步機(jī)制解決方法,對(duì)于自動(dòng)化測(cè)試初學(xué)者具有一定的指導(dǎo)意義和參考價(jià)值。
參考文獻(xiàn):
?。?]常廣炎.QTP8.2自動(dòng)化測(cè)試工具技術(shù)實(shí)踐[J].標(biāo)準(zhǔn)與技術(shù)追蹤,2008,(4):44-46.
?。?]杜斌.QTP腳本參數(shù)化的應(yīng)用方法[J].中國金融電腦,2010,(6):67-71.
?。?]李金鳳.基于QTP的軟件功能測(cè)試與案例研究[J].信息技術(shù),2009,(10):85-93.
?。?]田艷琴.QTP從實(shí)踐到精通[M].北京:電子工業(yè)出版社,2010.
?。?][美]Ron Patton.軟件測(cè)試[M].北京:機(jī)械工業(yè)出版社,2010.