qtp基础

来源:互联网 发布:flash for mac 编辑:程序博客网 时间:2024/05/22 05:10

HP QuickTest Professional 支持功能测试和回归测试自动化,用于每个主要软件应用程序和环境。此解决方案使用关键字驱动的测试概念,简化了测试创建和维护过程。它使测试人员能够使用专业的捕获技术直接从应用程序屏幕中捕获流程来构建测试案例。测试专家还可通过集成的脚本和调试环境完全访问内在测试和对象属性。
一、安装
HP [url]http://welcome.hp.com/country/us/en/welcome.html#Connect[/url]注册一个用户,网站内搜索QuickTest Professional下载了QTP10.0 DVD版,安装过程很简单,一直按照安装向导完成即可。

安装后运行桌面快捷键QuickTest Professional,启动时将看见 自带注册插件ActiveX, VisualBasic, Web,其余的额外购买插件Java, DotNet, PeopleSoft, VisualAge, Siebel, Oracle,flex,(自带插件听说还有Database, StdWindows, TEA, XML,慢慢了解)。

先从默认的开始学习QTP学习指南初级
我们使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。因此在测试前要考虑好如何对应用程序进行测试,例如要测试那些功能、操作步骤、输入数据和期望的输出数据等。强烈建议按照QTTutorial.pdf文件来认认真真、从头到尾地执行一遍,包括录制脚本、分析脚本、增加check pointSplit Action等。这会减少在学习QTP过程中的不少困惑和疑虑。这篇文档对如何使用QTP写的非常详细,是QTP初学者的经典教材。我就是看了这边文档后才对QTP的整个测试流程有了一个初步的认识。

二、安装后部分目录说明
├─addins——
插件包
├─bin——
可执行文件
│  ├─DefaultTextBoxStyles
├─CodeSamplesPlus——
一些示例代码
│ ─dat——
备份和配置信息
├─help——
帮助中心
├─recovery——
恢复文件存放在这儿(断电恢复设置)
├─samples——
示例程序
└─Tests——
安装路径的注册信息

三、界面分析
快捷键:F1帮助;F2录制;F4回放;F5运行;Ctrl+R打开对象库;F10 Step Over;F11 Step into

Keyword View
Expert View两个视图:
Data Table
Action Screeen
1.Data Table
中的值只在运行时显示,运行后不显示,可以在Results中查看
2.
GlobalAction之分;
3.Active Screen——
可以在此方便的田间checkpoint;添加对象到对象库;进行Step Generator

这系列视频学习完发现目前用的最多的是
Tools—Options—Restore Layout

Automation—Record and Run Settings

File—Testings

四、Qtp基本操作与回放
录制:
1.
windows的订票系统为例
2.
录制登录退出操作
3.
点击Tools-Options-General-Restore Layout(回归一下)-确定(注意一下界面的变化);
4.
设置Automation-Record Actions-windows Applications-“+”(选择程序)-确定;
5.record
这里用户名统一用mercury
回放:
录制完成后为了验证录制是否正确,要进行脚本的回放
查看报告:
回放结束后在Automation-Results查看结果报告
可以在tools-Option-Run标签中是否勾选ViewResults when run session ends来设定Results在什么时候显示
调试:
1.
在要调试的步骤前端插入breakpoint
2.View-Debug Viewer
3.debug-Step over
step into
4.Run to step
:从脚本开始跑到你指定的Step停止
5.Debug from step
:从当前指定的步骤开始跑到结尾

五、Qtp的三种录制方式:
Normal recording
默认的正常录制模式。他通过识别程序中的对象来代贴以前屏幕坐标的形式。但是正常模式并不能保证程序中所有的对象,因此还需要其他两种模式来补充。
Analog Recording
Low Level Recording

五、增强help步骤
(
)加入判断语句增强Help步骤
1)
加入If语句进行判断,如果出现指定的窗口,点确定按钮
   Dialog("Login").WinButton("Help").Click
If Dialog("Login").Dialog("text:=Flight Reservations").Exist Then
  Dialog("Login").Dialog ("Flight Reservations").WinButton ("
确定").Click
End If

2)Exist
方法(help里面详细地解释)
(
)help单独设成一个Action
1)
名为Action_Help——Insert/Call to New Action
2)
设成可以复用的——Action_Help右键选择Action Properties勾选下面Reusable action
3)
?为什么不能正常运行——先打开对象库,Resources/Object Repository…把原有对象保存(导出出去F:/QTP/LoginDemo/test.tsp),然后进行关联,Resources/Associate Repositorries 选择F:/QTP/LoginDemo/test.tsr
(
)关联对象:当在一个Actoin中想使用另一个Action中的对象时,需要进行对象关联

(增加点击Help步骤
选中Agent Name点击右键(Login
Insert step-Step Generator
PS
:全部操作都在Keyword View下完成)

六、Checkpoint:检查点
(
)标准检查点:
所有操作我们均在Action Screeen中完成;Cheak “Login 登陆框
——
Action Screen 中点击右键Insert Standard Checkpoint…确定后Run
(
)图像检查点
检查登陆界面飞机图片
(
)位图检查点
检查登陆界面飞机图片
    ——
Action Screen 中点击右键Insert Bitmap Checkpoint…确定后Run
(
)文本检查点
检查Agent Name
——
Action Screen 中点击右键,最后一行
(
)Output Value
输出登陆界面飞机图片的长度和宽度,放在Data Table.
——
Action Screen 中点击右键Insert Output Value后选择高度和宽度【以上文件保存为订票系统(手动添加Help)】
(
)可访问性检查点
利用LR带的Web网站来进行实验
——
新建一个Test
(
)页面检查点
检查页面中的链接,图片等信息【以上文件保存为页面检查点(Veb Tours
(
)参数化【文件为:RandomNumber
(
)录制试验程序
1)
录制预订机票的流程
——
先回归一下(Tools-)然后设置(Record and Settings中选择第一项即Record and run test …);
——
打开Flight 即可按计划录制
2)
对预定机票的数据进行参数化
(
)使用DataTable进行参数化
1)
FlyFromFlyTo进行参数化——选中后旁边的#字图标,左键选中参数化,在DataTable中输入计划的地点;
2)
回放
3)
发现问题,如何解决?
——
及通过RandomNumber解决。
(
十一)RandomNumber
经过分析,我们可以用RandomNumber这中参数化来解决上述问题。
(
十二)环境变量的使用(new
1)
录制简单的登录和关闭
2)
Agent NamePassword定义变量
3)File/Test Settings/Environment(Variable type:
选择User-defined)/”+”自定义NameAgentNameValuemercury;在添加一个NamePasswordValuemercury
(环境变量可以导出导入)
(
十三)Data Driver
——
功能可以自动检测脚本中可能需要进行参数化的变量
Tools——Data Driver
里面列出可能要进行参数化

七、Tools下的工具介绍
请利用好这些工具
Password Encoder
:密码转移器
Test Batch Runner
:批处理的运行
Silent Test Runner
:(LoadRunner如果要调用QTP的脚本,需要在QTP中创建一个事务)打开以前录制的Environment登录脚本,插入事务(选中Action 然后菜单Insert/Start transaction输入login;选中OK然后菜单Insert/End transaction 确定,注意脚本的变化)——保存,关闭QTP,然后用此工具跑一下
QuickTest Script Editor
:方便脚本的编写
Test Results Deletion Tool
:管理和删除报告
HP Micro Player
:播放器

八、qtp插件分析
(
)概述:QTP支持广泛的应用程序类型,包括VBJAVA.NET等,对于不同的应用程序类型,要使用不同的插件来进行测试。
(
)QTP插件介绍:
1)QTP
在使用不同插件时需要为插件提供不同的License
2)
Help——About QuickTest Professional中查看当前安装和加载的插件;
3)
要使用哪个插件就加载哪个,不要加载不用的插件,这样可以提高运行效率;
4)
启动QTP,弹出对话框,选在自己要安装的插件,(这里ActiveX——登录后在Help菜单最后一项
(
)内部插件与外部插件:
1)
内部插件就是安装完QTP自带的ActionXVBWeb
2)
外部插件是可以通过外部的安装来扩展、从插件。比如.NETJava的插件;
3)
可以到HP网站或其他的网站去下载需要的插件;
(
)插件管理
1)QTP——Add-in Manager

2)
Tools—OptionsGeneral下设置;
3)
插件关联可以在File——Setting中设置;
4)
附加介绍在QTP常用选项,Tools——OptionsGeneralTools——View OptionsFile——Setting
(
)插件与检查点类型的关系

九、recovery Scenarios
什么是recovery Scenarios:在脚本运行过程中,可能会出现一些非预期的事件、错误、程序崩溃等情况,阻止脚本继续执行下去,测试脚本可能会一直暂停执行,直到某些界面操作被执行才能恢复。为了处理这类错误,QTP创建了recovery Scenarios,并关联到某个测试脚本。这些恢复场景会被相应的事件触发而执行。
什么时候使用recovery Scenariosrecovery Scenarios的设计目的是用于处理那些不可预见的事件,例如:可以定义一个recovery Scenario用于处理打印错误,这样,当运行脚本过程中打印机出现错误时,recovery Scenarios就会指导QTP执行某个操作。
对于那些可以预见的错误,要用If语句来处理不要依赖于recovery Scenario
定义recovery Scenarios:可以通过recovery Scenario向导来创建和定义recovery ScenariosResources——Recovery Scenario Manager,进入后New scenario—下一步—Select Trigger Event选择
关联recovery Scenario到测试脚本:在要关联的脚本中选File—Setting进行添加

十、虚拟对象
(
)什么是虚拟对象
可以让QTP学会认识某些他不能识别的控件,方法是把这些控件所在的区域定义为虚拟对象。使用虚拟对象技术,可以对那些通常不能被QTP所识别的对象进行录制和运行测试。
如果程序中包含哪些行为类似标准对象的对象,但是不被QTP说识别,这可以把这些对象定义为虚拟对象,并且映射到某类标准对象。QTP在测试过程中就会对这些虚拟对象模拟执行用户操作。
(
)定义虚拟对象
1)
演示登录程序(LoadRunner演示网站)
录制的login是一个图片不是button。如果要变成button,打开Tools—Virtual Objects—New Virtual Object…选择button—下一步
2)
登录按钮是图片,用虚拟对象技术使它能为button
(
)虚拟对象的使用和管理:
1)
创建虚拟对象后,可通过选择菜单Tools—Virtual Objects—Virtual Object Manager来进行管理。
2)
创建虚拟对象后,在录制脚本时,QTP就会以虚拟对象对应的控件形式来录制测试对象。

十一、专家视图测试脚本开发
(
)专家视图(Expert View)与关键字视图(Keyword View)的对应关系
在关键字视图中,QTP用基于图标的表格来展示测试步骤和测试对象的层次,顺序关系,而在专家视图中,则是以VBS的语法或语句来表达的。
(
)编辑脚本的方法:
1)
输入测试对象的顶层对象的控件类型名;
2)
输入一个测试对象后,就可以范围其下的属性、方法,以及下级对象
3)
完成测试对象的选择后,可输入“.”选择针对该测试对象做出的操作。
(
)启动自动化VBS语法识别
QTP的专家视图中,支持自动化的VBS语法识别和完成,例如:在脚本编辑器中输入if,然后按空格,QTP将自动化完成下面的代码
if then
end if
Tools——View Options
,勾选住“Auto-Expand VBScript syntax”
(
)Utility对象
1)
使用Extern对象加载DLL。我们可以使用它来调用丰富的windows api函数,能够编写更为强大和灵活的测试代码;
'
申明FindWindow方法,调用User32.dll中的FindWindows函数
Extern.Declare micHwnd,"FindWindows","user32.dll","FindWindowA",micString,micString
'
申明SetWindow Text方法
Extern.Declare micLong,"SetWindowText","user32.dll","SetWindowTextA",micHwnd,micString
'
获取记事本的窗口句柄
hwnd = Extern.FindWindows("Notepad",vbNullString)
'hwnd = Extern.FindWindow("Notepad",vbNullString)
If hwnd=0 Then
        MsgBox"
未能找到记事本窗口!"
End If
'
改变记事本窗口的标题
res = Extern.SetWindowText(hwnd,"Hello World! ")
2)SystemUtil
对象;
打开一个计算器。
SystemUtil.Run"calc"
3)Reporter
对象可用于发送信息到测试结果文件,这对于测试结果分析比较有用。可以使用Reporter对象的reporetEvent方法来向测试结果写入一个事件。
(
)Environment对象的使用
1)
通过Environment对象可以读取和设置环境变量。环境变量包括built-inuser-defined两种。Bulit-in是内建的环境变量,user-defined是用户自定义的环境变量。可以设置和读取user-defined,但只能读取built-in
2)
通常会在以下两个方面使用到环境变量:
希望访问QTP的系统数据,例如:测试的名称,操作系统名称等
希望存储数据,以备不同的action或函数使用
(
)MsgboxPrint
Msbox
Print的区别在于,Print显示的信息窗口是非模式的,而Msgbox显示的是模式窗口,会暂停脚本的执行,直到消息窗口被确认关闭会继续执行后续的测试脚本。

十二、qtp描述性编程
(
)引言
1)QTP
的描述性编程能够摆脱测试对象库的限制,编写出更为复杂、适应力更强的测试脚本。
2)
录制方式的测试脚本创建是最简单和快捷的测试脚本开发方式,但是,它带来的问题也是明显的,就是依赖测试对象库,测试脚本中使用的对象都必须是测试对象库中的对象。
(
)什么时候使用描述性编程
在测试过程中,有些界面元素师动态出现或动态变化的,在录制的时候并没有添加到对象库中。
(
)描述性编程的运行原理
用描述性编程编写的测试脚本在运行时,QTP会使用测试脚本中给的对象描述来查找对象,查找的位置不是对象库,而是与测试程序运行时QTP为其创建的临时对象版本进行匹配。
(
)描述性编程的使用方法
一种是直接描述的方法
TestObject(“PropertyName1:=PropertyValue1”,”…”)
另一种是使用Description对象的方法
(
)描述性编程的特点
  
如果在测试对象层次结构的某一点开始使用了描述性编程,则该测试对象层次结构下的后续测试对象都要使用描述性编程的方式来描述对象(后续性强迫性)

十三、qtp测试脚本编写规范
(
)代码编写规范
1)
对象、变量和函数的命名规范
2)
注释规范
3)
代码行缩进规范(常用Tab键来控制)
(
)常量命名规范
1)
VBS中用const来声明常量,所以常量的命名应使用con作为前缀,进行驼峰命名
2)conMyValue
(
)变量命名规范
使用变量类型的缩写作为前缀,如Boolean类型的blnFounddouble类型的dblMoney
(
)对象命名规范
QTP代码编程中,可能会碰见到各种各样的控件对象,我们应该用控件的缩写或前缀加以标识。如:check box—chkReadOnly,image—imglcontext box—txtLastName
(
)代码注释规范
1)
所有函数,过程、子过程都应该有一个简明的注释描述开始,注释不应该详细地描述所要实现的功能或实现的方法细节,因为这些细节可能经常改变。应该把细节描述到代码行注释里;
2)
传入的参数应该被描述清楚其意图、范围等,返回值,引用参数、在函数或过程中改变的变量都应该有相应的简单描述
3)
对于函数或过程的头注释应该尽可能包括以下几个方面:目的、假设、影响、输入、返回值
4)
每个重要的变量都应该包含注释
(
)对象库的管理
QTP
的对象与实际的应用程序中的测试对象有一一映射的关系,通过调整对象库的层次关系、给对象进行新的命名,都可以有效提高测试脚本的可读性。