軟件工具-quicktestpro qtp錯誤處理機(jī)制概述_第1頁
軟件工具-quicktestpro qtp錯誤處理機(jī)制概述_第2頁
軟件工具-quicktestpro qtp錯誤處理機(jī)制概述_第3頁
軟件工具-quicktestpro qtp錯誤處理機(jī)制概述_第4頁
軟件工具-quicktestpro qtp錯誤處理機(jī)制概述_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、作者:電子郵件:gy21st Page 1 of 16目錄1.2.概述3三種錯誤處理方式介紹32.12.22.2.12.2.22.2.32.3全局錯誤響應(yīng)3VBScript 的 On Error 錯誤處理方式4On Error Resume Next4On ErroTo 04Err 對象4恢復(fù)場景Recovery Scenarios43.三種錯誤處理方式的作用域83.13.1.13.1.23.1.33.1.43.23.2.13.2.23.2.33.2.43.3全局錯誤響應(yīng)9對 Action 中直接定義的函數(shù):9對用 ExecuteFile 引入的函數(shù):9對于 Function Library

2、中定義的函數(shù)9對于 Action 的嵌套調(diào)用11VBScript 的 On Error 錯誤處理方式11對 Action 中直接定義的函數(shù):11對用 ExecuteFile 引入的函數(shù):12對于 Function Library 中定義的函數(shù)12對于 Action 的嵌套調(diào)用13錯誤恢復(fù)場景 Recovery Scenarios134.三種錯誤處理方式的優(yōu)先級別13Page 2 of 161. 概述本文針對 QuickTest Profesal(后面將簡稱 QuickTest 或 QTP)提供的運(yùn)行時錯誤處理機(jī)制進(jìn)行詳細(xì)描述。內(nèi)容包括各種錯誤處理方式的功能的介紹,各種機(jī)制的作用范圍的分析,以及

3、錯誤處理機(jī)制同時作用時的優(yōu)先級別的分析。本文可以為 QTP 用戶采用何種錯誤處理機(jī)制對測試的運(yùn)行時錯誤進(jìn)行處理提供參考。注 1: 本文只對錯誤機(jī)制進(jìn)行描述,并不涉及對各種錯誤機(jī)制適應(yīng)性的分析。注 2: 所有功能介紹及實(shí)例基于 QuickTest Profes9.2 版本,其他版本驗(yàn)證。注 3:知識能力所限,錯誤疏漏之處在所難免,若有問題,請與作者聯(lián)系。2. 三種錯誤處理方式介紹QuickTest Profesal 中有三種錯誤處理機(jī)制,在這里定義為:全局錯誤響應(yīng): Test Setting 中 Run 設(shè)置VBScript On Error 錯誤處理: On Error Resume Next

4、錯誤恢復(fù)場景: Recovery Scenarios2.1全局錯誤響應(yīng)全局錯誤響應(yīng)在 Test Setting 的 Run 選項(xiàng)中進(jìn)行設(shè)置:File SettingsTest Settings Dialog RunTabWhen error occurs during run sesPage 3 of 16四種設(shè)置選項(xiàng)如下:pop up message box: QuickTest 在出現(xiàn)錯誤時顯示一個錯誤消息必須單擊該消息框中的某個按鈕框。要繼續(xù)或結(jié)束運(yùn)行會話,您pros to next action iteration: QuickTest 在出現(xiàn)錯誤時繼續(xù)下一個 Action 循環(huán)。st

5、op run: QuickTest 在出現(xiàn)錯誤時停止測試pros to next step:QuickTest 在出現(xiàn)錯誤時跳過錯誤語句,繼續(xù)下一步驟全局錯誤響應(yīng)是 QTP 的系統(tǒng)缺省錯誤處理,就是說當(dāng)沒有使用其他錯誤處理方式時,系統(tǒng)會自動調(diào)用在這里指定的方式進(jìn)行錯誤處理。2.2VBScript 的 On Error 錯誤處理方式由于 QTP 使用了 VBScript 作為語言,自然地,VBScrip 的錯誤處理方式在 QTP 中都適用。在 VBScript中,與錯誤處理相關(guān)的三者為:On Error Resume Next 語句, On ErroTo 0 語句,以及 Err 對象2.2.1O

6、n Error Resume Next一旦這個語句已被處理,引擎將繼續(xù)運(yùn)行后面的程序,而不理會已經(jīng)發(fā)現(xiàn)的任何錯誤。2.2.2On ErroTo 0oto 0 語句恢復(fù)缺省的錯誤處理行為。在運(yùn)行這個語句后,發(fā)生的運(yùn)行期錯誤將導(dǎo)致缺省錯使用 On Err誤處理。在 QTP 中,缺省錯誤處理就是全局錯誤響應(yīng)。2.2.3Err 對象Err 對象重要的屬性有三個:Number, Source, Description。分別是錯誤號,錯誤來源,錯誤描述Err 對象會在運(yùn)行時錯誤發(fā)生的時候賦予新的值,舊的值會被舍棄。Err 對象不會受到函數(shù)調(diào)用的影響,它完全是全局的。 Err 對象可以用 Clear 方法清

7、空任何時候調(diào)用 On Error Resume Next 或者 On ErroTo 0 的時候,都會清空 Err 對象2.3恢復(fù)場景 Recovery ScenariosResourRecovery Scenarios Manager可以創(chuàng)建恢復(fù)場景。具體請參考幫助文檔,這里只是說明對于運(yùn)行錯誤的處理。以下是恢復(fù)場景設(shè)置的幾張截圖。Page 4 of 16Page 5 of 16在恢復(fù)場景中觸發(fā)事件 TriggerEvent 中的一個選項(xiàng)是 Test Run Error,表示在運(yùn)行過遇到錯誤時所采取的恢復(fù)處理方式。Any ErrorItem in list or看一看下圖可以對哪幾種錯誤進(jìn)行恢

8、復(fù)處理,即錯誤恢復(fù)的觸發(fā)條件:is not uniquePage 6 of 16Item in list ornot foundMoren one object responds to the physical descriptionObject is disableObject not found Object not visible恢復(fù)處理(Recovery Operation)有以下幾種方式:Keyboard or mouse operationClose application proFunction callsRestartWindows這里不再詳述。具體參考幫助文檔。從恢復(fù)場景的觸

9、發(fā)條件可以看出,所有錯誤處理都是針對測試對象發(fā)生的錯誤而言的(Any Error 指列表中所有的其他錯誤類型),它并不處理被零除、賦值,內(nèi)存分配錯誤等等 VBScript 的運(yùn)行時錯誤。這是和其它兩種錯誤處理方式不同之處。為了說明這一點(diǎn),不妨再看看 Recovery Operation 中 OperationType 如果選擇 Function Call,函數(shù)原型定義如下所示,所有的函數(shù)參數(shù)都必須包含有被測對象,觸發(fā)函數(shù)必須遵循原型定義,否則函數(shù)無法執(zhí)行。Page 7 of 16Following is the prototype for each trigger type: Test run

10、 error triggerOnRunStep (in ObjeObject: The object of the current step. in Method as String: The method of the current step.in Arguments as Array: The actual methods arguments. in Result aseger: The actual methods result.)Pop-up window and Object se triggers OnObject(in ObjeObject: The detected obje

11、ct.)Application crash trigger OnPros(以下是一個中當(dāng)觸發(fā)錯誤恢復(fù)場景時的錯誤描述,也可以看出觸發(fā)條件和被測對象相關(guān)。再來看錯誤恢復(fù)的后處理方式(t-Recovery Test Run Options)有以下幾種:Repeat current step and continueProceed to next stepProceed to next action or component iteration Proceed to next test iterationRestart current test run Stop the test run看到 Pro

12、ceed to next step/ Proceed to next action or component iteration/ Stop the test run這三種方式在全局錯誤處響應(yīng)理方式中也是存在的,Proceed to next step 這種方式更是和 On Error Resume Next 處理方式也是相同的。稍后會就此作進(jìn)一步敘述。3. 三種錯誤處理方式的作用域本節(jié)闡述三種錯誤處理方式的作用范圍,為了方便比較說明,這里假設(shè)三種錯誤處理方式為:全局錯誤響應(yīng): Pros to next stepVBScript 錯誤處理: On Error Resume Next錯誤恢復(fù)后處

13、理方式: Proceed to next stepPage 8 of 16in ProsName as String: The detected proame. in ProsId aseger: The detected pros ID.)因?yàn)檫@三種處理方式效果一樣,以后沒有特殊說明,都采用以上設(shè)置,可以方便比較3.1全局錯誤響應(yīng)原則: 對該 test 中的所有 Action 均生效。也就是說在 Action 里沒有其他錯誤處理方式的時候,遇到的錯誤都會按照全局錯誤響應(yīng)的設(shè)置進(jìn)行處理運(yùn)行過3.1.1對 Action 中直接定義的函數(shù):對所有函數(shù)生效。如下例,如果全局錯誤響應(yīng)設(shè)置成 pros

14、to next step 函數(shù) testA 中的被零除語句i=1/0 會跳過,三個 msgbox 均可以執(zhí)行。錯誤代碼會逐級返回。運(yùn)行結(jié)果為:3.1.2對用 ExecuteFile 引入的函數(shù):與 Action 中直接定義的函數(shù)處理方式完全一樣3.1.3對于 Function Library 中定義的函數(shù)Page 9 of 16Sub testA()Dim ii = 1/0Msgbox 3 & Err.number End SubSub testB() testAMsgbox 2 & Err.Number End SubtestBMsgbox 1 & Err.Number與 Action 中直

15、接定義的函數(shù)處理方式基本一致,對所有函數(shù)生效。但不同的是,對于錯誤代碼,只能在Function Library 中傳遞,而不會傳遞到 Action 中來。如下例, 在 test.vbs 中同樣定義如下函數(shù),并把 test.vbs 加入到 Libraries 中然后再 action1 中調(diào)用三次 msgbox 輸出結(jié)果如下:Page 10 of 16testBMsgbox 1 & Err.NumberSub testA()Dim ii = 1/0Msgbox 3 & Err.Number End SubSub testB() testAMsgbox 2 & Err.Number End Sub可

16、以看出,Error Number 最后傳到調(diào)用 Action 中時,已經(jīng)被清 0 了。3.1.4對于 Action 的嵌套調(diào)用如之前所述,對 Test 中的所有 Action 均生效,自然嵌套調(diào)用的 Action 也不例外。同 Function Library一樣,錯誤碼只能在 Action去。同樣的例子:ActionA 中的代碼如下:傳遞,也就是說被調(diào)用 Action 中產(chǎn)生的錯誤碼不能傳遞到調(diào)用 Action 中ActionB 中的代碼如下運(yùn)行結(jié)果為:可以看出,Error Number 最后傳到 ActionA 中時,已經(jīng)被清 0 了。3.2VBScript 的 On Error 錯誤處理

17、方式原則: 只對語句所在函數(shù)或 Action 中該語句之后的代碼生效,對子函數(shù),調(diào)用 Action 均無效。3.2.1對 Action 中直接定義的函數(shù):函數(shù)中錯誤拋出,不會繼續(xù)執(zhí)行錯誤代碼Page 11 of 16Dim ii = 1/0Msgbox 2 & Err.NumberRunAction ActionB, oneIteration msgbox 1 & err.number一個錯誤在函數(shù)/子程序中出現(xiàn)時,如果沒有運(yùn)行 On Error Resume Next 語句,那么錯誤將被交給調(diào)用它的環(huán)境,這個過程一直重復(fù)到找到運(yùn)行 On Error Resume Next 語句的環(huán)境繼續(xù)運(yùn)行

18、,或者找到缺省的腳本錯誤處理器。錯誤處理過程如下圖所示:如下例,運(yùn)行到 testA i=1/0 出錯,錯誤交給調(diào)用它的環(huán)境 testB,同樣 testB 把錯誤交給調(diào)用它的環(huán)境,發(fā)現(xiàn) On Error Resume Next,然后 Msgbox 1 & Err.Number 會執(zhí)行,Error Number 就是在 testA 中產(chǎn)生的錯誤碼運(yùn)行結(jié)果為:3.2.2對用 ExecuteFile 引入的函數(shù):與對 Action 中直接定義的函數(shù)的處理完全一致3.2.3對于 Function Library 中定義的函數(shù)Function Library 中定義的函數(shù)遇到錯誤拋出,執(zhí)行系統(tǒng)缺省錯誤處理

19、Page 12 of 16Sub testA()Dim ii = 1/0Msgbox 3 & Err.Number End SubSub testB() testAMsgbox 2 & Err.Number End SubtestBMsgbox 1 & Err.Number3.2.4對于 Action 的嵌套調(diào)用被調(diào)用 Action 中的語句遇到錯誤拋出,執(zhí)行系統(tǒng)缺省錯誤處理3.3錯誤恢復(fù)場景 Recovery Scenarios原則: 任何函數(shù)調(diào)用和 Action 中,只要滿足觸發(fā)條件,就會觸發(fā)錯誤恢復(fù)處理和后處理前面講過,錯誤恢復(fù)場景的觸發(fā)條件是以下 6 種Item in list orI

20、tem in list oris not uniquenot foundMoren one object responds to the physical descriptionObject is disableObject not found Object not visible對于 VBScript 的其他運(yùn)行時錯誤,并不會觸發(fā)錯誤恢復(fù)場景,當(dāng)然也不存在錯誤恢復(fù)處理及后處理。但一旦在任何函數(shù)或者 action 中滿足觸發(fā)條件,都會進(jìn)行錯誤恢復(fù)處理及后處理,也就是說,其作用范圍為所有 Action 和函數(shù)/子程序中。當(dāng)錯誤恢復(fù)完成后(包括錯誤處理及后處理),錯誤會被清 0。如果錯誤恢復(fù)的后處

21、理方式為 Proceed to next step,處理完成后再次碰到 VBScript 錯誤時如何處理呢?如新產(chǎn)生錯誤并不能滿足觸發(fā)條件,則原錯誤恢復(fù)中設(shè)置后處理方式不會繼續(xù)生效,此時會遵循缺省錯誤響應(yīng)或其他指定的錯誤處理。值得注意的是,如果錯誤恢復(fù)的后處理方式為 Repeat current step and continue 或者 Restart current test run,再次運(yùn)行到該語句仍重復(fù)同樣的錯誤,可能會導(dǎo)致死循環(huán)。4.三種錯誤處理方式的優(yōu)先級別原則:錯誤恢復(fù)場景中的錯誤處理優(yōu)先級最高 (Recovery Operation)On Error Resume Next 優(yōu)先

22、級次之錯誤恢復(fù)場景中的后處理方式優(yōu)先級別再次之 (缺省錯誤響應(yīng)優(yōu)先級別最低t-Recovery Test Run Options)也就是說,只要滿足恢復(fù)場景的觸發(fā)條件,就會進(jìn)行錯誤恢復(fù)處理(Recovery Operation)。但是其后處理方式的優(yōu)先級別和錯誤恢復(fù)處理的優(yōu)先級別是不同的。如果觸發(fā)錯誤恢復(fù)處理的語句之前有 On Error Resume Next,就不會執(zhí)行錯誤恢復(fù)后處理中所定義的處理方式。當(dāng)沒有找到以上任何錯誤處理方式的定義時,才執(zhí)行缺省錯誤處理。Page 13 of 16注意: On Err別等同起來oTo 0 其實(shí)就是指采用缺省錯誤處理,不可和 On Error Resu

23、me Next 處理的優(yōu)先級舉例說明如下。 假定-全局錯誤響應(yīng)設(shè)置為 pop up message box新建錯誤恢復(fù)場景并應(yīng)用到 test 中-觸發(fā)條件為 Test run error(Any error)錯誤恢復(fù)處理為 Close application pros (notepad.exe)錯誤恢復(fù)后處理方式為 Stop the test run新建一個 Action1,把 notepad.exe 相關(guān)對象都已添加進(jìn)對象庫,打開 notepad.exe(不打開 font 設(shè)置框)。當(dāng) Action1 中代碼如下第二行由于沒有找到 Dialog(Font)對象,會進(jìn)行錯誤恢復(fù)處理,關(guān)閉 notepad.exe,并執(zhí)行錯誤恢復(fù)后處理 stop test run。Msgbox 并不執(zhí)行。當(dāng) Action1 中代碼如下第三行由于沒有找到 Dialog(Font)對象,會進(jìn)行錯誤恢復(fù)處理,關(guān)閉 notepad.exe,但并不會執(zhí)行錯誤恢復(fù)后處理,而是繼續(xù)運(yùn)行直到 test 結(jié)束。msgbox 運(yùn)行結(jié)果為Page 14 of 16On Error Resume Next Dim iWindow(Notepad).Dialog(Font).

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論