QTP
1.1 QTP自动化测试的基本过程
使用QTP进行自动化测试的基本过程与使用其他自动化测试工具进行自动化功能测试的过程基本是一致的,一般包括以下5个步骤:
(1)录制测试脚本.利用QTP先进的对象识别、鼠标和键盘监控机制来录制测试脚本,测试人员只需要模拟用户的操作,像执行手工测试的测试步骤一样操作被测试应用程序的界面即可.
(2)编辑测试脚本.主要包括调整测试步骤、编辑测试逻辑、插入检查点(CheckPoint)、添加测试输出信息、添加注释等.
(3)调试测试脚本.利用“Check Syntax”功能检查测试脚本的语法错误,利用QTP脚本编辑界面的调试功能检查测试脚本逻辑的正确性. (4)运行测试脚本.可运行单个“Action”,也可批量运行测试脚本.
(5)分析测试结果.使用QTP的测试结果查看工具查看测试结果,检查测试运行过程的正确性.
2:你怎么用QTP
我们一般用QTP的录制功能来识别对象(会将对象的属性添加到对象库),在专家视图用VBS根据测试需要加强脚本功能和实现测试结果的输出,(当无法正常识别对象或运行中对象属性有变化是由描述性编程定义对象或在对象库中添加对象到本地对象)
3:录制的方式有三种:
标准模式:能识别对象的属性和方法
模拟模式:主要关注于鼠标移动和键盘的操作(类似于按键精灵的作用) 低级模式:所有windows对象被识别为winobject,
4:QTP对象识别机制
QTP里的对象有两个概念,一个是Test Object(简称TO),一个是Runtime Object(简称RO) TO就是仓库文件里定义的仓库对象,RO是被测试软件的实际对象
QTP识别对象,一般是要求先在对象仓库文件里定义仓库对象,里面存有对象的特征属性的值.然后在运行的时候,QTP会根据脚本里的对象名字,对象仓库里找到对应的仓库对象,接着根据仓库对象的特征属性描述,在被测试软件里搜索相匹配的实际对象,最后就可以对实际对象进行操作了
5:什么是参数化
将一个固定值用变值用代替,主要有三种数据来源:数据表,环境变量,随机数 当然我们在专家视图中用变量实现
6:检查点
实际上是指对对象的属性进行校验
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
分为: 标准检查点 网页检查点 图片检查点 图像检查点 文本检查点 数据库检查
XML检查点(Extensive Makeup Language)—可扩展标示语言
7:正则表达式(用于匹配,常用test方法)
'定义一个正则表达式[RegularExpressions]对象用于匹配,常用test方法 Set myReg= New RegExp
myReg.Pattern ="http://user.qzone.qq.com/\d*" myReg.IgnoreCase = True
'运用
'如果str中是http://user.qzone.qq.com/加数字则返回true str="http://user.qzone.qq.com/2343424" msgbox myReg.test(str)
'如果str中是http://user.qzone.qq.com/加数字则返回true
8:定义描述性对象
Set oDesc = Description.Create() oDesc("micclass").Value = "Link" 此句是定义了一种link对象
set all_link=Browser("Browser").Page("Page").Frame("Frame").ChildObjects(oDesc)
这样得到一个link对象的集合中,再利用.count属性遍历每个元素,得到每个link的URL地址
For i=0 to all_link.count -1
str=all_link(i).GetROProperty("url") Next
9:一个对话框高度或宽度或者两者都改变,运行时对象还能不能识别?
一般能识别,因为我们运行时,
QTP只利用了几个重要属性(text,nativeclass)去寻求对象, 所以不会去匹配高度和宽度,
但当我们修改对象库,将对象的高度或宽度添加进去, 且为一个定值时(因为也可以用正则表达式匹配数字), 运行时就不能识别对象了 实例验证
10:场景恢复
11:库函数(什么是函数,就是一段代码,我们取一个名字)
1:先写好一个库函数文件,保存
2:其它测试中要使用这些函数时,点击setting-->resoures-->添加,选择保存的库文件
11:共享对象库
20道QTP自动化测试技术经典面试题
1)QTP支持那些环境? QTP支持以下环境:
Active X、Delphi、Java、Net、Oracle、People Soft Power Builder、SAP、Siebel、Stingray Terminal Emulator、Visual Basic Visual Age 、Web、Web Services
2)QTP的对象库类型是什么? QTP支持两种类型的对象库: (1) 共享对象库(也叫全局对象库) (2) 单例对象库(也叫局域对象库)
共享对象库在处理多次测试中的静态对象时适用,扩展名是“.tsr”。 默认的是单例对象库,它的扩展名是“.mtr”
3)可以在其他测试中用脚本语言调用QTP测试吗?假设有四个测试,我想在一个主脚本中调用这些测试,这种QTP中可能吗?
答案是肯定的。你可以在你的测试中调用四个甚至更多脚本。为了达到这个目的,需保证相应脚本中的Actions是可重用的。然后从目标脚本中可以使调用这些可重用的actions。
4)什么是action split?在QTP中使用action split的目的何在? Action split将存在的action拆分为两部分,目的在actions函数的基础上提高代码的可重用性。
5)在QTP中你如何处理Java树?
首先,选择 Java Add-In 启动QTP。第二步记录在Java树中的操作,如果在记录过程中遇到问题,选择Tools > Object Identification > Java、tree object,强制更改辅助属性来启用识别。
提示:对于任何环境的对象,你都可以把用类似的方法回答。
例如:如果问题是你怎样检查SAP多选框,你说,首先我该选择SAP Add in„„等等。
var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);
6)解释一下QTP是如何识别对象的?
QTP识别任何GUI对象基于其相应的属性。当记录的时候,QTP在对象存储库的GUI对象中识别并且存储特殊属性(如在物体识别设置中定义的一样)。在运行时,QTP将比较存储属性值与屏幕上的属性。 7)QTP中有多少种记录模式?分别在什么时候用到? QTP支持三种记录模式: (1)普通模式,也叫上下文模式 (2)低级记录模式 (3)模拟模式
普通模式:默认的记录模式,充分利用了QTP的试验对象模型。它可识别屏幕任何位置的对象。这是重新编码的最佳模式,用于大多数的自动化测试。 低级记录模式: 这个模式准确地记录鼠标操作的x,y坐标。它有助于测试哈希表。它是用于记录QTP的正常模式下的不确定对象。
模拟模式:这个模式记录执行关于屏幕/应用程序窗口时鼠标和键盘的精确“动作”。这种模式对一些操作是很有用的,例如画画、记录签名、拖放操作。 8)你怎样在一个action中调用另一个action? 调用action有两种方法:
(1)调用复制的action。用这种方法,操作对象存储库、脚本和时间戳将被复制到目标测试脚本。
(2)调用现有的action。用这种方法,操作对象存储库、脚本和时间戳不会被复制,但一个调用(参考)将在源脚本的action上生成。 9)什么是虚拟对象?
应用程序可能包含有着像标准对象行为的对象,但不被QTP识别。您可以把这些对象定义为虚拟对象并将它们映射到标准的类,比如按钮或一个复选框。QTP在运行的会话中在虚拟对象上模拟用户的动作。在测试结果里,虚拟对象被当成标准的类对象展示出来。
例如,假设你想记录一个测试包含用户单击的位图的Web页面。位图包含几个不同的超链接区域,每个区域打开一个不同的目的页面。当你记录一个测试,Web站点匹配单击位图的坐标并且打开目标页面。
在运行的会话中启用QTP以点击所需坐标,你可以为一个区域的位图定义一个虚拟对象,其中包括那些坐标,并将其映射到按钮类。当运行一个测试时,QTP单击一个被定义为虚拟对象位图所在区域,这样网址就可以打开正确的目的地页面了。
10)如何使用QTP执行跨平台测试和跨浏览器测试?你能用一些例子解释说明吗?
创建单独的Actions,以满足不同的操作系统和浏览器的需要。 跨平台测试:
用内置的环境变量挖掘操作系统信息。
如:平台=环境(“操作系统”)。然后基于平台需要调用你记录在那个特定的平台的actions。 跨浏览器测试:
使用代码Browser("Core Values").GetROProperty("version"),可提取浏览器和它的相关版本。例如:Internet Explorer 6或Netscape 5,基于这个值您可以调用与浏览器相关的actions。 11)对象的逻辑名字是什么?
逻辑名字是QTP 在库里创建一个可唯一地与应用里的其他对象识别的对象时起的名字。它被QTP用来映射对象库中对象名相应的描述。如:Browser("Browser").Page("Guru99") ,在这里,Guru99 是对象的逻辑名字。 12)什么是描述性编程?
通常情况下,一个对象及其属性必须被记录在对象资源库,让QTP执行操作。
用描述性编程,你不用在对象资源库里储存对象及其属性值,而是在脚本里提到属性值对。
描述性编程背后的这种思想不是想绕开对象库,而是帮助识别静态对象。 13)运用描述性编程的时候,你用什么属性来识别浏览器网页? 可以用名字属性。 如:ex:
Browser("name:="xxx"").page("name:="xxxx"")..... 或者,我们也可以用属性"micClass"。 如:ex:
Browser("micClass:=browser").page("micClass:=page").... 14)在远程机器上使用QTP时,我们能否记录应用的运行过程呢?
当然可以。你可以通过本地浏览器而不是通过像citrix 这样的遥控器记录你进入的远程应用。
如果你仍然不能记录,建议您将QTP 和应用安装在同一个机器上。 15)用一个例子解释创建对象的关键词。 创建并返回一个自动化对象的引用。
语法:CreateObject(servername.typename [,location]) 参数:
servername:需要。提供对象的应用的名字。 typename:需要。创建对象的类型或者类。 location:可选。创建对象的网络服务器名字。
16)你能在Per-Action 和Shared Object Repository中切换吗?如果能,怎么切换的?
可以转换。找到Test,然后选择Settings,最后选择Resources,在这里可以选择储存库了。
17)什么是对象间谍?如何使用它?
对象间谍有助于确定正在被测试的应用的运行测试时间对象属性和方法。
您可以直接从工具栏或者对象库对华康直接访问对象间谍。 这在描述编程过程中非常有用。
18)光序标志符就可以使一个对象独一无二,那为什么不给他们顶级优先权呢?为什么它是先强制后辅助的?为什么我们不能直获取序标志符? 因素如下:
(a)如果两个对象彼此重叠,基于位置的对象识别将失败。 (b)如果仅基于索引识别你的脚本可以运行,但是执行时间将增加。 因此使用强制和辅助的特性。
19)在QTP代码文件中扩展名是什么? 代码的文件扩展名是script.mts.
20)简要解释一下QTP自动化对象模型。
QTP自动化对象模型处理自动化QTP本身。几乎所有的QTP提供的配置和功能都用QTP自动化对象模型展示。
几乎所有QTP的对话框有一个相应的自动化对象,可以使用自动化对象模型的相关属性或者方法设置或检索。
QTP自动化对象可以和标准的VB编程元素一起使用,如迭代循环或条件语句来帮助你设计脚本的选择。
浙公网安备 33010602011771号