QTP - 錯誤處理



在 QTP 中處理錯誤的方法有很多種。在使用 QTP 時,可能會遇到三種類型的錯誤:

  • 語法錯誤
  • 邏輯錯誤
  • 執行時錯誤

錯誤型別

語法錯誤

語法錯誤是指程式碼中的打字錯誤或不符合 VBScript 語法規則的程式碼片段。語法錯誤在程式碼編譯時發生,在修復錯誤之前無法執行。

要驗證語法,可以使用鍵盤快捷鍵 Ctrl+F7,結果將如下所示。如果視窗未顯示,可以導航到“檢視”→“錯誤”。

Error Handling

邏輯錯誤

如果指令碼在語法上正確,但產生意外的結果,則稱為邏輯錯誤。邏輯錯誤通常不會中斷執行,但會產生不正確的結果。邏輯錯誤可能由於各種原因發生,例如:錯誤的假設或對需求的誤解,有時是不正確的程式邏輯(使用 do-while 而不是 do-Until)或無限迴圈。

檢測邏輯錯誤的一種方法是進行同行評審,並驗證 QTP 輸出檔案/結果檔案,以確保工具按預期執行。

執行時錯誤

顧名思義,這種錯誤發生在執行時。這種錯誤的原因是指令碼嘗試執行某些操作但無法執行,指令碼通常會停止,因為它無法繼續執行。執行時錯誤的典型示例包括:

  • 檔案未找到,但指令碼嘗試讀取檔案
  • 物件未找到,但指令碼嘗試操作該特定物件
  • 將數字除以零
  • 訪問陣列元素時陣列索引超出範圍

處理執行時錯誤

有多種方法可以處理程式碼中的錯誤。

1. 使用測試設定 - 透過導航到“檔案”>>“設定”>>“執行”選項卡(如下所示)可以在測試設定中定義錯誤處理。我們可以選擇任何指定的設定並單擊“確定”。

Error Handling

2. 使用 On Error 語句 - ‘On Error’ 語句用於通知 VBScript 引擎處理執行時錯誤的意圖,而不是允許 VBScript 引擎顯示不友好的錯誤訊息。

  • On Error Resume Next - On Error Resume Next 通知 VBScript 引擎在遇到錯誤時處理執行下一行程式碼。

  • On error Goto 0 - 這有助於測試人員關閉錯誤處理。

3. 使用 Err 物件 - Err 物件是 VBScript 中的內建物件,它捕獲執行時錯誤號和錯誤描述,使我們能夠輕鬆地除錯程式碼。

  • Err.Number - Number 屬性返回或設定一個數值,用於指定錯誤。如果 Err.Number 值為 0,則表示沒有發生錯誤。

  • Err.Description - Description 屬性返回或設定關於錯誤的簡短描述。

  • Err.Clear - Clear 方法重置 Err 物件並清除與其關聯的所有先前值。

示例

'Call  the function to Add two Numbers Call Addition(num1,num2) 

Function Addition(a,b)  
   On error resume next  
      If NOT IsNumeric(a) or IsNumeric(b) Then 
         Print "Error number is  " &  err.number & " and description is : 
            " &  err.description 
         Err.Clear 
         Exit Function 
      End If 
   Addition = a+b 

   'disables error handling  
   On Error Goto 0 
End function 

4. 使用 Exit 語句 - Exit 語句可以與 Err 物件一起使用,根據 Err.Number 值退出測試、操作或迭代。讓我們詳細瞭解每個 Exit 語句。

  • ExitTest - 退出整個 QTP 測試,無論執行時迭代設定是什麼。

  • ExitAction - 退出當前動作。

  • ExitActionIteration - 退出動作的當前迭代。

  • ExitTestIteration - 退出 QTP 測試的當前迭代並繼續下一個迭代。

5. 恢復方案 - 遇到錯誤時,恢復方案將根據某些條件觸發,並在單獨的章節中詳細介紹。

6. Reporter 物件 - Reporter 物件幫助我們將事件報告到執行結果。它有助於我們確定相關操作/步驟是透過/失敗。

'Syntax: Reporter.ReportEventEventStatus, ReportStepName, Details, 
[ImageFilePath] 

'Example 
Reporter.ReportEvent micFail, "Login", "User is unable to Login."  
廣告