QQ羣522720170,無商業廣告,每日干貨電子書+視頻分享
荔枝FM手機客戶端搜索“挨踢脫口秀”即可訂閱我們
視頻彙總首頁:http://edu.51cto.com/lecturer/index/user_id-4626073.html
1概述
QTP是quicktest Professional的簡稱,是一種自動測試工具。使用QTP的目的是想用它來執行重複的手動測試,主要是用於迴歸測試和測試同一軟件的新版本。因此你在測試前要考慮好如何對應用程序進行測試,例如要測試那些功能、操作步驟、輸入數據和期望的輸出數據等。目前已改名爲UFT。
2軟件特點
1)QTP是一個側重於功能的迴歸自動化測試工具;提供了很多插件,如:.NET的,Java的,SAP的,Terminal Emulator的等等,分別用於各自類型的產品測試。默認提供Web,ActiveX和VB。
2)QTP支持的腳本語言是VBScript,這對於測試人員來說,感覺要“舒服”得多(如相比SilkTest採用C語言)。VBScript畢竟是一種鬆散的、非嚴格的、普及面很廣的語言。
3)QTP支持錄製和回放的功能。錄製產生的腳本,可以拿來作爲自己編寫腳本的template。錄製時,還支持一種lower level 功能,這個對於QTP不容易識別出來的對象有用,不過它是使用座標來標識的,對於座標位置頻繁變動的對象,採用這種方式不可行。另外,QTP的編輯器支持兩種視圖:Keyword模式和Expert模式。Keyword模式想法是好的,提供一個 描述近似於原始測試用例的、跟代碼無關的視圖(我基本很少用,除了查看、管理當前test中各個action的完整流程),而Expert就是代碼視圖,一般編寫腳本都在這個區域。
4)一個有用的工具:Object Spy,可以用來查看Run-time object和Test object屬性和方法。
5)QTP通過三類屬性來識別對象:a)Mandatory; b)Assitive; c)Ordinal identifiers。大部分情況下,通過對象的一些特定屬性值就可以識別對象(類型a)。這些屬性可以通過Tools->Object Identification 定義。
6)Object Repository(OR)是QTP存儲對象的地方。測試腳本運行後,QTP根據測試腳本代碼,從這個對象庫中查找相應對象。每個Action可以對應有一個或者多個OR,也可以設置某個OR爲 sharable的,這樣可以供其他Action使用。注意,使用QTP錄製功能時,默認將被測對象放在local OR中,可以通過 Resources->Object Respository,選擇Local查看。
7)說到QTP的要點,不得不說Action。Action是QTP組織測試用例的具體形式,擁有自己的DataTable和Object Repository,支持Input和output參數。Action可以設置爲share類型的,這樣可以被其他test中的Action調用(注意:QTP是不支持在一個test中調用另外一個test的,只有通過sharable action來調用)。
8)如3)所述,一個test中,多個action的流程組織,只有通過Keyword視圖查看和刪除,在Expert視圖中沒有辦法看到。
9)調用Action可以通過菜單Insert->Call to *** 來實現。QTP提供三種類型的調用方式:a)call to new Action,在當前test中創建一個新的Action;b)call to Copy of Action;c)call to existing action,調用一個re-usable action,如果這個re-usable action來自另外一個test,將以只讀的方式插入到當前test中。
10)QTP提供excel 形式的數據表格DataTable,可以用來存放測試數據或參數。DataTable有兩種類型:global 和local。QTP爲DataTable提供了許多方法供存取數據,在對測試代碼進行參數化的時候,這些方法非常有用。
11)環境變量(Environment Variables)。在一個test中,環境變量可以被當前test中所有action共享。環境變量也有兩種類型:build in 和user defined。用戶自定義的環境變量可以指向一個XML文件,這樣可以實現在衆多test之間共享變量。
12)QTP可以引用外部的VBS代碼庫,通過Settings-》Resource加入,也可以ExecuteFile命令在代碼中直接執行。這種VBS庫可以爲所有action和test共享。
13)QTP默認爲每個test提供一個測試結果,包括Passed,Failed,Done,Warning和information幾種狀態類型,可以進行對結果Filter。但是,只能爲每個test產生一個testing result,不能爲多個testing產生一個總的testing result.
14)最新版的QTP加入了更多的功能,比如多腳本編輯調試、PDF檢查點、持續集成系統、手機測試等。
3基礎知識
3.1QTP工具使用
3.1.1建議學習路徑
瞭解QTP以及各個選項->錄製回放與腳本增強->優化腳本結構同時熟悉函數->學習vbs腳本語言->拆分程序與數據->創建自定義報告->編寫簡單的自動化框架->不斷優化
3.1.2QTP常用函數
1, 獲取對話框相應的文字: GetVisible Text
2, 查找相應的字符串: instr (1,查找目標字符串,所查找的字符串)
3, 隨機數的獲取: Randomnumber.Value() 或cstr(int(Rnd*10)+1)
4, 等待函數: Wait(秒數)
5, 獲取數組下標: UBound (數組名)
6, 拆分數組: Split(MyString, ",", -1, 1)
7, 可執行步驟: OptionalStep
8, 報告信息: Reporter.ReportEvent 3, "Save Step", "Out of cycle!"
9, 判斷對話框是否存在: .exist
10,事件過濾函數:Reporter.Filter=過濾條件(0,1,2,3),0代表顯示所有的error和warning,1,顯示error,2,顯示waining,3,任何error和warning都不顯示。
11,循環函數:do … loop until,for…to… then next,while.
12,數據表格:DataTable,向外賦值,
Dim aa = DataTable.value(“CellingName”,”ActionName”).
13,獲得對象屬性的三種方法
GetTOProperty,GetTOProperties,GetROProperty,GetTOProperty獲得程序中對象當前的屬性,GetTOProperties獲得當前屬性所有集合,GetROProperty獲得的是錄製時對象所獲得的屬性。
14,檢查點方法check和輸出指定屬性值output。
15,函數Descrīption,可以獲得某頁面同標籤的屬性進行操作。
16,函數nagative可以隨便跳轉頁面到指定的URL。
17,函數Object可以獲得當前頁面同屬性的控件。
18,函數Focus可以讓控件獲得焦點,函數Blur則是失去焦點,click單擊,dbclick雙擊。
19,函數setAttribute可以設置控件屬性,getAttribute可以獲得屬性。
3.2VBS語言基礎編程
百度一下都有,選個基礎的教材開始,邊學邊練,這個很重要,然後在選進階的教程。
這裏要記住,不要光看vbs,而是要結合qtp用。
基本語法
l常用的一些命令函數
l對字符的一些處理
l對文本文件的讀、寫、創建、刪除等操作
l對Excel文件的讀取和寫入操作
l對XML文件的讀取
l調用Dll
4高級應用
4.1正則表達式
正則表達式,也叫做通配符,我們在計算機上搜
索一個文件,或者編寫一條SQL語句時,經常會用
到正則表達式。
l在QuickTest中也可以使用正則表達式,用法與我們上面提到的正則表達式類似。通過在QuickTest測試腳本中加入正則表達式,可以使我們的測試腳本更靈活,適應性更好
l一個正則表達式就是一個文本字符串,其中除了常規字符外,還包含了一些通配字符,比如 “*”、“^”、“[]”、“?”、“+”等等
4.2描述性編程
4.3虛擬對象的使用
在使用錄製模式無法正常識別控件的情況下,使用虛擬對象。首先Mark好虛擬對象,然後,
在錄製的時候,只要點到你設置的虛擬對象的邊界內,QTP就會識別這個虛擬對象,並把該對象記到對象庫中去
4.4test banch runner的使用
目的是用於批次運行多個Action
運行目錄:開始-程序-QuicktestProfessional-Tools-Test banch runner。 使用add逐個添加action
4.5對字符的處理
l lCStr(expression)
l lInStr([start, ]string1, string2[, compare]) 查找字符在字符串中出現的位置
l lLeft(string, length) 從字符串中截取指定長度的字符
l lLen(string| varname) 取得字符長度
l lSplit(expression[, delimiter[, count[,compare]]]) 將字符串根據拆分標記進行拆分
4.6常用的一些命令函數
l lSystemUtil.Run “C:\123.txt“ 啓動應用程序
l lTime 當前系統時間
l lSystemUtil.CloseProcessByName “notepad”關閉相關進程
l lNow() 當前日期和時間
4.7對文本文件的操作
4.7.1讀文件
Set fso= CreateObject("Scripting.FileSystemObject")
Set f= fso.OpenTextFile(“C:\123.txt”, 1)
f.readline//讀一行
f.readall//讀整個文本文件內容
f.read(3) //從文件中讀三個字符
f.close//關閉文件
4.7.2寫文件
Set fso= CreateObject("Scripting.FileSystemObject")
Set f= fso.OpenTextFile(“C:\123.txt”, 2)
f.Write “test”
f.close//關閉文件
4.7.3創建文件
Set fso= CreateObject("Scripting.FileSystemObject”)
fso.CreateTextFile(“C:\123.txt”)
4.7.4刪除文件
Set fso= CreateObject("Scripting.FileSystemObject")
fso.DeleteFile(“C:\123.txt”)
4.8對excel的操作
4.8.1創建excel
'******************************************************************************
' 函數說明:創建一個excel文件;
' 參數說明:
' (1)ExcelPath:Excel文件存儲路徑;
' (1)ExcelPathName:要創建的Excel文件路徑+名稱;
' 調用方法:
' QTP_CreateExcel "D:\Temp","D:\Temp\ExcelExamples.xlsx"
'
' ******************************************************************************
Function QTP_CreateExcel(ExcelPath,ExcelPathName)
Dim ExcelApp 'As Excel.Application
Dim excelBook 'As Excel.workbook
Dim fso 'As scrīpting.FileSystemObject
' Dim excelSheet
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Workbooks.Add
'ExcelApp.Visible = True
Set excelSheet = ExcelApp.ActiveSheet
Set excelBook = ExcelApp.ActiveWorkbook
Set fso = CreateObject("scripting.FileSystemObject")
On Error Resume Next
' fso.CreateFolder "D:\Temp"
' fso.DeleteFile "D:\Temp\ExcelExamples.xlsx"
' excelBook.SaveAs "D:\Temp\ExcelExamples.xlsx"
fso.CreateFolder ExcelPath
fso.DeleteFile ExcelPathName
excelBook.SaveAs ExcelPathName
ExcelApp.Quit
Set ExcelApp = Nothing
Set fso = Nothing
Err = 0
On Error GoTo 0
End Function
4.8.2讀取excel文件
'========================================
' 函數說明:往EXCEL表中寫數據;
' 參數說明:
' (1)sExcelName:EXCEL文件名;
' (2)sSheetName:Sheet表名
' (3)x: 行
' (4)y: 列
' (5)Content:內容
' 調用方法:
' QTP_WriteExcel "D:\2.xlsx","sheet1",x,y,"abcde"
'========================================
Function QTP_WriteExcel(sExcelName,SheetNum,x,y,Content)
Set xlsobj=createobject("excel.application")
Set xlsbook=xlsobj.Workbooks.Open(sExcelName)
Set xlssheet=xlsbook.Sheets(SheetNum)
xlssheet.cells(x,y)=Content
xlsbook.Save
xlsbook.Close
End Function
4.8.3寫excel文件
'========================================
' 函數說明:往EXCEL表中寫數據;
' 參數說明:
' (1)sExcelName:EXCEL文件名;
' (2)sSheetName:Sheet表名
' (3)x: 行
' (4)y: 列
' (5)Content:內容
' 調用方法:
' QTP_WriteExcel "D:\2.xlsx","sheet1",x,y,"abcde"
'========================================
Function QTP_WriteExcel(sExcelName,SheetNum,x,y,Content)
Set xlsobj=createobject("excel.application")
Set xlsbook=xlsobj.Workbooks.Open(sExcelName)
Set xlssheet=xlsbook.Sheets(SheetNum)
xlssheet.cells(x,y)=Content
xlsbook.Save
xlsbook.Close
End Function