導致QTP運行緩慢的常見原因

1. 腳本中有太多的Wait語句

分析:Wait語句的意思是一直等到超時時間後才繼續執行腳本,等待的時間是固定的,這樣就會造成時間浪費,導致腳本運行緩慢。

解決方法:使用Exist,Sync,WaitProperty方法來代替wait


2. 開啓了智能識別

分析:QTP在識別對象的過程中如果對象的強制屬性和輔助屬性還不能唯一匹配到對象的話,會激活智能識別模式,由於智能識別的算法複雜,會消耗一定的資源開銷,所以導致腳本運行緩慢。

解決方法:全局關閉(File-->Settings-->Run)或者部分關閉智能識別(Tools-->Object Identification根據對象類型)


3. 默認同步時間設置過長

分析:在QTP的運行設置中默認對象同步的超時時間是20秒,如果是測Web程序的話還有60秒導航超時時間。


解決方法:在File-->Settings選項中調低默認的超時時間


4. 由於錯誤頁面而找不到對象導致的對象同步超時

分析:由於操作步驟錯誤或者環境原因,打開了一個錯誤的頁面,使得後續的對象都無法找到。比如我需要在同一個頁面操作10個對象,而恰巧由於網絡問題網頁發生錯誤,如果每個對象的默認超時時間是20秒的話,那麼10個對象就是200秒,也就是說一旦頁面跳轉錯誤,是非常容易導致腳本運行緩慢的!

解決方法:確保業務流程正確、儘量減少環境因素對自動化測試的影響、使用恢復場景來處理錯誤頁面


5. QTP的運行模式沒有設置成Fast

分析:QTP的運行模式分爲Normal和Fast,Nomal模式允許在每一步運行完後都有延遲時間,而Fast模式則沒有延遲時間。

解決方法:在Tools-->Options-->Run中設置運行模式爲Fast


6. 腳本中ChildObjects 方法過多使用

分析:ChildObjects方法一般都是採用循環遍歷,無疑會加重系統資源開銷,如果再加上網頁的元素很複雜的話,那麼勢必會影響腳本的性能。

解決方法:儘量避免使用子對象的方法去操作對象,可以用DOM的方式代替


7.恢復場景的激活方式設置爲"On every step"

分析:恢復場景的觸發方式有三種:On every step,On error和Never,On every step的意思在每一步運行完後激活恢復場景,去探測場景設置中的trigger有沒有觸發,這桌做法同樣也會降低腳本的性能。

解決方法:激活方式選用On error(可能會Miss一些場景)、手工激活恢復場景(Recovery對象)


8. 腳本的循環體中有過多冗餘循環

分析:有時我們會在一個循環體中再增加一些條件分支語句,用於滿足特定的測試需求,如果循環次數少的話那還好,但要是循環次數非常多的話就會大大降低腳本性能。

解決方法:在循環體的選擇分支語句中根據測試需求適當增加Exit For,Exit Function之類的語句


9. 開啓了自動截圖功能

分析:自動截圖功能對於腳本的出錯調試提供了很大的方便,能使我們以更直觀的方式去分析和定位錯誤,但同時在一定程度上也會使我們的腳本運行緩慢。

解決方法:在Tools-->Options-->Run選項中禁用自動截圖功能,如果確實需要此功能那麼可以選擇"For errors"或者"For errors and warnings"


10. 開啓了視頻錄製功能

分析:和截圖一樣,視頻錄製功能同樣可以使我們更方便地回溯腳本運行的整個過程,但是其代價也是犧牲性能。

解決方法:在Tools-->Options-->Run選項中禁用視頻錄製功能


11. 開啓了系統實時監控

分析:系統實時監控是爲了在運行自動化測試的同時,獲取一些系統的性能數據,比如內存佔用率,CPU佔用率,硬盤讀寫速度等等,通常是用來滿足性能測試的需要。如果設置的監控時間太頻繁的話,也會對腳本的性能造成一定影響。

解決方法:在File-->Settings-->Local System Monitor選項中禁用系統實時監控,或者將監控的間隔時間設置得長一些。


[注] 以上所說的各種影響腳本運行緩慢的設置問題都是基於QTP10.0版本的,如果版本不同,可能該設置所在的菜單位置不同,甚至有些功能也沒有。如果遇到這種情況的,請自動忽略該條。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章