关键字驱动测试框架

本文详细介绍了自动化测试框架的第三个阶段,即关键字驱动测试框架阶段,通过使用QuickTest等工具实现关键字驱动的测试流程。包括录制过程、测试步骤组成、关键字驱动测试的核心——关键字表,以及如何通过代码实现关键字驱动测试的实例。文章还提供了调试好的关键字驱动框架的代码,包括读取单元格数据、获取关键字驱动表中的行数、构造父对象、子对象和事件对象的函数。

自动化测试框架发展的第三个阶段是关键字驱动测试框架阶段,它是当前比较流行的一种框架之一,并且现在的自动化测试工具QuickTest已经将关键字驱动框架融入到工具中。在录制过程中自动化测试工具会将对象及操作属性保存到对象库中。

录制完成后的每个测试步骤主要有三个元素组成:

  1.          Item:指对象名,可以是一个窗口、按钮等;
  2.          Operation:指要执行的动作,如Select、Click等;
  3.          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自动化测试与框架模型设计》书中的关键字驱动测试框架

第三代通信技术(3G)的应用已在全球范围内逐步展开,各大设备供应商正积极研发能提供更高性能的新一代网管系统来满足市场需求。网管系统是一个庞大复杂的通信管理系统,由于客户的功能需求以及网管系统自身技术的更新等原因使网管系统的版本不断更新,网管系统最终系统测试的工作量会很大。因此需要引入自动化测试来提高测试效率保证测试质量。 本文首先分析了当前网管系统测试现状以及对自动化测试的需求。在这样的前提条件下,论文采用了关键字驱动脚本技术,同时吸取了当前流行的自动化测试框架中一些先进的思想,提出了一个适合网管系统测试的自动化测试框架。然后论文对该框架测试流程进行详细的描述,在此框架的基础上进行系统的总体设计,并完成系统主要模块的设计与实现。本文最终实现了一个基于关键字驱动的自动化测试平台APK(Automated test Platform based on Keywords)。 在APK的实现过程中采用基于C/S的网络框架,该网络框架可以实现多用户定制测试任务并完成分布式自动化测试。在APK系统框架中对关键字进行了重新的定义,关键字不再是目前流行的框架中所定义的原子动作,而是一个用于实现一项测试规程的原子动作序列,同时该框架将结果验证环节放到关键字内部去实现。接口设计方面APK提供了一个外部接口用来整合网管系统中现有的业务测试工具,同时为了满足日后功能扩展的需要APK还预留了一个扩展接口。 APK可以应用于Java应用程序的GUI(Graphical User Interface)自动化测试,同时结合外部接口调用外部工具还可以完成较复杂的业务自动化测试。目前APK已经应用于网管系统的回归测试、边界值测试和大话务量环境数据的配置中,并已经取得了显著的效果,达到了预期的目标。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Testingba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值