關于QTP

發表于:2009-11-13來源:作者:點擊數: 標簽:qtpQTP
關于QTP 軟件測試 一、QTP中虛擬對象設置 當我們在錄制腳本中,有時會遇到某個對象回放時不能識別.那么就可以考慮是不是可以做個虛擬對象來代替它.您可以將這些對象定義為虛擬對象,并將它們映射到標準類,例如按鈕或復選框。QuickTest 在運行會話過程中模擬

關于QTP        軟件測試

一、QTP中虛擬對象設置

             當我們在錄制腳本中,有時會遇到某個對象回放時不能識別.那么就可以考慮是不是可以做個虛擬對象來代替它.您可以將這些對象定義為虛擬對象,并將它們映射到標準類,例如按鈕或復選框。QuickTest 在運行會話過程中模擬虛擬對象上的用戶操作。在測試結果中,虛擬對象顯示時類似標準類對象。

   下面我們還是通過一個例子來具體操作一下.這次選用LoadRuner自帶的b/s架構的web例子,來錄制腳本.(注:運行這個例子,同時把web server先給開起來.).這次只錄制一個點擊sign up(注冊)的步驟.

錄出腳本如下:

Browser("Mercury Tours").Page("Mercury Tours").Frame("navbar").Image("signup").Click 45,12

QTP把這個button對象識別成了Image(圖片)對象,導致最后回放的時候,QTP不能完成Click操作,彈出報錯信息.對于這個對象,我馬上想到了做個虛擬的button對象來代替它.

下面是整個虛擬對象的制作過程:

1.選擇“工具”>“虛擬對象”>“新建虛擬對象”?;蛘?,也可以在虛擬對象管理器中,單擊“新建”。將打開虛擬對象向導。單擊“下一步”。

2.選擇要將您的虛擬對象映射到的標準類(這里有六種對象類供你選擇,分別是object,button,table,list,check box,radio button).這里我們要映射一個button對象,所以選擇button.單擊"下一步"

3.單擊“標記對象”。選擇你要做虛擬對象的區域,拖動鼠標.盡量能覆蓋整個你想替代的對象.

4.在“標識對象使用”框中,選擇您希望 QTP 標識和映射虛擬對象的方式。

如果您想要 QuickTest 標識所有出現的虛擬對象,請選擇“Parent only”。

如果想要 QuickTest 僅標識一次出現的虛擬對象,請選擇“Entire parent hierarchy"。

這里我們選擇默認的“Parent only”。

5.指定虛擬對象的名稱和集合。從集合列表中選擇,或通過在“集合名”框中輸入新名稱來新建集合

點擊完成,整個虛擬對象就做好了.

虛擬對象做好后,保存在虛擬對象管理器中.我們可以通過虛擬對象管理器來刪除或禁用虛擬對象定義.

選擇“工具”>“虛擬對象”>“虛擬對象管理器”。將打開虛擬對象管理器。

注意:如果希望 QuickTest 在錄制時識別虛擬對象,請確保清除“選項”對話框的“常規”選項卡中的“錄制時禁止識別虛擬對象”復選框。

接下來我們再來錄制一遍對sign up的操作,錄制代碼如下:

Browser("Mercury Tours").Page("Mercury Tours").Frame("navbar").VirtualButton("button").Click

在錄制過程中值得注意的是,一定要點擊到我們做好虛擬對象的范圍內,這樣QTP才能識別到這個虛擬對象.這里我們的虛擬對象識別成功.再次回放,QTP順利的執行了腳本.

還有兩點要注意的是:

1.虛擬對象管理器中顯示的虛擬對象集合存儲在您的計算機中,而不是隨包含虛擬對象步驟的測試或組件存儲。這意味著如果您在測試或組件步驟中使用虛擬對象,則僅當在包含正確的虛擬對象定義的計算機中運行時,該對象在運行會話過程中才能被識別。要將您的虛擬對象集合定義復制到另一個計算機,請將您的 <QuickTest 安裝文件夾>\dat\VoTemplate 文件夾的內容(或該文件夾中的單個 .vot 集合文件)復制到目標計算機上的相同文件夾中。

2.僅當錄制和運行測試或組件時,才能使用虛擬對象。您不能在虛擬對象上插入任何類型的檢查點,也不能使用“對象探測器”來查看其屬性。

接下來你可以繼續完成整個sign up過程,還有多個類似的對象需要做虛擬對象.

二、QTP中設置共享對象庫

很多時候我們總是覺得管理QTP的腳本比較煩.因為除了要對代碼的管理之外,還要保證QTP對象庫的完整.每一個用例腳本的生成,同時又都會生成一個對象庫.那么是不是可以做一個公共的對象庫來給各個用例腳本調用呢?接下來,我們就來實現共享對象庫的應用.

  第一步:把需要加到共享對象庫中的各個用例腳本的對象庫,分別導出成.tsr文件.

  操作方法:先用QTP打開已經錄制完畢的腳本后,選擇Resources--> Object Repository .

  然后file-->export....取名導出文件.

  第二步:把需要加入到共享對象庫中的各個用例腳本的對象庫,合并對象及對象屬性,形成一個大的共享對象庫.

  操作方法:打開Resources-->Object Repository Manager.找到Tools菜單,然后選擇打開Object Repository merge tool.選擇兩個要合并的對象庫文件,進行對象合并.一次只能合并兩個.所以如果這里你要合并多個對象庫文件的話,先合并兩個后,保存成一個新的.tsr文件.然后再重復上面的操作,選擇這個新的.tsr文件和另一個準備好的對象庫合并.

合并的時候,你會發現,在兩個對象庫文件中,相同的對象合并成一個,不同的對象,全部被完整增加進去.然后形成一個大的對象庫.現在只要保存這個共享對象庫.如果以后有新增的對象,可以重復上述操作.

  第三步:調用上面保存好的共享對象庫.給新的腳本使用.

  操作步驟:Resources-->Associate Repository.選擇上面保存好的共享對象庫的.tsr文件.加入到Associate Repository中.

完成這一步后,其實整個共享對象庫的操作已經完成.你在對象庫中可以看到以后的對象.在錄制新腳本的時候,如果對象已經存在,就不會再被記錄,只有在這個對象庫中沒有的對象才會被記錄進去.回放腳本,對象識別成功.

(注:此操作只適合與裝有QTP9.0的版本.對于8.2版本不適合)

附:8.2版本中的享對象庫操作

QTP8.2的共享方法

選擇“測試”>“設置”>“資源”選項卡。

2. 在“對象庫類型”區域,“共享”。

請指定要用作對象庫文件的共享對象庫文件。要指定文件,請輸入對象庫文件名,或單擊瀏覽按鈕并從“打開”對話框中選擇資源文件。要新建共享對象庫文件,請在“共享”框中輸入新文件名。

對象庫文件的默認文件擴展名是 .tsr,但是文件可能使用任何擴展名。在“打開”對話框中瀏覽現有對象庫文件時,在“文件類型”框中選擇“所有文件”。

注:請在新測試開始錄制前進行設置,已有測試的對象庫模式不能進行修改。

三、QTP參數化實例

在自動化測試當中,有時為了模擬真實效果,或者為了達到某種操作效果,那么勢必要把腳本參數化.那么一般的針對輸入值的參數化或者select選擇值的參數化,操作也比較容易,這里也不多說了,直接把固定值換成變量就可以.鑒于上個星期有兩個朋友都問到了針對某個對象的參數化,那么就來探討一下針對對象的參數化.

例:

Browser("Browser").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"

Browser("Browser").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click

Browser("Browser").Page("百度搜索_111").Link("菜111 的QQ家園").Click

    在這個例子中,我們的目的是把這個link對象給參數化掉.這里直接把對象名參數化掉,肯定是不行的.因為我們知道QTP識別對象依靠是這個對象在對象庫中的屬性和屬性值.而如果我們這里參數化成一個新的對象名,那么這個對象名是不存在于對象庫中的,那么勢必會造成在回放過程中不通過,報對象庫中沒有這個對象的錯誤.所以我第一個想到的是先讓這個link對象脫離對象庫,讓它不用通過對象庫就能識別這個link對象,那么接下來只要直接換成變量就成功了.相信大家都看到過幫助里對描述性編程的說明,通過把腳本改寫成描述性編程的形式,可以讓QTP在執行腳本時不要再去依賴對象庫.直接把一些付有特征的屬性和屬性值放到腳本中,就能執行相應的操作.所以我們可以先把上面腳本改寫成:

Browser("Browser").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"

Browser("Browser").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click

Browser("Browser").Page("百度搜索_111").Link("text:=菜111 的QQ家園").Click

    這樣表示后,再把這個對象在對象庫中的記錄給刪掉.重新運行腳本后,腳本依舊能正確執行.那么接下來的操作就方便了,直接把相應的固值換成一個變量即可.我們來這么操作:

Dim i

i="菜111 的QQ家園"

Browser("Browser").Page("百度——全球最大中文搜索引擎").WebEdit("wd").Set "111"

Browser("Browser").Page("百度——全球最大中文搜索引擎").WebButton("百度搜索").Click

Browser("Browser").Page("百度搜索_111").Link("text:="&i).Click

    到這里整個操作過程就完成了.其實這只是一個方法,相信大家肯定還有其他方法,希望大家能留言說說自己的看法.當然如果這個對象的對象名有一定規律的話,我們還可以考慮運用正則表達式的方法,也可以達到預期的效果.

 

 

 

 

  

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97