关键字驱动测试框架
2011-08-14 17:52
411 查看
自动化测试框架发展的第三个阶段是关键字驱动测试框架阶段,它是当前比较流行的一种框架之一,并且现在的自动化测试工具QuickTest已经将关键字驱动框架融入到工具中。在录制过程中自动化测试工具会将对象及操作属性保存到对象库中。
录制完成后的每个测试步骤主要有三个元素组成:
Item:指对象名,可以是一个窗口、按钮等;
Operation:指要执行的动作,如Select、Click等;
Value:操作动作所输入的数据值;
以QuickTest自带的飞机订票系统为例,录制其登录过程,生成的代码如下:
Dialog("Login").WinEdit("Agent Name:").Set "test"
Dialog("Login").WinEdit("Password:").SetSecure "4d410e55b694bada39e235f9896e6eb810ba0e60"
Dialog("Login").WinButton("OK").Click
这是QuickTest以关键驱动的方式生成的代码,但也可以通过代码来实现关键字驱动测试。关键字驱动测试最核心的是关键字表格。以飞机订票系统的登录为例,其关键字表格见表19-1。
关键字驱动的思路是将关键字表中的对象及数据提取出来并构造成每个测试步骤,如步骤:
Dialog("Login").WinEdit("Agent Name:").Set "test"
需要将关键字表中的对象、属性及输入的数据读取出来,将它们构造同以上格式的代码步骤,通过这种方式来实现关键字驱动的功能。
下面是调试好的一个的关键字驱动的框架,代码如下:
—————————————————————————————————
''
' 工程名:关键字驱动
'
' 方法:
' GetExcelCells —————读取单元格中的值
' GetExcleSheetRowsCount—————获取关键字驱动表中的行数
' oParentObject—————构造父对象
' oChildObject—————构造子对象
' oEventObject —————对对象属性赋值
'
' 版本:v1.0
'作者:黄文高
'时间:2011-01-27
'———————————————————————————————————
Dim arrObjectName
Dim oParent
Dim oChild
Dim oClassName
Dim oValue
dim object
'———————————————————————————————————
''
' 函数名:GetExcelCells
'
' 参数:
' ExcelPath —————关键字驱动表的路径
' SheetName—————关键字驱动表的sheet名
' SheetRow—————单元格中的行
' SheetColumn—————单元格中的列
'
'时间:2011-01-27
'——————————————————————————————————
Function GetExcelCells(ExcelPath,SheetName,SheetRow,SheetColumn)
Set ExcelBook = CreateObject("Excel.Application")
Set ExcelSheet = CreateObject("Excel.Sheet")
Set myExcelBook = ExcelBook.WorkBooks.Open(ExcelPath)
Set myExcelSheet = myExcelBook.WorkSheets(SheetName)
SheetValue = myExcelSheet.cells(SheetRow,SheetColumn).value
GetExcelCells = SheetValue
ExcelBook.Quit
set ExcelSheet = Nothing
Set ExcelBook = Nothing
End Function
'——————————————————————————————————
''
' 函数名:GetExcleSheetRowsCount
'
' 参数:
' ExcelPath —————关键字驱动表的路径
' SheetName—————关键字驱动表的sheet名
'
'时间:2011-01-27
'——————————————————————————————————
Function GetExcleSheetRowsCount(ExcelPath,SheetName)
Set ExcelBook = CreateObject("Excel.Application")
Set ExcelSheet = CreateObject("Excel.Sheet")
Set myExcelBook = ExcelBook.WorkBooks.Open(ExcelPath)
Set myExcelSheet = myExcelBook.WorkSheets(SheetName)
GetExcleSheetRowsCount = myExcelSheet.UsedRange.Rows.Count
ExcelBook.Quit
set ExcelSheet = Nothing
Set ExcelBook = Nothing
End Function
'——————————————————————————————————
''
' 函数名:oParentObject
'
' 参数:
' parentobject —————关键字驱动表的Parent列
'
'时间:2011-01-27
'——————————————————————————————————
Function oParentObject(parentobject)
arrObjectName = array("text:=Login","regexpwndtitle:=Flight Reservation")
'在这里可以添加其它的一些对象类型,如Browser对象
'因为在关键字驱动表中可能存在多种对象
Select Case LCase(parentobject)
Case "window"
Set object = window(arrObjectName(1))
Case "dialog"
Set object = dialog(arrObjectName(0))
Case else
print "对象错误"
End Select
End Function
'——————————————————————————————————
''
' 函数名:oChildObject
'
' 参数:
' childobject —————关键字驱动表的Child列
' childobjectName —————关键字驱动表的Description列
'
'时间:2011-01-27
'————————————————————————————————
Function oChildObject(childobject,childobjectName)
If childobject <> "" Then
'在这里可以添加其它的一些子对象类型
'如WebList对象
Select Case LCase(childobject)
Case "winedit"
Set object = object.WinEdit(childobjectName)
Case "winbutton"
Set object = object.WinButton(childobjectName)
End Select
End If
End Function
'———————————————————————————————————
''
' 函数名:oEventObject
'
' 参数:
' eventobject —————关键字驱动表的Event列
' oValue —————关键字驱动表的Value列
'
'时间:2011-01-27
'——————————————————————————————————
Function oEventObject(eventobject,oValue)
If eventobject <> "" Then
'在这里可以添加其它的多种属性,如Type
Select Case LCase(eventobject)
Case "set"
object.set oValue
Case "click"
object.click
Case else
print "属性错误"
End Select
End If
End Function
systemutil.Run "D:\QuickTest Professional\samples\flight\app\flight4a.exe","","",""
For i =5 to GetExcleSheetRowsCount("C:\Data.xls","TestCase")
oParent = GetExcelCells("C:\Data.xls","TestCase",i,1)
oChild = GetExcelCells("C:\Data.xls","TestCase",i,2)
oClassName = GetExcelCells("C:\Data.xls","TestCase",i,3)
oEvent = GetExcelCells("C:\Data.xls","TestCase",i,4)
oValue = GetExcelCells("C:\Data.xls","TestCase",i,5)
oParentObject oParent
oChildObject oChild,oClassName
oEventObject oEvent,oValue
Next
摘自《QTP自动化测试与框架模型设计》书中的关键字驱动测试框架
录制完成后的每个测试步骤主要有三个元素组成:
Item:指对象名,可以是一个窗口、按钮等;
Operation:指要执行的动作,如Select、Click等;
Value:操作动作所输入的数据值;
以QuickTest自带的飞机订票系统为例,录制其登录过程,生成的代码如下:
Dialog("Login").WinEdit("Agent Name:").Set "test"
Dialog("Login").WinEdit("Password:").SetSecure "4d410e55b694bada39e235f9896e6eb810ba0e60"
Dialog("Login").WinButton("OK").Click
这是QuickTest以关键驱动的方式生成的代码,但也可以通过代码来实现关键字驱动测试。关键字驱动测试最核心的是关键字表格。以飞机订票系统的登录为例,其关键字表格见表19-1。
父对象 | 孩子对象 | 描述 | 事件 | 值 |
Dialog | | text:=Login | Launch | D:\QuickTest Professional\samples\flight\app\flight4a.exe |
Dialog | WinEdit | attached text:=Agent Name: | Set | test |
Dialog | WinEdit | attached text:=Password: | Set | mercury |
Dialog | WinButton | text:=ok | Click | |
Dialog("Login").WinEdit("Agent Name:").Set "test"
需要将关键字表中的对象、属性及输入的数据读取出来,将它们构造同以上格式的代码步骤,通过这种方式来实现关键字驱动的功能。
下面是调试好的一个的关键字驱动的框架,代码如下:
—————————————————————————————————
''
' 工程名:关键字驱动
'
' 方法:
' GetExcelCells —————读取单元格中的值
' GetExcleSheetRowsCount—————获取关键字驱动表中的行数
' oParentObject—————构造父对象
' oChildObject—————构造子对象
' oEventObject —————对对象属性赋值
'
' 版本:v1.0
'作者:黄文高
'时间:2011-01-27
'———————————————————————————————————
Dim arrObjectName
Dim oParent
Dim oChild
Dim oClassName
Dim oValue
dim object
'———————————————————————————————————
''
' 函数名:GetExcelCells
'
' 参数:
' ExcelPath —————关键字驱动表的路径
' SheetName—————关键字驱动表的sheet名
' SheetRow—————单元格中的行
' SheetColumn—————单元格中的列
'
'时间:2011-01-27
'——————————————————————————————————
Function GetExcelCells(ExcelPath,SheetName,SheetRow,SheetColumn)
Set ExcelBook = CreateObject("Excel.Application")
Set ExcelSheet = CreateObject("Excel.Sheet")
Set myExcelBook = ExcelBook.WorkBooks.Open(ExcelPath)
Set myExcelSheet = myExcelBook.WorkSheets(SheetName)
SheetValue = myExcelSheet.cells(SheetRow,SheetColumn).value
GetExcelCells = SheetValue
ExcelBook.Quit
set ExcelSheet = Nothing
Set ExcelBook = Nothing
End Function
'——————————————————————————————————
''
' 函数名:GetExcleSheetRowsCount
'
' 参数:
' ExcelPath —————关键字驱动表的路径
' SheetName—————关键字驱动表的sheet名
'
'时间:2011-01-27
'——————————————————————————————————
Function GetExcleSheetRowsCount(ExcelPath,SheetName)
Set ExcelBook = CreateObject("Excel.Application")
Set ExcelSheet = CreateObject("Excel.Sheet")
Set myExcelBook = ExcelBook.WorkBooks.Open(ExcelPath)
Set myExcelSheet = myExcelBook.WorkSheets(SheetName)
GetExcleSheetRowsCount = myExcelSheet.UsedRange.Rows.Count
ExcelBook.Quit
set ExcelSheet = Nothing
Set ExcelBook = Nothing
End Function
'——————————————————————————————————
''
' 函数名:oParentObject
'
' 参数:
' parentobject —————关键字驱动表的Parent列
'
'时间:2011-01-27
'——————————————————————————————————
Function oParentObject(parentobject)
arrObjectName = array("text:=Login","regexpwndtitle:=Flight Reservation")
'在这里可以添加其它的一些对象类型,如Browser对象
'因为在关键字驱动表中可能存在多种对象
Select Case LCase(parentobject)
Case "window"
Set object = window(arrObjectName(1))
Case "dialog"
Set object = dialog(arrObjectName(0))
Case else
print "对象错误"
End Select
End Function
'——————————————————————————————————
''
' 函数名:oChildObject
'
' 参数:
' childobject —————关键字驱动表的Child列
' childobjectName —————关键字驱动表的Description列
'
'时间:2011-01-27
'————————————————————————————————
Function oChildObject(childobject,childobjectName)
If childobject <> "" Then
'在这里可以添加其它的一些子对象类型
'如WebList对象
Select Case LCase(childobject)
Case "winedit"
Set object = object.WinEdit(childobjectName)
Case "winbutton"
Set object = object.WinButton(childobjectName)
End Select
End If
End Function
'———————————————————————————————————
''
' 函数名:oEventObject
'
' 参数:
' eventobject —————关键字驱动表的Event列
' oValue —————关键字驱动表的Value列
'
'时间:2011-01-27
'——————————————————————————————————
Function oEventObject(eventobject,oValue)
If eventobject <> "" Then
'在这里可以添加其它的多种属性,如Type
Select Case LCase(eventobject)
Case "set"
object.set oValue
Case "click"
object.click
Case else
print "属性错误"
End Select
End If
End Function
systemutil.Run "D:\QuickTest Professional\samples\flight\app\flight4a.exe","","",""
For i =5 to GetExcleSheetRowsCount("C:\Data.xls","TestCase")
oParent = GetExcelCells("C:\Data.xls","TestCase",i,1)
oChild = GetExcelCells("C:\Data.xls","TestCase",i,2)
oClassName = GetExcelCells("C:\Data.xls","TestCase",i,3)
oEvent = GetExcelCells("C:\Data.xls","TestCase",i,4)
oValue = GetExcelCells("C:\Data.xls","TestCase",i,5)
oParentObject oParent
oChildObject oChild,oClassName
oEventObject oEvent,oValue
Next
摘自《QTP自动化测试与框架模型设计》书中的关键字驱动测试框架
相关文章推荐
- [唐胡璐]QTP框架 - 关键字驱动测试框架之五 - Action管理
- [唐胡璐]QTP框架 - 关键字驱动测试框架之五 - 用例步骤管理
- [唐胡璐]QTP框架 - 关键字驱动测试框架之六 - Keyword管理
- 关键字驱动框架入门教程-11-测试结果报告
- [唐胡璐]QTP框架 - 关键字驱动测试框架之一 - 框架思想
- Selenium关键字驱动测试框架Demo(Java版)
- [唐胡璐]QTP框架 - 关键字驱动测试框架之七 - Settings管理
- 关键字驱动框架入门教程-13-项目打包交付给手工测试人员
- [唐胡璐]QTP框架 - 关键字驱动测试框架之二 - 框架目录管理
- 【自动化测试】关键字驱动测试框架
- RobotFrameWork(1) 关键字驱动测试框架
- [唐胡璐]QTP框架 - 关键字驱动测试框架之三 - 对象库管理
- [唐胡璐]QTP框架 - 关键字驱动测试框架之四 - 测试用例管理
- [唐胡璐]QTP框架 - 关键字驱动测试框架之八 - Test Run
- [唐胡璐]QTP框架 - 关键字驱动测试框架之九 - 测试报告
- 用TestComplete实现一个关键字驱动测试框架
- 如何用QTP采用关键字驱动测试框架来完成TechExcel DevTest产品的回归测试
- 关键字驱动框架入门教程-8-测试套件执行引擎
- 关键字驱动框架入门教程-10-异常处理
- Android平台下驱动的开发及测试框架概述(一)