標籤:des http 使用 os io 檔案 資料 for
? QTP的準系統介紹
HP QuickTest Professional 支援功能測試和迴歸測試自己主動化,用於每一個主要軟體應用程式和環境。此解決方式使用keyword驅動的測試概念,簡化了測試建立和維護過程。它使測試人員可以使用專業的捕獲技術直接從應用程式螢幕中捕獲流程來構建測試案例。測試專家還可通過整合的指令碼和調試環境全然訪問內在測試和對象屬性
? QTP架構結構
以Test為測試執行單位,每一個Test包括若干類型Action。以Action為最
小單位映射物件程式庫,多個Action之間能夠共用統一
物件程式庫,Action內的Step能夠包括使用者錄製操作或者
函數庫內對Function的調用。
QTP自己主動化測試的基本過程
? 錄製測試指令碼
? 編輯測試指令碼
? 調試測試指令碼
? 執行測試指令碼
? 分析測試結果
錄製測試指令碼
1.外掛程式載入設定管理
啟動QTP,將顯示所看到的外掛程式管理介面
依據所測試應用程式控制項類型選擇須要載入的外掛程式,比如,QTP內建的例子應用程式“Flight”是標準的windows程式,裡面的部分控制項是ActiveX控制項,因此,在測試時選擇載入ActiveX控制項
2.錄製和測試執行設定
選擇了要載入的外掛程式後,點擊OKbutton,進入QTP的主介面,例如以所看到的,包含測試視圖(keyword視圖和專家試圖),Data Table/Information介面、Active Screen介面。
選擇菜單“Automation|Record and Run Settings”出現錄製和執行設定介面
指定須要錄製的應用程式,錄製執行設定介面例如以,在選擇windows應用程式的錄製和執行介面中,能夠選擇兩種錄製方式,一種是”Record and run test on any open Windows-bassed”,這樣的方式能夠錄製不論什麼在系統中出現的程式;第二種是 ”Record and run only on” 這樣的方式錄製有針對的應用程式,避免錄一些無關緊要的多餘的介面,該種方式有3種設定的使用方法。
(1).選擇“Application opened by QuickTest”選項,則僅錄製和執行由QTP調用的程式
(2).選擇“Application opened via the deskpot”選項,則僅錄製開始菜單,案頭捷徑啟動的程式
(3).選擇“Application specified below”則可錄製和執行加入?到列表中的應用程式。單擊 button,加入?要錄製程式的可執行檔的路徑。
比如,我們要錄製“Flight”例子程式,我們就選擇例子程式路徑“C:\Program Files\Mercury Interactive\QuickTest Professional\samples\flight\app\flight4a.exe”
3.錄製第一個自己主動化測試指令碼
設定成僅錄製”Flight“程式後,選擇菜單”Automation|Record“,或工具列上的 或按快速鍵F3,QTP將自己主動啟動指定檔案夾
下的”Flight“程式,例如以,輸入 username和password“MERCURY”,點擊OK
button,錄製“Flight”程式的登入過程
按“stop”扭或F4建停止錄製,將得到錄製結果
keyword視圖:
專家視圖:
在鍵字視圖中,可看到錄製的測試的操作步驟,每一個測試步驟及介面操作都在“Active Screen”介面顯示出來。
這樣就完畢了一個最主要的測試用例的編寫,對於錄製的測試指令碼,須要進一步的改動整理,這些工作可在keyword視圖進行,也可在專家視圖中進行。
編輯測試指令碼
1.在keyword視圖中編輯測試指令碼
(1).在keyword視圖為測試步驟加入?凝視
方法是:在keyword視圖的列頭單擊滑鼠右鍵,選擇“comment”,則會多出一列,名為“comment”,在這一列中能夠為每一個測試步驟加入?凝視。
2).在keyword視圖加入?測試資訊的輸出
假設想在某個測試步驟完畢後,輸入對應的測試資訊到測試報告中,則可在該測試步驟單擊右鍵,選擇“Insert Step|Report”,出現所看到的介面。
如在啟用“login”介面前報告“開始登陸”
在介面的“Status”下拉框中,選擇測試
報告的狀態(能夠是Done、Passed、
Failed、Warning這四種狀體中的一種)
在“name”中輸入資訊摘要,在“Details”
中輸入具體資訊
加入?報告後
(3).插入檢查點
可檢查類型包含中全部Checkpoint中子功能表項,包含文字,位元影像,XML,資料庫(資料表)等檢查點。每一個檢查點的運行結果都會在Automation-Result中存在對應的記錄,有些檢查點須要在錄製狀態下才可以使用。
也可通過在測試步驟上單擊滑鼠右鍵選擇菜單”Insert Standard Checkpoint“
比如我們檢查OKbutton的屬性,插入一個標準檢查點。
首先,定位到ok提交的步驟,單擊右鍵,
選擇菜單” Insert Standard
Checkpoint“,出現如右圖介面。
在介面中選擇須要檢查的屬性,比如,選擇
“Enableed”屬性,設定為ture,選擇“Text”
屬性,設定“OK”。
單擊“OK”button後,則能夠在keyword視圖看到
新加入?的檢查點步驟,例如以
(4).在keyword視圖中插入新的測試步驟
比如在輸入password前,我們需先點擊“help”button查看協助,這時我們就須要添?點擊“help”button的測試步驟。
首先定位到輸入username的步驟,然後單擊滑鼠右鍵,選擇“Insert Step|Step Generator”,則出現左圖介面,“Category”包含“Test Object”、“Utility Object”和“Function”,分別代表例如以下
含義:
Test Object:測試對象,即被測程式的界
面上的控制項元素。
Utility Object:工具對象,是QTP內建的
各種編寫測試指令碼,輔助建立測試邏輯的工
具類對象
Function:各種函數,包含庫函數、內建
函數,本地指令碼函數。
在這裡,我們選擇“Test Object”,然後單
擊“Object”下拉框旁邊的表徵圖button
出現選擇對象介面,如左圖,在介面中選擇“help”對象,然後單擊“OK”返回到“Step Generator”介面後,在“operation”的下拉框選擇“Click”,並把“Insert another Step”選項勾選上。
(假設在“Select Object for Step”介面的對象 列表中沒有“help”對象,能夠單擊介面中的手
型button,然後移動到Flight程式的“Login”界
面,從中選擇對象“help”button,則出現界
面,單擊“OK”button,把“help”button加入?到測試
對象列表中)
單擊“Insert”button,返回keyword視圖,可看到新的測試步驟已經加入?,
2.在專家視圖中編輯測試指令碼
“Expert View”是一個強大的VBscript的指令碼編輯器,在這裡,能夠直接編寫測試指令碼的代碼,適合熟悉VBscript語言,有較好編程技巧的自己主動化測試project師使用。
QTP提供的指令碼編輯器支援“文法感知”功能,比如,在代碼中輸入“Dialog(”Login“)後加點,則自己主動顯示一個下拉式清單,從中可選取”Login“測試對象所包括的全部屬性和方法,
調試測試指令碼
1.語法檢查
選擇菜單”Tools|Check Syntax“,或通過工具列選擇 button,或按快速鍵”CTRL+F7“對測試指令碼進行語法檢查,如語法檢查通過,則在”information“介面顯示提示資訊,例如以
假設語法檢查發現問題,則會在”information“介面列出具體的資訊,例如以
2.使用斷點
語法檢查通過後,能夠直接執行代碼,也能夠設定斷點對指令碼進行調試。能夠通過快速鍵”F9“,或單擊代碼所在行的邊框,或按工具列的 button設定斷點。
然後,按F5鍵或 button執行,執行過程將在斷點處停住,。這時候,能夠進行單步調試,能夠選擇“Debug|Step Over”,或快速鍵“F10”執行到下一行代碼,也能夠選擇“Debug|Step into”,或快速鍵“F11”進入程式碼中所調用的函數
然後,按F5鍵或run button執行,執行過程將在斷點處停住,。這時候,能夠進行單步調試,能夠選擇“Debug|Step Over”,或快速鍵“F10”執行到下一行代碼,也能夠選擇“Debug|Step into”,或快速鍵“F11”進入程式碼中所調用的函數。
調試查看器的使用
在調試過程中,可選擇菜單”view|Debug Viewer“顯示調試查看器,
就能夠看到測試對象屬性或變數的值
執行測試指令碼
1.執行整個測試,在進行語法檢查和調試都無誤後,能夠按F5鍵執行整個測試指令碼。在執行測試之前,能夠對執行做必要的設定,選擇菜單”Tools|Options“,出現介面。
“Run mode”執行模式可選normal
或fast
“View results when run
session end” 在執行結束後自
動開啟測試結果介面
“Allow other Mercury produncts
To run test”同意其它Mercury的
工具調用QTP
“save still image captures to
results”儲存精巧映像到結果中
2.執行部分測試
假設多個Action,則能夠定位到須要執行的Action,然後,選擇菜單“Automtion|Run Current Action”,來執行當前的的Action,有利於定位當前Action的問題
還有還有一種僅僅執行部分測試的方式,方法是選擇某個測試步驟,單擊右鍵,選擇菜單“Run From Step”,能夠從當前測試開始執行測試,也能夠選擇“Run to step”,從開始執行到當前所選的測試步驟
3.批量執行測試
能夠使用QTP內建的工具“Test Batch Runner”
來批量執行測試指令碼。需在
“Tools|Options”中,確保
“Allow other Mercury
products to run Test”選項
被勾選上。
通過開始菜單開啟
“Test Batch Runner”工具,,選擇
“Batch|Add”來加入?要執行的測試指令碼,
選擇“Batch|Run”來批量執行列表中全部
的測試指令碼
分析測試結果
1.選擇測試結果的存放位置
在QTP中,執行測試指令碼,會出現對話方塊。
假設選擇”New run results folder“,能夠為本次測試選擇一個檔案夾用於儲存測試結果檔案;假設選擇”Temporary run results folder“,則QTP將執行測試結果放在預設資料夾中,而且覆蓋上次該檔案夾中的測試結果
2.查看概要測試結果
測試指令碼執行結束後,可在所看到的介面中查看概要的是結果資訊,包含測試的名稱,測試開始和結束時間,執行的迭代次數。通過的狀態等。
3.查看檢查點的結果
在測試結果的左邊表單中,用樹形結構展示了全部測試步驟,假設選擇節點Cheeckpoint ”OK“,則能夠看到的結果。
QTP指令碼開發
? keyword驅動測試
? 資料驅動測試
? QTP描寫敘述性編程
keyword驅動測試
1.什麼是keyword驅動測試方法
keyword驅動測試方法(Keyword-driven testing),也叫表格驅動測試方法。keyword驅動測試把測試指令碼的編程工作分離出去,讓那些沒有編程技巧的人也能開發自己主動化測試指令碼。
實現keyword驅動測試主要依賴自己主動化架構。通過自己主動化架構,僅須要測試人員開發表格和keyword,架構通過解釋表格資料和keyword來運行測試指令碼,驅動被測的應用程式。這能夠在QTP的keyword視圖中清晰的體現出來,比如,對windows計算機進行測試的一個測試用例可用所看到的測試表格來完畢。
2.編輯物件程式庫
使用QTP的keyword驅動架構進行自己主動化測試的第一步是收集測試對象的資訊,儲存到物件程式庫中(Object Repository)。
加入?測試對象的方法是選擇菜單“Resources|Object Repository”,開啟“Object Repository-All Object Repositories”對話方塊,如左。
以計算機程式為例,選菜單“Oboject|Add Object to local”跳到
開啟的計算機應用程式
介面,點擊滑鼠出現下
圖對話方塊,點擊OK按扭
加入?對象到物件程式庫中
加入?後的物件程式庫,這樣就能夠在keyword視圖中編輯測試步驟時,從下拉式清單中選擇測試對象
3.選擇測試對象
編輯好物件程式庫後,就能夠在keyword視圖的Item列選擇須要的測試對象,如左圖。
假設測試對象不在下拉式清單中,則可
以選擇下拉式清單中的“Object From
Repository”,從物件程式庫中選擇,
例如以所看到的。
4.選擇對象對應的操作
從物件程式庫中選取了測試對象後,則能夠在“Operation”列選擇其對應的操作,比如,button的單擊可選擇“click”,所看到的
5.設定測試邏輯
在keyword視圖中,相同支援測試邏輯的設定,比如條件推斷,迴圈等。
以下介紹一個For迴圈的測試邏輯。該測試邏輯實現迴圈點擊計算機的“=”button多次的效果。
(1).在keyword視圖,單擊滑鼠右鍵,選擇菜單“Insert Step|Loop statement|For…Next”,加入?一個迴圈的測試步驟,
(2).在“Value”列中,顯示了For迴圈語句“For Iterator=1 To 1 Step 1”,該語句僅迴圈1次,因此,須要改動當中“To”後面的值為“3”,讓迴圈體內的語句運行3次,
(3).然後,在該語句的後面加入?一個測試步驟,在Item列中選擇測試對象為“=”button,在Operation列中,選擇測試對象的操作為“Click”,所看到的
這樣就完畢了一個迴圈測試
邏輯的設定,在專家試圖中能夠
看到相應的指令碼代碼如右圖
資料驅動測試
自己主動化測試對錄製和編輯好的指令碼進行回放,這樣的線性自己主動化測試方式缺點是測試覆蓋面比較低。測試回放的僅僅是錄製時做出的介面操作,以及輸入的測試資料,或者是指令碼編輯時指定的介面操作和測試的資料。
怎樣讓測試指令碼運行時,不只限於測試錄製或編輯時的測試資料呢?資料驅動測試是解決問題的最佳方案。資料驅動測試把測試指令碼中的測試資料取出來,存到外部檔案或資料庫中,在測試過程中,從檔案動態讀入測試資料。
資料驅動測試的一般步驟
1.參數化測試步驟的資料
2.編輯資料表格
3.設定迭代次數
在QTP中,能夠使用多種方式來對測試指令碼進行參數化,包含資料表參數化(Data Table Parameters)、環境變數參數化(Environment Variable Parameters)、隨機數參數化(Random Number Parameters)等。
以下以QTP內建的“Flight”程式為例,介紹怎樣對測試指令碼進行參數化。
錄製的指令碼所看到的,以“目的地”的測試步驟的參數化過程為例,介紹在keyword視圖中對測試指令碼進行參數化。
(1).資料表參數化
首先,選擇“Fly to:”所在的測試步驟行,單擊“Value”列所在的單元格,例如以所看到的。
單擊單元格旁邊的“<#>”button,或按快速鍵
“CTRL+F11”,則出現如右圖介面
在這個介面中,選擇“Parameters”,在旁邊
的下拉框中選擇“Data Table”,在“name”中輸
入參數名,在“Location in Data Table”中
能夠選擇“Global sheet”,也能夠選擇
“Current Action sheet”,差別是參數儲存的
位置不同
通過菜單“View|Data Table”就能夠看見所看到的資料表,能夠看到,在flyto列有一個預設資料“London”,這是參數化前錄製指令碼中的常量。
把其它幾個資料也參數化後,所看到的
編輯資料表格
通過直接編輯表格加入?很多其它的測試資料,,QTP執行時,就會從所看到的的資料表格中提取資料來對測試過程中的各項輸入進行參數化
參數化檢查點
測試指令碼的最後一個步驟是檢查定票記錄中的航班終點是否正確,相同須要進行適當地參數化,方法是單擊檢查點所在測試步驟的“Value”列中的單元格,
單擊旁邊的 "對號"button,出現如右圖所看到的介面。在“Configure value”中選擇“Parameter”後,單擊“OK”button接收預設的設定,也可單擊旁邊的編輯button,在有圖所看到的的介面中,進行參數化的具體設定。我們能夠選擇建一個新的參
數,也能夠選擇“flyto”,由於檢查點所指
的航班終點得到的預期值應該與航班終
點的輸入資料一致,單擊OKbutton完畢參
數化
設定資料表格的迭代方式
把測試步驟和檢查點的參數化工作都完畢後,執行這個測試指令碼前,還要做一些必要的設定,選擇菜單“File|Settings”,出現測試設定介面
“Run one iterator only”是指僅執行一次,也就是說,即使Data Table中有多條資料,也僅執行一次;“Run on all rows”則是Data Table中全部資料都執行一次;選擇“Run from row…to…row…”則可進一步設定測試資料執行的範圍。
選擇“Run on all row”,執行後得到所看到的測試結果
(2).使用隨機數進行參數化
對於選擇航班這個測試步驟的參數化有所不同,由於航班資料表會尾隨所選的起點和終點發生變化,因此要通過隨機數來做特殊處理,例如以下代碼所看到的。
先通過訪問GetItemsCount屬性,擷取航班列表的行數,然後使用RandomNumber 隨機取當中一項,最後通過Select方法選擇航班
3).使用環境變數的參數化
以下以“Flight”的登入介面的“Agent Name”和“Password”為例介紹用環境變數參數化。
首先,選擇菜單“File|Settings”,出現介面。在這個介面中,切換
到“Environment”頁,在“Variable
type”中選擇“User-Defined”,然
後單擊旁邊的“+”button,在定
義環境變數的名和輸入的值。
反覆上面步驟,定義“Password”環境變數,得到例如以結果。
定義好環境變數並設定好其值之後,就能夠在測試步驟中使用該環境變數。
在keyword視圖中,定位到“AgentName”測試步驟的“Value”列,例如以,
單擊旁邊的“<#>”,出現所看到的介面。在介面中,選擇”Parameter”,並在下拉框中選擇“Environment”,在“Name”中選擇“AgentName”。反覆這個步驟,設定“輸入登入password”。
設定完後,結果,QTP在執行測試指令碼時,就會讀取測試步驟綁定的環境變數值,來執行對應的資料輸入動作。
QTP描寫敘述性編程
測試過程中,有些介面元素是動態出現或動態變化的,在錄製時,並沒有被加到測試庫中,怎樣讓這些在測試中動態出現的介面元素得到控制呢?QTP提供了描寫敘述性編程的方式來解決這些問題。
用描寫敘述性編程編寫的指令碼在執行時,QTP會使用測試指令碼中給出的對象描寫敘述來尋找對象,尋找的位置不是物件程式庫,而是與測試程式執行時QTP為其建立的暫時測試對象版本號碼進行匹配。
在QTP中,有兩種描寫敘述性編程的開發方式:一種是“直接描寫敘述”的方式,還有一種是使用“Description對象”的方式。以下我們就以NCP servers登入後的時間顯示表為例來說明,。
1.直接描寫敘述方式
對於前面的NCP servers時間顯示表,測試用例是要測試它的時間是否正確,它是隨時間不斷變化的,能夠通過描寫敘述性編程來解決,比如以下的指令碼:
Browser("深圳市元征軟體有限責任公司").Page("深圳市元征軟體有限責任公司").WebEdit("userName").Set "xiaoyu"
Browser("深圳市元征軟體有限責任公司").Page("深圳市元征軟體有限責任公司").WebEdit("password").SetSecure "4bda8fb406a2bf5fa628b028325fcebe031d"
wait 8
Browser("深圳市元征軟體有限責任公司").Page("深圳市元征軟體有限責任公司").Image("dl").Click
‘通過正則表達式匹配web表
text1 = "server時間.*"
str = Browser("深圳市元征軟體有限責任公司").Page("使用者管理 | 診斷服務增值商務服務管理後台").WebTable("name:=WebTable","Text:=" & text1).GetCellData (1,2)
Msgbox str
直接描寫敘述的文法格式例如以下:
TestObject(“PropertyName1:=PropertyValue1”,“…”,“PropertyNameN:=PropertyValueN”)
TestObject:測試對象的類型名,比如為WinButton,WebTable等
PropertyName:測試對象屬性名稱
PropertyValue:測試對象屬性值
2.使用Description對象
要使用Description對象,首先,用類似以下的代碼:
Set MyDescription = Description.Create()
text1 = "server時間.*“
‘為Description加入?描寫敘述屬性
MyDescription(”name”).value = “WebTable”
MyDescription(”Text”).value = text1
str = Browser("深圳市元征軟體有限責任公司").Page("使用者管理 | 診斷服務增值商務服務管理後台").WebTable(MyDescription).GetCellData (1,2)
在這裡,測試對象的屬性描寫敘述都封裝在了Description對象中,用Description對象執行個體來代表一個測試對象的屬性描寫敘述
QTP與QC的整合
通過QTP串連到QC後,能夠將測試指令碼儲存到QC的測試需求中,然後就能夠通過QC依據測試用例需求來執行QTP指令碼並自己主動記錄測試結果。方法例如以下:
1、安裝“QuickTest Add-in for Quality Center”外掛程式, QTP的安裝介面,選擇“Quality Center載入項”就能夠安裝QC的外掛程式
2、QTP串連到QC
能夠通過“File|Quality Center Connection”菜單,或 button開啟“File|Quality Center Connection”對話方塊,。
在“File|Quality Center Connection”對話方塊中,在Server URL中輸入QC地址,點擊“Connect”button
串連到QC後,出現左圖所看到的使用者登入對話方塊。與通過IE登入QC一樣,填入username,password點擊“Authenticate認證後,選擇域,project就能夠了。
登入後如右圖所看到的,點擊“Close”button,關閉對話方塊
3、QTP指令碼儲存到QC
串連到QC後,在儲存指令碼時,會出現“Quality Centera”button,如左圖。點擊該button,會跳到QC中的測試計劃檔案夾中,如右圖,選擇好檔案夾,改動好命名,儲存就可以。
4、QC中執行測試指令碼
(1)、在測試計劃中執行測試指令碼
在測試計劃中,選擇要執行的測試指令碼,然後選擇測試指令碼頁面,就能夠看到與QTP中一樣的專家視圖和keyword視圖的指令碼,。點擊 button,就會啟動QTP,並執行指令碼,但執行結束後不會儲存結果到QC中。事實上在測試計劃中一般都調試指令碼。
(2)、在測試實驗室執行QTP指令碼
在測試實驗室中,能夠執行一個測試指令碼,也能夠批量執行一個測試集中的多個指令碼。
建立一個包括8個測試指令碼的測試集後(建立測試集的方法參考QC的培訓文檔),。能夠選側一個測試指令碼,然後點擊執行button,執行單個測試項,也能夠直接點擊執行測試集button,執行測試集中的全部測試指令碼。
點擊執行測試集後會出現對話方塊,在該對話方塊中配置執行主機,配置後,點擊執行所有,測試指令碼就會依次被執行。
執行完後測試結果記錄到QC,,能夠點擊 "LAUNCH REPORT"查看測試報告。
NCP Service項目自己主動化測試
以NCP Service項目為例,示範QTP應用於WEB程式的自己主動化測試