QTP是基於GUI界面的自動化測試工具,用於系統的功能測試。
QTP錄制的是鼠標和鍵盤的消息。QTP錄制回放時基於windows操作系統的消息機制。QTP在錄制時監聽應用程序的消息,監聽到之后把消息放到容器里,而另外的監聽程序則從容器中取出容器中的消息,並調用對用的API處理函數。QTP截取的是用戶對應用程序的操作,即錄制的是消息。對於C/S應用程序,在回放時QTP根據對象的句柄(handle)和腳本內容,調用API函數;對於B/S應用程序,在回放時基於DOM(documentobject model)來解析。
具體來說,
QTP的錄制原理:根據用戶在應用程序界面上的操作,QTP采用ObjectIdentification Tools工具對被操作的對象進行識別,采用反編譯的原理看其屬於哪個插件類,從而進一步識別其屬於什么控件類,然后QTP把對應的控件類實例化一個對象,並把獲取的應用程序的一部分屬性值(足以識別對象?)賦給新建的對象,並添加到對象庫里即TO對象,而把用戶對對象的操作添加到腳本里面。
QTP的回放原理:QTP 根據腳本中記錄下來的對象操作的順序進行回放。QTP從腳本中讀取到該對象,並根據對象的層次和名稱到對象庫中尋找相同名稱的測試庫對象,在測試庫找到相應的對象,獲得對象的屬性,根據對象庫中對象的屬性,在運行的應用程序中進行匹配,尋找運行時對象,找到后根據腳本中記錄的對該對象執行的動作和參數值。
QTP是Quick Test Professional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執行重復的自動化測試,主要是用於回歸測試和測試同一軟件的新版本。(百度百科)
2.測試用例網站
測試網站地址:http://newtours.demoaut.com
本文參考自:QTP教程(入門到高級)
軟件下載:鏈接: http://pan.baidu.com/s/1qYCZ6SO 密碼: wuks
本文測試案例(解壓到qtp安裝目錄的Tests下):http://download.csdn.net/detail/sinat_31719925/9864314
2.1注冊與登錄
按提示輸入以下訂票數據,點擊“CONTINUE”按鈕打開“Book a Flight”頁面:
查看訂票數據,並選擇“BACK TO HOME”回到Mercury Tours網站首頁或者退出。
2.2測試腳本
2.2.1錄制/執行測試腳本
當瀏覽網站或使用應用程序時,QuickTest會紀錄你的操作步驟,並產生測試腳本。當停止錄制后,會看到QuickTest在Keyword View中以表格的方式顯示測試腳本的操作步驟。錄制前要關閉與測試不相關的程序窗口。
開啟QuickTest,在“Add-in Manager”窗口中選擇“Web”選項。(這句話可以略過: 檢查“Help>About QuickTest Professional”查看目前加載了那些add-ins。如果沒有加載“Web”,那么必須關閉並重新啟動QuickTest Professional,然后在“Add-in Manager”窗口中選擇“Web”。)
選中“Automation>Record and Run Settings”或者點選工具欄上的“Record”按鈕。打開“Record and Run Settings”對話窗口
填寫網站的地址和打開網站的瀏覽器:
切換到“Windows Application” 標簽頁,我們選擇第二個單選按鈕。因為我們只是對Mercury Tours 范例網站進行操作,不涉及到Windows程序
點擊record,自動登錄Mercury Tours 網站,如上文所示預訂從 New York 到 San Francisco 的機票。最后,我們就錄制了一個完整的測試腳本—預定從紐約到舊金山的機票。
2.2.2分析錄制的測試腳本
在錄制過程中,QuickTest會在測試腳本管理窗口(也叫Tree View窗口)中產生對每一個操作的相應記錄。
當錄制結束后,QuickTest也就記錄下了測試過程中的所有操作。測試腳本管理窗口顯示的內容如下圖所示:

如果要將所有畫面儲存在測試結果中,在“Save step screen capture to results”選項中選擇“Always”選項。一般情況下我們選擇“On error”或“On error and warning”表示在回放測試過程中出現問題時,才保存圖象信息。在這里我們為了更多的展示QuickTest的功能,所以選擇使用“Always”選項。
在工具條上點擊“Run”按鈕,打開“Run”對話框:
詢問要將本次的測試運行結果保存到何處。選擇“New Run results folder”單選按鈕,設定好存放路徑(在這使用預設的測試結果名稱)。
在測試執行完成后,QuickTest會自動顯示測試結果窗口,如下圖所示:
在樹視圖中展開“Test1 Iteration 1(Row 1)>Action1 Summary>Welcome Mercury Tours>Find a Flight: Mercury>”,選擇“ "fromPost":Select "New York" ”。
3建立檢查點
掌握了如何錄制、執行測試腳本以及查看測試結果。只是實現了測試執行的自動化,沒有實現測試驗證的自動化,所以這並不是真正的自動化測試。在這一章我們學習如何在測試腳本中設置檢查點,以驗證執行結果的真確性。
“檢查點”是將指定屬性的當前值與該屬性的期望值進行比較的驗證點。這能夠確定網站或應用程序是否正常運行。當添加檢查點時, QuickTest 會將檢查點添加到關鍵字視圖中的當前行並在專家視圖中添加一條“檢查檢查點”語句。運行測試或組件時, QuickTest 會將檢查點的期望結果與當前結果進行比較。如果結果不匹配,檢查點就會失敗。可以在“測試結果”窗口中查看檢查點的結果
QuickTest檢查點種類:
下面在測試腳本上建立檢查點:
將上面的test1腳本另存為“test1_checkpoint”測試腳本。我們在Checkpoint測試腳本中創建4個檢查點,分別是:對象檢查、網頁檢查、文字檢查以及表格檢查。

如上圖選擇“Insert Standard Checkpoint”選型,顯示“Object Selection-Checkpoint Properties”對話窗口:
確保當前的焦點定位在“WebEdit: passFirst0”上,點擊“OK”按鈕,彈出如下的窗口:
對於每一個檢查點,QuickTest會使用預設的屬性作為檢查點的屬性,下表說明這些預設的屬性:
我們接受預設的設定值,點擊“OK”。QuickTest會在選取的步驟之前建立一個標准檢查點。

選擇最上面的“Page:Book a Flight: Mercury”,並點擊“OK”按鈕確認,將打開“Page Checkpoint Properties”對話框。

當執行測試時,QuickTest會檢查網頁的鏈接與圖片的數量,以及加載的時間,如同對話窗口上方所顯示的那樣。 QuickTest頁檢查每一個鏈接的URL以及每一個圖片的原始文件是否存在。
接受默認設定,點擊“OK”。QuickTest會在Book a Flight: Mercury 網頁上加一個網頁檢查。在工具欄上點擊“Save”保存腳本。
3.3文字檢查
建立一個文字檢查點,檢查在“Flight Confirmation”網頁中是否出現“New York”?
展開“Action1>Welcome: Mercury Tours”選擇“Flight Confirmation: Mercury”頁面,在“Active Screen”會顯示相應的頁面
在“Active Screen”中選擇在“Departing”下方的“New York”。對選取的文字按下鼠標右鍵,並選取“Insert Text Checkpoint”打開“Text Checkpoint Properties”對話窗口。
當“Checked Text”出現在下拉式清單中時,在“Constant”字段顯示的就是選取的文字。這也就是QuickTest在執行測試腳本時所要檢查的文字。
點擊“OK”關閉窗口。 QuickTest會在測試腳本上加上一個文字檢查點,這個文字檢查點會出現在“Flight Confirmation: Mercury”網頁下方
3.4表格檢查
展開“Action1>Welcome: Mercury Tours”選擇“Book a Flight: Mercury”頁面,在“Active Screen”會顯示相應的頁面。
建立表格檢查點 在“Active Screen”中,在第一個航班的價錢上“270”上點擊鼠標右鍵,選擇“Insert Standard Checkpoint”打開“Object Selection-Checkpoint Properties”對話窗口。
剛打開時選取的是“WebElement:270”,這時要選擇上一層的WebTable對象,在這個例子中選擇“WebTable: New York to San Francisco”。點擊“OK”打開“Table Checkpoint Properties”對話窗口,顯示整個表格的內容:
預設每一個字段都會被選擇,表示所有字段都會檢查,可以對某個字段雙擊,取消檢查字段,或者選擇整個欄和列,執行選取或取消的動作。 在每個字段的列標題上雙擊,取消勾選的圖標,然后再270字段處雙擊,這樣執行時QuickTest只會對這個字段值作檢查。
點擊“OK”關閉對話框。 QuickTest會在測試腳本中,“Book a Flight: Mercury”頁面下加上一個表格檢查點
在工具欄上點擊“Save”保存腳本
3.5.1 驗證標准檢查點
在test results tree中展開“Book a Flight: Mercury >passFirst0”,並選擇“Checkpoint"passFirst0"”。 在“Details”窗口可以看到標准檢查點的詳細結果,如檢查了哪些屬性,以及屬性的值。
3.5.2驗證網頁檢查點
在test results tree中展開“Checkpoint Iteration 1 (Row 1) > Action1 Summary >Welcome: Mercury Tours >Book a Flight: Mercury”,並選擇“Checkpoint"Book a Flight: Mercury"”。 在右邊的“Details”窗口中,可以看到網頁檢查點的詳細信息,例如網頁檢查點檢查了哪些項目。
3.5.3驗證文字檢查點
在test results tree中展開“Checkpoint Iteration 1 (Row 1) > Action1 Summary >Welcome: Mercury Tours > Flight Confirmation: Mercury”,並選擇“Checkpoint"New York"”。顯示如界面,因為文字檢查點的實際值與預期值相同,所以檢查點的結果為Passed。
3.5.4驗證表格檢查點
在test results tree中展開“Book a Flight: Mercury >New York to San Francisco ”,並選擇“Checkpoint"New York to San Francisco"”。 在“Details”窗口可以看到表格的詳細結果。也可以在下方看到整個表格的內容,被檢查的字段以黑色的粗體文字顯示,沒有檢查的字段以灰色文字顯示。如下圖所示:
4.參數化
4.1參數化對象和檢查點中的值
4.2參數的種類

設置要參數化的屬性,選擇“Parameter”選擇項,這樣就可以用參數值來取代“New York”這個常數了,在參數中選擇“Data Table”選項,這樣這個參數就可以從QuickTest的Data Table中取得,將參數的名字改為“departure”。
點擊“OK”確認。參數化以后可以看到樹視圖中的變化,在參數之前,這個測試步驟顯示“foomPost …Select… New York”,現在,這個步驟變成了“foomPost …Select… Data Table("departure",dtGlobalSheet)”。而且當點擊Value字段時,Value字段會顯示如圖所示:
QuickTest會在Data Table中新增departure參數字段,並且插入了一行New York的值,New York 會成為測試腳本執行使用的第一個值。
在departure字段中加入出發點資料,使QuickTest可以使用這些資料執行腳本,在departure字段的第二行,第三行分別輸入:Portland 、Seattle
4.4 修正受到參數化影響的檢查點
當測試步驟被參數化以后,可能會影響到其他的測試步驟也要參數化,例如我們為了驗證 “Flight Confirmation”網頁中是否出現“New York ”,(文字檢查點),在網頁上添加了一個文字檢查點。那么,就要對出發地的文字檢查點做參數化,以符合對出發地點參數化的預期效果。
4.5執行並分析使用參數的測試腳本

在樹視圖中,展開“Parameter Iteration2 >Action1 Summary >Welcome Mercury Tours>Flight Confirmation: Mercury”,選擇“Checkpoint"New York"”,顯示如下圖:
在檢查點“Details”窗口中,顯示Portland為預期記過同時也是實際的值,所以文字檢查點為通過。同時也可以看到在下方的“Application”窗口中,顯示機票的出發地點也是Portland。
5.輸出值
通過 QuickTest 可以檢索測試或組件中的值,並將這些值作為輸出值存儲。此后,就可以檢索這些值,並在運行會話的不同階段使用該值作為輸入.
5.1輸出值類型
將輸出值步驟添加到測試或組件時,首先選擇要輸出的值的類別,例如,屬性值、文本值或 XML 元素值。然后,就可以確定要輸出的值以及每個值的存儲位置。在QuickTest中可以創建以下幾個類別的輸出值:
1. 標准輸出值
2.文本和文本區輸出值
可以使用文本輸出值來輸出屏幕或網頁中顯示的文本字符串
3.數據庫輸出值
基於在數據庫上定義的查詢的結果(結果集)來輸出數據庫單元格內容的值。可以從結果集的全部內容中創建輸出值,也可以從其中某一部分創建輸出值。
4. XML輸出值
5.2存儲輸出值
定義輸出值時,可以指定運行會話期間在哪里以及如何存儲每個值。可以將值輸出到:
1.測試、操作或組件參數
2. 運行時數據表
3. 環境變量
5.3在腳本中建立輸出值

在“Text Output Value Properties”對話窗口中點擊“Modify”按鈕,打開“Output Options”對話窗口,在名字字段顯示Select_a_Flight_MercuryOutput_Text_out,將其改成depart_flight_price ,接受其它默認值,點擊“OK”確認,QuickTest會在Data Table中加入depart_flight_price字段。
5.4修正表格檢查點的預期值

5.5執行並分析使用輸出值的測試腳本
執行測試腳本:點擊工具欄上的“Run”按鈕
在執行結果窗口中,點擊樹視圖中的“Run-Time-Data”,可以在表格中看到執行測試時使用的輸出值,在depart_flight_price字段中顯示了不同的機票價錢。
在結果窗口中點擊“Test output Summary”可以看到,12個檢測點都通過了驗證,運行結果均為Passed。