?

QTP自動化測試對象庫的設計、研究和實現

2014-02-12 21:41
天津職業院校聯合學報 2014年8期
關鍵詞:庫中腳本名稱

(天津商務職業學院,天津 300221)

一、QTP簡介

目前軟件的自動化測試,由于其高效率、低成本的特點,在多數的軟件企業中越來越受到重視。自動化測試在一些傳統的軟件企業的軟件生命周期中沒有占到太大的比重,但是對于在一些對軟件質量要求較高,發布版本較為頻繁的項目中,使用了自動化測試用例與否,自動化測試用例所占的比率,是關系項目成敗的一個重要因素。

QTP(Quick Test Professional)是眾多自動化測試軟件的較為優秀的一個,目前很多軟件企業都在使用。QTP是一種基于GUI對象技術實現的工具,因此QTP的自動化腳本實現的功能是對應用程序界面的操作,即多程序中對象的操作。因此,界面上的操作對象能否準確的被識別,關系到自動化測試能否正常自動執行。對象庫指的是自動化測試項目中被測試對象的集合,對象庫在QTP中的地位尤為重要。QTP是的實現原理是查找應用程序界面或Web頁面中的控件ID及屬性判斷與測試對象是否匹配。QTP對于使用不同語言和平臺編寫的程序會采取不同的對象識別方法來識別測試對象,但這些方法都有一個共同點,那就是通過對比測試對象的屬性來判斷區分對象。

二、QTP對象庫的概念

QTP中的對象可以分為兩種,一種是QTP的測試對象(Test Object),測試對象一般在第一次使用QTP錄制腳本時會自動保存在QTP的本地對象庫中;另外一種是應用程序界面的實際對象(Runtime Object),這些實際對象是構成測試應用程序實體的重要部分。

在QTP的實際使用過程中,QTP腳本對對象的操作步驟有如下三步:

1.根據腳本中對象名稱找到對象庫中的對象,即Test Object的對象。

2.根據找到的對象中的關鍵屬性查找Runtime Object中的對象,也就是在程序中尋找需要進行操作的對象。

3.如果在步驟(1)和步驟(2)中查找到的對象相互匹配,那么QTP就會對該對象進行操作,否則會提示對象出錯,不對此對象進行操作。

QTP對象庫的就是用來識別測試對象的,因此QTP腳本的核心就是對象庫,若沒有對象庫或對象庫管理混亂,QTP腳本就失去了自動化測試的意義。在實際的編程過程中,是沒有對象庫概念的,實際上是把對象庫中的對象分散到QTP腳本中去,測試執行中對象識別的原理沒有任何變換。

能否有一個良好的對對象庫的設計、維護和管理,不僅關系到自動化測試的效率,還有可能關系到自動化測試的成敗。

三、創建對象庫

QTP自動化測試腳本中的對象庫分為兩個部分,一部分稱作本地對象庫,即Local Object,一般指的是在第一次錄制腳本時,QTP自動生成的對象庫,QTP會保存在本地對象庫中;另外一部分稱作共享對象庫,即Share Object。

本地對象庫中的對象作用范圍僅限于當前QTP腳本的Test和Action,如果其他QTP腳本的Test和Action也需要使用這些對象,那就必須在其他腳本中再添加一次,這樣每次創建一個新Test和Action時都需要添加這些對象,這樣會大大降低測試效率。因此,需要有一種方法能將每次錄制腳本時產生的本地對象導出到一個專門的文件中,作為一個共享文件給其他Test和Action使用,共享對象庫就應運而生。有了共享對象庫后,其他的Test和Action使用這些對象時,可直接引用該對象庫即可。

當一個對象庫文件文件中的一些對象需進行更改時,只需要修改這個對象庫文件即可,并不需要對使用這個對象庫文件的所有QTP腳本進行更改。這樣更方便維護,最大限度的提高了效率;另外,一旦一個對象庫創建完畢,若被測對象的功能有了變化,仍然需要對這些對象庫文件進行更新維護。對象庫一般分為三層:即Browser層、Page層和Control層。在某些特殊情況下,例如Web頁面存在Frame框架時,對象庫可能存在四層或者更多層。

由于QTP錄制腳本時自動捕捉到的對象名稱不規范且易重復,造成維護和使用不便,因此,在捕捉完對象后,建議對所有的對象進行重命名,命名規則如下:

1.名稱應與所對應的對象相關,看到名稱即可知道對象的作用;

2.如果一個對象中包含動作,則對象名稱應為:動作名+對象名;

3.必須是英文名,采用駝峰標識格式書寫;

4.名稱不包含特殊符號,例如“/”、“,”、“@”等;

5.名稱應不超過15字符。

四、管理對象庫

對于使用QTP做為自動化測試工具的測試項目來說,其對象庫的管理在整個自動化測試過程中,占有非常重要的地位。特別是對于一個大型的應用系統,其界面的對象多而雜,一個統一、有序的對象倉庫非常有利于腳本的快速開發,以及團隊成員間的協作。 對于一個對象庫,不允許同時有多個人維護一個對象,同樣也不建議一些對象處于無人維護的狀態。在某些特殊的場景下,需要多個人同時維護同一個對象庫,這只能通過讓他們都進行維護,各自保存一份副本,然后在后期進行比較合并即可。對比兩個對象庫文件,常用的對比工具為:BeyondCompare。

在BeyondCompare中,左側和右側分別加載了兩個對象庫文件,兩個文件地位相等,無主次關系。對比順序為按照兩個對象庫文件的樹形節點展開,逐個節點逐層對比,如先對比第一層Browser層,若Browser層的兩個名稱和屬性一致,則再對比Page層,以此類推。當到達一個節點的末梢時,再判斷對象庫文件中的對象名稱和屬性是否一致,根據如下幾種情況進行分析:

1.當一個對象的名稱和屬性對比結果一致時,可判斷兩個對象庫中的對象是相同的。

2.若在一個文件的對象結構下包含一個對象,而另一個文件中沒有該對象,則認為后者文件中此對象缺失。

3.若對象名稱不同,但是對象結構和屬性均一致,則認為這兩個對象為類似對象。該現象出現的原因可能是在創建對象庫時發生了命名錯誤導致。

4.若兩個對象名稱和結構均一致,但是對象屬性不同,則可認為這兩個對象非同一對象。

5.若兩個對象的名稱和屬性均一致,但是對象結構不相同,此類對比不做判斷。

對象對比完成后,測試人員可根據對比結果,結合實際情況進行分析,重新修改對象庫文件,這樣才能達到對象庫唯一性的目的。

但是,若對比的兩個對象差異很大,此時單純使用比較工具對比后進行人工維護會極大程度降低管理對象庫的效率。因此需要引入另一款對象合并工具。

QTP提供了一個Reporsitories Merge Utility,可以實現對象庫的合并功能。與比較工具不同的是,若對對象庫進行合并,就需要設定對象的主次關系,在一般情形下,主對象庫一般選擇為主干對象庫,而從對象庫往往為分支對象庫,這與版本控制原理相同。工具會根據一些規則對對象庫進行合并:

(1)若在主對象庫中存在一個對象,在從對象庫中沒有,則不會合并。

(2)若在從對象庫中存在一個對象,在主對象庫中沒有,則將該對象合并入主對象庫。

(3)若在主從對象庫中對象的名稱和屬性不同,則會有測試人員判斷是否何如主對象庫。

Reporsitories Merge Utility對于有多個節點相同的兩個對象庫,進行合并操作的時候經常會出現主從對象庫中對象的名稱和屬性不同情況,因此,在測試的時候,會出現節點沒有自動添加進來,需要手動添加的情況。不過對于其他情況,還是可以做到添加新對象到統一的對象庫中,把多人開發的結果集中到一起管理。

五、結束語

綜上所述,若選擇合適的對象庫技術,在實際的測試項目中能夠對對象進行高效、合理的管理,這不僅能夠提升自動化測試的效率,還能夠最大限度地降低測試成本。

參考文獻:

[1]陳能技.軟件自動化測試成功之道[M].北京:人民郵電出版社,2010.

[2]E測試工作室.QTP項目應用與進階[M].北京:化學工業出版社,2009.

[3]陸璐,王柏勇.軟件自動化測試技術[M].北京:清華大學出版社,2006.

猜你喜歡
庫中腳本名稱
酒駕
英語專業學士學位論文摘要的元話語特征研究
街頭的人
安奇奇與小cool 龍(第二回)
功能強大的濾鏡庫
快樂假期
從今天開始
小編的新年愿望
滬港通一周成交概況
滬港通一周成交概況
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合