
- QTP 教程
- QTP - 首頁
- QTP - 簡介
- QTP - 測試自動化
- QTP - 環境設定
- QTP - 錄製和回放
- QTP - 物件庫
- QTP - 動作
- QTP - 資料表
- QTP - 檢查點
- QTP - 同步
- QTP - 智慧識別
- QTP - 除錯
- QTP - 錯誤處理
- QTP - 恢復方案
- QTP - 環境變數
- QTP - 庫檔案
- QTP - 測試結果
- QTP - GUI 物件
- QTP - 虛擬物件
- QTP - 訪問資料庫
- QTP - 使用 XML
- QTP - 描述性程式設計
- QTP - 自動化物件模型
- QTP - 框架
- QTP - 框架設計
- QTP 有用資源
- QTP - 問答
- QTP - 快速指南
- QTP - 有用資源
- QTP - 討論
QTP 面試問題
尊敬的讀者,這些QTP 面試問題專門設計,旨在讓您熟悉在QTP主題面試中可能遇到的問題型別。根據我的經驗,優秀的考官很少會在面試前計劃好要問哪些具體問題,通常問題會從該主題的一些基本概念開始,然後根據進一步的討論以及您的回答繼續下去。
基於技術、載入項和平臺,QTP 選擇其工作環境。
QTP 可以處理以下環境:
預設支援的環境 | ||
---|---|---|
Web | ActiveX | Visual Basic |
其他支援的環境 | ||
.Net(Windows & Web 窗體) | PeopleSoft | Visual Age |
Java | Oracle | Delphi |
PowerBuilder | Siebel | Web 服務 |
SAP for Web | Stingray | 終端模擬器 |
WPF | 標準 Windows | SAP for Windows |
QTP 支援兩種型別的物件庫:
共享物件庫
每個動作的物件庫
共享物件庫:也稱為全域性物件庫,在使用動態物件和物件描述經常更改的測試中最佳,副檔名為“.tsr”。測試人員在自動化測試時通常更喜歡共享物件庫而不是本地物件庫。
每個動作的物件庫:這是一個預設物件庫,也稱為本地物件庫,副檔名為“.mtr”。
在 QTP 中,邏輯名稱是在建立物件庫中的物件時,相對於應用程式的其他物件唯一標識物件的名稱。QTP 使用此物件名稱來對映指令碼中顯示的物件與其在物件庫中的相應描述,使用以下程式碼:
Browser("Browser").Page("Tutorialspoint")。 這裡,Tutorialspoint 是物件的邏輯名稱。
通常,QTP 對已儲存在物件庫中的物件及其屬性執行操作。
描述性程式設計不方便使用者將物件及其屬性值儲存在物件庫中,而是方便使用者直接在指令碼中提及屬性值對。描述性程式設計並非為了避免使用物件庫,而是為了方便使用者識別動態物件。
在描述性程式設計中,使用 name 屬性,例如:
Browser("name:=xxx").page("name:=xxxx").....
或者
還可以使用“micClass”屬性,例如:
Browser("micClass:=browser").page("micClass:=page")....
可以!您可以透過本地瀏覽器錄製遠端機器上的應用程式,而不是透過遠端方式(如 Citrix)錄製;但如果您仍然無法錄製,最好在同一臺機器上安裝 QTP 和應用程式以保持相同的會話。
關鍵字“CreateObject”建立並返回對測試物件的引用。
CreateObject (servername.typename [, location] )
其中:
servername - 程式碼的必需引數,用於表示提供物件的應用程式的名稱。
typename - 程式碼的必需引數,用於表示要建立的物件的型別或類。
location - 程式碼的可選引數,用於表示要在其中建立物件的網路伺服器的名稱。
例如 - Set IE = CreateObject("Chrome.Application")
可以,可以透過為相應的測試指令碼建立可重用的動作,並從目標測試指令碼呼叫可重用的動作測試指令碼來實現。
在 QTP 中,動作拆分可用於將重要的現有動作分成兩部分。可以根據動作的功能將其分成幾部分,以便改進程式碼並將其用於不同的目的。
首先,透過選擇 Java 載入項開啟 QTP,然後對 Java 樹執行錄製操作。如果無法獲得正確的錄製環境,則在開啟的 QTP 工具中,轉到“工具”>“物件識別”>“Java”。在樹物件中更改必需和輔助屬性以方便識別。
可以透過針對不同的作業系統和瀏覽器建立不同的動作來實現跨平臺測試和跨瀏覽器測試。
跨平臺測試:內建的環境變數有助於提取作業系統資訊。您可以根據錄製動作的平臺呼叫該動作。
跨瀏覽器測試:程式碼 Browser("Core Values").GetROProperty("version") 有助於提取瀏覽器及其對應的版本,例如:IE 6、Mozilla Firefox 9 或 Netscape 5。提取瀏覽器後,您可以呼叫與特定瀏覽器相關的動作。
您可以直接從 UFT GUI 視窗連線到 QC。為此:
轉到檔案選單並選擇 (QC) quality center
接下來,將開啟一個視窗以輸入 QC 的 URL 和其他詳細資訊 - 在此視窗中,輸入使用者 ID、密碼和專案
完成上述步驟後,您就可以連線到 QC,之後您可以直接從 QC 執行測試。
UFT 中的自動化框架型別:
線性 - 使用此框架,您可以非常輕鬆地建立測試,只需編寫一個沒有模組化的單一程式即可按順序執行步驟。
關鍵字驅動 - 要使用此框架建立測試,您必須為不同的操作集生成不同的關鍵字,並將這些關鍵字引用到主要的指令碼程式碼中。
資料驅動 - 用於對儲存在單獨檔案(通常是 Excel 表格)中的多組資料執行相同的操作集。
混合 - 資料驅動和關鍵字驅動框架的組合。
BPT - 在這裡,程式被分解成業務元件,並且程式與上述一種或多種框架一起使用。
Settoproperty 代表設定測試物件屬性。使用此屬性,您可以臨時更改執行時物件的屬性值。
UFT 中的 round 函式用於對十進位制值進行四捨五入。
例如
Mydecimal = 8.2755555 Roundedvalue = Round(Mydecimal , 5) Print roundedvalue ‘it will print 8.275
可以!使用者可以透過開啟 QTP 視窗,轉到“測試設定”>“資源”(提供選擇物件庫的選項)來從本地物件庫切換到共享物件庫。
在 QTP 中,物件的屬性有助於識別 GUI 物件。在錄製過程中,GUI 物件的物件庫儲存在“物件識別”設定中定義的屬性,而在執行測試時,QTP 將儲存在 GUI 物件的物件庫中的屬性與螢幕上的屬性進行比較,以唯一識別 GUI 物件。
同時執行多個測試檔案(或一系列檔案)稱為批處理測試。為了執行批處理測試,QTP 提供了一個工具“批處理測試執行器”。要在一個工具中一起執行多個檔案,您只需新增測試指令碼即可。新增指令碼後,您無需手動執行任何操作,工具將自動開始依次開啟和執行測試指令碼。
QTP 有許多缺點:
許可證和維護成本高昂
無法執行多個執行緒/例項
與 Selenium 等開源工具相比,執行過程緩慢
QTP 許可證只能從 HP 續訂
QTP 支援 3 種類型的錄製模式:
普通(上下文)錄製模式
低階錄製模式
模擬錄製模式
普通錄製模式:大多數自動化活動中使用的預設錄製模式。透過使用 QTP 的測試物件模型,它可以識別物件及其在螢幕上的位置。
低階錄製模式:在此模式下,滑鼠在 x、y 座標上的操作有助於錄製物件。它能夠測試雜湊對映並錄製普通錄製模式無法識別的物件。
模擬錄製模式:此錄製模式基於滑鼠和鍵盤操作錄製螢幕/應用程式視窗。它記錄諸如繪製圖片、錄製簽名、拖放操作等操作。
關鍵字檢視是基於圖示的檢視,以表格格式顯示測試步驟,並自動為測試步驟建立文件。
專家檢視為關鍵字檢視中的每個測試步驟提供相應的 VB 指令碼語句。
儘管 QTP 不提供對資料庫連線的任何內建支援,但 VBScript 語言和 ADODB 物件有助於資料庫連線。
連線之前必須瞭解某些事項:
伺服器連線字串(每個伺服器的連線字串都不同,可從www.connectionstrings.com構建)
資料庫型別
伺服器名稱
資料庫名稱
使用者名稱
密碼
連線資料庫的方法有兩種:直接編寫資料庫連線命令,或者使用QTP提供的SQLQuery工具。
在測試或描述性程式設計過程中,物件探測器有助於識別並獲取應用程式的執行時和測試時物件屬性和方法。可以直接從工具欄或物件庫訪問它。
程式碼檔案的副檔名是script.mts。
如果一個步驟被宣告為可選步驟,QTP 認為該步驟不是必須執行的。如果可選步驟包含GUI物件,QTP將執行該步驟。如果可選步驟不包含GUI物件,QTP將跳過該可選步驟並轉到下一步。
自動化框架的型別包括:
線性指令碼 - 記錄和回放
測試庫體系結構框架
資料驅動測試框架
關鍵字驅動(或表驅動)測試框架
混合框架
QTP中的頁面檢查點顯示頁面中有效/無效連結的數量。
雖然QTP提供了四種結果狀態:透過、失敗、完成和等待,但QTP的標準方法“Reporter.Reportevent”會向測試結果視窗傳送自定義訊息。“Reporter.Reportevent”還可以將結果狀態的螢幕截圖傳送到測試結果視窗。
語法
Reporter.ReportEvent EventStatus, ReportStepName, Details [, ImageFilePath]
其中
EventStatus = 0 或 micPass,1 或 micFail,2 或 micDone,以及 3 或 micWarning
ReportStepName = (字串) 報告中目標步驟的名稱(物件名稱)。
Details = (字串) 報告事件的描述。該字串將顯示在報告的步驟詳細資訊框架中。
QTP自動化物件模型完全處理QTP中發生的自動化過程。通常,QTP自動化物件模型表示QTP測試提供的所有配置和功能。幾乎所有QTP對話方塊都包含其對應的自動化物件,可以透過自動化物件模型中提供的對應屬性或方法對其進行編輯或重新獲取。使用者可以使用自動化物件和標準VB程式設計元素(迭代迴圈或條件語句)來設計所需的指令碼。
在測試執行期間,文字輸出值捕獲應用程式上顯示的文字。在引數化中,文字輸出值捕獲每次迭代中顯示的值,這些值將儲存在執行時資料表中以供進一步使用。
步驟生成器在不錄製任何過程的情況下向測試指令碼新增步驟。
可以透過兩種方式呼叫操作:
呼叫操作的副本:複製操作(可重用和不可重用的操作)時,還會複製檢查點、引數化以及呼叫測試的資料表中的相應操作選項卡。在呼叫測試的資料表中,可以對複製的操作進行修改,這些修改不會影響其他測試。
呼叫現有操作:這裡,只能呼叫“可重用”的操作。在呼叫測試中,對現有操作的呼叫將處於只讀模式。它們只能在其建立的測試中修改。它易於管理,可以在多個測試中使用相同的操作。
測試融合報告顯示測試應用程式在執行測試時使用的所有功能。測試融合報告以組織良好的表格格式呈現自身。此外,它還詳細介紹了每次迭代的每個步驟、執行時資料表以及如果選擇了測試執行的影片。
執行時資料表儲存值,例如:引數化輸出、檢查點值、輸出值等。它以“xls”副檔名呈現自身,並存儲在測試結果資料夾中。使用者也可以從測試融合報告中訪問它。
檢查點是一個驗證點,透過比較指定屬性的當前值和預期值來生成透過或失敗狀態。
輸出值是在執行測試時記錄的值,可以儲存在特定位置,例如:資料表或變數中。與檢查點不同,它不會比較兩個值來生成透過/失敗狀態。
在QTP中,可以使用“恢復方案”和“On Error”語句來處理異常。
要在恢復方案中處理異常,必須定義三件事:
觸發的事件
恢復步驟
恢復後測試執行
使用“On Error”語句處理異常 - 在指令碼中,必須使用“On Error Resume Next”和“On Error Go to 0”語句。
在QTP中,操作是用VB指令碼語言編寫的,不返回值。函式是用VB指令碼語言編寫的,返回單個值。
每個操作都有自己的物件庫、資料表、活動螢幕等,而函式則沒有。
可以在操作中呼叫函式,但在函式中不能呼叫操作。
在QTP中,函式以“.vbs”副檔名儲存,而操作以“.mts”副檔名儲存。
操作是QTP內部的,而函式只是一些帶有一些/無引數和單個返回值的程式碼行。
操作有時可重用,有時不可重用,而函式總是可重用的。
在變數名前使用DIM關鍵字宣告變數,在變數名前使用SET關鍵字為變數賦值。
例如
“Dim weight”, here DIM keyword is used to declare weight variable. Set weight = 40, here SET keyword is used to assign value “40” to the weight variable.
GetRoProperty是QTP的標準方法,用於獲取執行時物件的屬性值。
有時,QTP無法找到與相應物件描述匹配的物件。或者,有時,QTP找到多個與物件描述匹配的物件。因此,為了解決這個問題,QTP忽略物件描述,並專注於智慧識別機制來識別物件。
QTP的智慧識別機制使用兩種型別的屬性來識別物件:基本篩選器屬性和可選篩選器屬性。
基本篩選器屬性 - 特定測試物件類的屬性,其值在原始物件的實際含義發生變化時會發生變化。
可選篩選器屬性 - 它也有助於識別特定類的物件,這些物件的屬性經常變化,但如果它們不再適用,可以忽略它。
您可以使用“生成指令碼”功能在源計算機上建立指令碼的ZIP檔案,然後使用QTP的目的地計算機匯入。要使用此功能,請轉到“物件識別測試設定工具/選項”選項卡。
不可以!我們不能在一臺機器上開啟兩個QTP例項來工作,但是QTP本身可以在被測應用程式(AUT)的多個例項上工作,並同時處理多個IE瀏覽器視窗。
將xls匯入QTP的語法:
DataTable.ImportSheet "..\..\TestData\Input.xls",1,dtGlobalSheet Syntax to export xls into QTP, DataTable.ExportSheet "..\..\Results\Output.xls","Global"
SetToProperty是QTP的標準方法,用於臨時更改儲存在物件庫中的物件的屬性。
基於Web的應用程式的標準計時延遲為60秒,可以透過測試設定對話方塊更改。
在UFT中將資料寫入Excel檔案的正確語法是:
filepath = “C:\Bugs\Reports.xlsx” Set objExcel = CreateObject(“Excel.Application”) objExcel.Visible = True Set Wb= objExcel.Workbooks.Open (filepath) Wb.worksheets(1).Cells(1,1).Value = “TutorialPoints” read value from Excel file
TSR代表測試共享儲存庫,用於共享物件儲存庫。
按照以下步驟生成TSR檔案:
首先,開啟物件儲存庫,然後轉到檔案選單。接下來,選擇匯出本地物件選項。UFT將開啟一個對話方塊來儲存.tsr檔案;給出要儲存檔案的所需路徑。
上述步驟將在UFT中生成.tsr檔案。
它是QTP提供的標準內建工具,用於將操作轉換為業務流程元件。
UFT提供三種方法來獲取Web表的行數。
使用Web表物件的屬性 - rowcount
使用GetROProperty
使用HTML DOM + UFT
將資料表匯出到Excel有兩種方法:
DataTable.Export (“C:\export.xls”)
DataTable.ExportSheet “C:\mysheet.xls” (如果不存在Excel檔案,則建立新檔案)
QTP支援三種類型的環境變數:
內建(只讀)
使用者定義的內部(只讀)
使用者定義的外部(讀/寫)
以下語法用於檢索環境變數
Environment.Value( "name") = "TutorialPoints" OR Environment.Value( "OS") = " TutorialPoints"
其中
Environment.Value ("name") 該語法將返回名稱為TutorialPoints
Environment.Value ("OS") 這將返回您的系統作業系統
在點陣圖檢查點中,使用者可以比較兩個完整的點陣圖以及從畫素到畫素的點陣圖的一部分。
在影像檢查點中,使用者只能檢查影像屬性值。
qfl檔案和vbs檔案的區別:
qfl是快速測試函式庫檔案,而vbs是微軟的VBScript檔案。
qfl是非可執行檔案,而vbs是可執行檔案。
要在UFT中使用qfl檔案,必須從測試設定中關聯qfl檔案,而vbs檔案只能與“執行檔案”語句關聯。
在UFT中,寫入文字檔案的正確語法是:
Content = “TutorialPointsTutorials” Set Fo = createobject ("Scripting.FilesystemObject") Set f = Fo.openTextFile ("c:\myFile.txt",8,true) ' open in write mode f.Write (contents) f.Close Set f = nothing
函式庫的副檔名是“.QFL”。
QTP不會根據本地資料表執行迭代,它根據全域性資料表執行迭代,因此測試只會在全域性資料表上迭代一次。
以下程式碼幫助從Outlook傳送電子郵件:
Set Outlook = CreateObject ("Outlook.Application") Dim Message 'As Outlook.MailItem Set Message = Outlook.CreateItem (olMailItem) With Message .Subject = Subject .HTMLBody = TextBody .Recipients.Add (aTo) Const olOriginator = 0 .Send End With
按照以下程式碼從資料庫獲取資料:
Set db = createobject (“ADODB.Connection”) db.Open “Provider = Microsoft.Jet.OLEDB.4.0;Data Source=G:\guru99\vb6\admission_project.mdb; Persist Security Info = False” Set rst = createobject (“ADODB.Recordset”) rst.Open “select*from Course”, db, 3 id = rst. RecordCount For i = 0 to id-1 Print rst.field (0) & rst.fields (1) & rst.fields (2) & rst.fields (3) rst.Movenext Next
當物件庫增長時,由於其大小增加,效能開始下降,UFT在從物件庫識別物件方面面臨問題,描述性程式設計(也稱為程式化描述)提供了一種識別物件和對物件庫中不存在的物件執行操作的方法。描述性程式設計包括屬性名稱和屬性值。它對非常動態的應用程式物件執行操作,並在執行時對應用程式執行操作,而無需瞭解物件的唯一屬性。
有時,QTP無法識別已被視為應用程式標準物件的應用程式物件。QTP將這些物件視為虛擬物件並將其對映到標準類,這些物件可以是按鈕或複選框。在執行時,QTP複製使用者對虛擬物件的動作,並且測試結果將虛擬物件顯示為標準類物件。
下一步是什麼?
接下來您可以回顧一下您之前完成的與主題相關的作業,並確保您可以自信地談論它們。如果您是應屆畢業生,面試官不會期望您回答非常複雜的問題,而是要鞏固您的基礎概念。
其次,如果您無法回答一些問題,這並不重要,重要的是,無論您回答了什麼,都必須充滿自信地回答。所以在面試過程中要自信。我們在tutorialspoint祝您面試順利,並祝您未來一切順利。乾杯! :-)