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