QTP入門——玩玩小飛機


1.什么是QTP?

百度百科中對QTP是這么介紹的:

——”QTP是QuickTest Professional的簡稱,是一種自動化測試工具。使用QTP的目的是想用它來執行重復的自動化測試,主要是用於回歸測試和測試統一軟件的新版本。因此在測試前要考慮好如何對應用程序進行測試,例如要測試哪些功能、操作步驟、輸入數據和期望的輸出數據等。“

——”它讓用戶可以直接錄制屏幕上的操作流程,自動生成功能測試或者回歸測試用例。專業的測試者也可以通過提供的內置腳本和調試環境來取得對測試和對象屬性的完全控制……“

2.QTP測試流程?

QTP進行功能測試的測試流程:【制定測試計划】-【創建測試腳本】-【增強測試腳本】-【運行測試】-【分析測試結果】

接下來我將以QTP自帶的小飛機航班程序(Flight)作為演示,詳細講解測試流程。QTP(professional 9.2)啟動界面如下圖所示:image

圖1 QTP(professional 9.2)啟動界面

下圖為QTP自帶Flight的小飛機程序,登陸名任意不少於4位數的字符,登陸密碼為mercury。

                                                        imageimage

圖2 QTP自帶Flight程序及啟動界面

(1)制定測試計划

驗證小飛機程序的基本功能,航班的預定,圖片驗證,文本驗證等功能。

(2)創建測試腳本

錄制腳本功能包括:登陸小飛機訂票應用程序、輸入訂票時間(大於系統時間否則訂票失敗)、起始/到達地點、航班、姓名、席別和數量,訂票成功后關閉應用程序。

操作步驟:

Automation-Record and run Setting-Windows Application

image

+添加Application Details-OK(默認即可):讓QTP自動啟動小飛機程序

image

點擊record錄制腳本,操作時切勿有多余的步驟(如QQ推送了一個新聞彈窗,嘗試去關閉),你的任何操作將會錄制到腳本中去,這樣你將不得不在錄制好的腳本中刪除多余的操作或者重新錄制一遍。(錄制結束后切記點擊stop終止錄制,不然也會錄制下多余的操作)

錄制后的腳本查看,切換到Expert View可查看錄制好的腳本:

  1: Dialog("Login").WinEdit("Agent Name:").Set "test"
  2: Dialog("Login").WinEdit("Password:").SetSecure "56824e518de1a75562ac09f826423a3795c28ce0"
  3: Dialog("Login").WinButton("OK").Click
  4: Window("Flight Reservation").ActiveX("MaskEdBox").Type "111116"
  5: Window("Flight Reservation").WinComboBox("Fly From:").Select "London"
  6: Window("Flight Reservation").WinComboBox("Fly To:").Select "Frankfurt"
  7: Window("Flight Reservation").WinButton("FLIGHT").Click
  8: Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
  9: Window("Flight Reservation").WinEdit("Name:").Set "test"
 10: Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1
 11: Window("Flight Reservation").WinEdit("Tickets:").Set "3"
 12: Window("Flight Reservation").WinRadioButton("First").Set
 13: Window("Flight Reservation").WinButton("Insert Order").Click
 14: Window("Flight Reservation").Close
 15: Dialog("Login_2").WinButton("Cancel").Click

點擊run運行剛才錄制的腳本,則會自動化驗證基本的訂票功能,效果如下:

111

(3)增強測試腳本

運行以上腳本后,發現雖然能夠成功但passed次數仍是0,這是因為沒加驗證點,接下來我們來進一步強化測試腳本。

image

強化要求:(#1)參數化(username(登陸用戶名)、Start_1(航班出發地)、End_1(航班目的地))(#2)加入文本驗證、加入圖片驗證(#3)設置判斷語句

可以看出,參數化的目的是為了完成多次測試,使用多個不同的用戶名,不同的航班出發地和目的地。這樣就必須多次啟動小飛機。

在一開始的腳本錄制中,我們采用的是通過QTP引導小飛機啟動,然而這樣只能啟動一次,達不到測試目的,所以必須通過系統來啟動小飛機程序。怎么啟動?

a.先刪除QTP引導;b.(非錄制狀態下)在錄制好的腳本login條目drop菜單下選擇Step Generator,並按下圖設置好(在value中添加小飛機程序exe所在目錄:C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe)image

並將該啟動步驟run移動到合適位置:

image

(#1)參數化

image

然后在錄制好的腳本中對Agent Name、Fly from、Fly to中的value值<#>,從而實現參數化。

image

參數化后運行,發現能正常運行多次了:

image

(#2)加入文本驗證和圖片驗證

驗證用戶名是否有test3,驗證登陸界面是否有小飛機圖片。

啟動小飛機,調整合適的位置,點擊record,insert-check point-text check point/ bitmap checkpoint。然后stop並退出小飛機程序(注意:測試case在運行的時候,不能有多余的小飛機程序在運行,否則會報錯),然后調整添加的驗證點到合適的位置,顯然,這兩個驗證點是在小飛機程序啟動之后,登陸點擊OK之前。

(#3)設置判斷語句

要求:將用戶名參數賦值給x,設置判斷語句,當x=test2時,則點擊"cancel"按鈕,並重新開始用下一個用戶名進行登錄,否則繼續運行腳本。

設置判斷語句,直接修改腳本即可,在腳本中添加判斷語句,按照要求,則腳本如下:

  1: SystemUtil.Run "C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe"
  2: Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
  3: Dialog("Login").WinEdit("Password:").SetSecure "56838ed991838e58c724bf18afee6d6ae0f587fb"
  4: Dialog("Login").Static("Static").Check CheckPoint("Static")
  5: Dialog("Login").WinEdit("Agent Name:").Check CheckPoint("Agent Name:")
  6: Dim x
  7: x = DataTable("username",dtGlobalSheet)
  8: If(x="test2") Then
  9: Dialog("Login").WinButton("Cancel").Click
 10: ExitAction()
 11: End If
 12: Dialog("Login").WinButton("OK").Click
 13: Window("Flight Reservation").ActiveX("MaskEdBox").Type "111116"
 14: Window("Flight Reservation").WinComboBox("Fly From:").Select DataTable("Start_1", dtGlobalSheet)
 15: Window("Flight Reservation").WinComboBox("Fly To:").Select DataTable("End_1", dtGlobalSheet)
 16: Window("Flight Reservation").WinButton("FLIGHT").Click
 17: Window("Flight Reservation").Dialog("Flights Table").WinButton("OK").Click
 18: Window("Flight Reservation").WinEdit("Name:").Set "test"
 19: Window("Flight Reservation").WinEdit("Tickets:").Set "3"
 20: Window("Flight Reservation").WinRadioButton("First").Set
 21: Window("Flight Reservation").WinButton("Insert Order").Click
 22: Window("Flight Reservation").Close

注意 line 10:QTP的退出函數:

1、ExitAction() 退出當前操作,無論其本地(操作)循環屬性是什么。
2、ExitActionIteration() 退出操作的當前循環。
3、ExitComponent()退出當前組件並繼續業務流程測試中的下一個組件,無論組件的循環設置是什么。
4、ExitComponentIteration() 退出當前組件循環並繼續該組件的下一次循環,或者,如果當前組件沒有其他循環,則繼續業務流程測試中的下一個組件。
5、ExitGlobalIteration() 退出當前的全局循環,並使用全局數據表的下一行開始下一次循環。
6、ExitRun() 退出測試,無論其全局循環屬性是什么。
7、ExitTest() 退出整個業務流程測試,無論運行時循環設置是什么。
8、ExitTestIteration() 退出業務流程測試的當前循環並繼續下一次循環,或者如果沒有其他運行時參數循環,則退出測試運行。

3.QTP腳本的編寫

剛才我們主要通過record錄制腳本的。如果要手動編寫腳本,除了掌握一點基本的語法外,還要學會添加對象庫,不然手寫的腳本不能生效,運行時會提示不能找到控件。

Resourse-Object Repository

啟動小飛機,點擊add+,點擊小飛機界面后彈窗選擇All object types。

imageimage

添加完成后如下圖:

image

其他對象庫,重復以上步驟添加即可。

參考文獻:

1.QTP的退出函數:http://blog.sina.com.cn/s/blog_670b6d8801016e1r.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM