50佳QTP面试题(上)
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编程元素一起使用,如迭代循环或条件语句来帮助你设计脚本的选择。 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……等等。
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")....