QTP 问题与答案

根据技术、插件和平台,QTP 选择要工作的环境。

QTP 可以在以下给定的环境中工作 −

默认支持的环境
Web Active X Visual Basic
其他支持的环境
.Net(Windows 和 Web 表单) People Soft Visual Age
Java Oracle Delphi
Power Builder Siebel Web 服务
SAP for Web Stingray 终端模拟器
WPF 标准 Windows SAP for Windows

QTP 支持 2 种类型的对象存储库 −

  • 共享对象存储库

  • 每个操作的对象存储库

共享对象存储库:也称为全局对象存储库,最适合在测试中使用动态对象且对象描述经常更改的情况,以扩展名".tsr"表示。在自动化测试时,测试人员通常更喜欢共享对象存储库而不是本地对象存储库。

每个操作对象存储库:它是一个默认的对象存储库,也称为扩展名为" .mtr"的本地对象存储库。

在 QTP 中,逻辑名称是在存储库中创建对象时唯一标识对象相对于应用程序其他对象的名称。QTP 使用此对象名称通过使用此代码−将脚本中显示的对象与对象存储库中的相应描述进行映射

Browser("Browser").Page("Tutorialspoint")。这里,Tutorialspoint 是对象的逻辑名称。

通常,QTP 对已保存在对象存储库中的对象及其属性执行操作。

描述性编程不方便用户将对象及其属性值存储在对象存储库中,而是方便用户直接在脚本中提及属性值对。描述性编程不是为了避免对象存储库,而是方便用户识别动态对象。

在描述性编程中,使用 name 属性,例如 −

Browser("name:="xxx"").page("name:="xxxx"")..... 

或者

还可以使用属性"micClass",例如,

Browser("micClass:=browser").page("micClass:=page")....

是的!您可以通过本地浏览器记录放置在远程机器中的应用程序,而不是通过远程方式; citrix,但如果仍然无法录制,那么最好在同一台机器上安装 QTP 和应用程序以维持相同的会话。

关键字"CreateObject"创建并返回对测试对象的引用。

CreateObject (servername.typename [, location] )

其中,

servername − 代码的必需参数,用于呈现提供对象的应用程序的名称。

typename −  代码的必需参数,用于呈现要创建的对象的类型或类。

location −代码的可选参数,用于表示要创建对象的网络服务器的名称。

例如 − Set IE = CreateObject("Chrome.Application")

是的,通过为相应的测试脚本创建可重复使用的操作并从目标测试脚本调用可重复使用的操作测试脚本,这将成为可能。

在 QTP 中,操作拆分可用于将重要且现有的操作分为两部分。可以根据操作的功能将其分为几部分,以便;代码可以改进并重新用于不同的目的。

首先,通过选择 Java 插件打开 QTP,然后在 Java 树上执行录制操作。如果您没有获得适当的录制环境,则在打开的 QTP 工具中,转到工具对象标识 Java。在树对象中,更改强制和辅助属性以方便识别。

通过针对不同的操作系统和浏览器创建不同的操作,可以进行跨平台测试和跨浏览器测试。

跨平台测试:内置环境变量有助于挖掘操作系统信息。您可以根据记录操作的平台调用操作。

跨浏览器测试:代码;浏览器("核心值")。GetROProperty("版本")有助于提取浏览器及其相应的版本,例如;IE 6、Mozilla Firefox 9 或 Netscape 5。提取浏览器后,您可以调用与特定浏览器相关的操作。

您可以直接从 UFT GUI 窗口连接到 QC。要做到这一点 −

  • 转到文件菜单并选择 (QC) 质量中心

  • 接下来,将打开一个窗口以输入 QC 的 URL 和其他详细信息 - 在此窗口中,输入用户 ID、密码和项目

上述步骤将帮助您连接到 QC,稍后您可以从 QC 本身执行测试。

UFT 中的自动化框架类型 −

  • 线性 − 使用此框架,您可以非常轻松地创建测试,只需按顺序步骤编写一个没有模块化的单一程序即可。

  • 关键字驱动 − 要使用此框架创建测试,您必须为不同的操作集生成不同的关键字,并将这些关键字引用到主脚本代码。

  • 数据驱动 − 它用于对保留在单独文件(通常是 Excel 表)中的多组数据执行相同的操作集。

  • 混合 −数据驱动和关键字驱动框架的组合

  • BPT − 在这里,程序被分解为业务组件,程序与上述一种或另一种类型的框架一起使用。

Settoproperty 代表设置测试对象属性。使用此属性,您可以在运行时临时更改对象值及其对应的属性值。

UFT 中的 Round 函数用于对小数值进行舍入

例如

Mydecimal = 8.2755555

Roundedvalue = Round(Mydecimal , 5)

Print roundedvalue ‘it will print 8.275

可以!用户可以通过打开 QTP 窗口,转到测试设置资源(提供选择存储库的选项)从本地对象存储库切换到共享对象存储库。

在 QTP 中,对象的属性有助于识别 GUI 对象。在录制过程中,GUI 对象的对象存储库会存储对象标识设置中定义的属性,在运行测试时,QTP 会将存储在 GUI 对象的对象存储库中的属性与屏幕上的属性进行比较,以唯一地识别 GUI 对象。

同时执行多个测试文件(或一系列文件)称为批量测试。要执行批量测试,QTP 提供了一个工具"批量测试运行器"。要在一个工具中同时运行多个文件,您只需添加测试脚本。添加脚本后,您无需手动执行任何操作,工具将自动开始打开并逐个执行测试脚本。

QTP 有很多缺点 −

  • 许可证和维护成本高昂

  • 无法运行多个线程/实例

  • 与 Selenium 等开源工具相比,执行过程很慢

  • QTP 许可证只能从 HP 续订

QTP 支持 3 种类型的录制模式 −

  • 正常(上下文)录制模式

  • 低级录制模式

  • 模拟录制模式

正常录制模式:一种默认录制模式,已用于大多数自动化活动。通过使用 QTP 的测试对象模型,它可以识别对象,而不考虑它们在屏幕上的位置。

低级录制模式:在此模式下,在 x、y 坐标中操作鼠标有助于记录对象。它能够测试哈希图并记录正常录制模式无法识别的对象。

模拟录制模式:此录制模式根据鼠标和键盘操作记录屏幕/应用程序窗口。它记录操作,例如;画图、录制签名、拖拽操作。

关键字视图是一种基于图标的视图,以表格形式显示测试步骤并自动为测试步骤创建文档。

专家视图为关键字视图中的每个测试步骤提供相应的 VB 脚本语句。

尽管 QTP 没有为数据库连接提供任何内置支持,但 VBScript 语言和 ADODB 对象有助于数据库连接。

在连接之前必须了解某些事情 −

  • 服务器的连接字符串(不同服务器之间会有所不同,可以从www.connectionstrings.com)

  • 数据库类型

  • 服务器名称

  • 数据库名称

  • 用户名

  • 密码

要连接到数据库,您可以直接编写数据库连接命令,也可以使用 QTP 提供的 SQLQuery 工具。

在测试或描述性编程期间,对象间谍有助于识别和获取应用程序的运行和测试时间对象属性和方法。可以直接从工具栏或对象存储库访问。

代码文件的扩展名是 script.mts。

如果某个步骤声明为可选步骤,QTP 认为该步骤不是强制执行的。如果可选步骤包含 GUI 对象,QTP 会执行该步骤。如果可选步骤不包含 GUI 对象,QTP 将避开可选步骤并转到下一步。

自动化框架的类型有 −

  • 线性脚本 - 记录和回放

  • 测试库架构框架

  • 数据驱动测试框架

  • 关键字驱动(或表驱动)测试框架

  • 混合框架

QTP 中的页面检查点显示页面中有效/无效链接的数量。

尽管 QTP 提供了四种类型的结果状态;通过、失败、完成和等待,但 QTP 的标准方法"Reporter.Reportevent"会向测试结果窗口发送自定义消息。 "Reporter.Reportevent" 还可以将结果状态的屏幕截图发送到测试结果窗口。

语法

Reporter.ReportEvent EventStatus, ReportStepName, Details [, ImageFilePath]

其中

EventStatus = 0 或 micPass, 1 或 micFail, 2 或 micDone, 3 或 micWarning

ReportStepName = (String) 报告中预期步骤的名称(对象名称)。

Details = (String) 报告事件的描述。该字符串将显示在报告中的步骤详细信息框架中。

QTP 自动化对象模型完全处理 QTP 中发生的自动化过程。通常,QTP 自动化对象模型代表 QTP 测试提供的所有配置和功能。几乎所有的 QTP 对话框都包含其相应的自动化对象,可以通过自动化对象模型中提供的相应属性或方法来编辑或恢复。用户可以使用自动化对象与标准 VB 编程元素(迭代循环或条件语句)来设计所需的脚本。

在测试运行时,文本输出值会捕获应用程序上的文本显示。在参数化中,文本输出值捕获每次迭代显示的值,这些值将存储在运行时数据表中以供进一步帮助。

步骤生成器将步骤添加到测试脚本中,并记录任何过程。

可以通过两种方式调用操作 −

调用操作的 COPY:在复制操作(可重用和不可重用操作)时,操作还会复制检查点、参数化以及调用测试的数据表中的相应操作选项卡。在调用测试的数据表中,您可以对复制的操作进行修改,但修改不会对其他测试产生任何影响。

调用现有操作:在这里,您只能调用"可重复使用"操作。在调用测试中,对现有操作的调用将处于只读模式。它们只能在创建它们的测试中进行修改。它易于管理,并且可以在多个测试中使用相同的操作。

测试融合报告展示了运行测试时使用的测试应用程序的所有功能。测试融合报告以有组织的表格格式呈现。此外,它还提供迭代的每个步骤的详细信息、运行时数据表和测试运行的电影(如果选择)。

运行时数据表存储值,例如:参数化输出、检查点值、输出值等。它以"xls"文件扩展名呈现自身并将其自身存储在测试结果文件夹中。用户还可以从测试融合报告中访问它。

检查点是一个验证点,它通过比较指定属性的当前值和预期值来生成 PASS 或 FAIL 状态。

输出值是在运行测试时记录的值,可以存储在特定位置,例如:在数据表或变量中。与检查点不同,它不会比较两个值来生成 PASS/FAIL 状态。

在 QTP 中,可以使用"恢复场景"和"On Error"语句来处理异常。

要处理恢复场景中的异常,您必须定义三件事 −

  • 触发事件

  • 恢复步骤

  • 恢复后测试运行

要通过"On Error"语句处理异常 - 在脚本中,您必须使用"On Error Resume Next"和"On Error Go to 0"语句。

在 QTP 中,操作是用 VB 脚本语言编写的,不返回任何值。函数是用 VB 脚本语言编写的,它返回单个值。

每个操作都包含自己的对象存储库、数据表、活动屏幕等,而函数则没有。

函数可以在操作中调用,但操作不能在函数中调用。

在 QTP 中,函数以".vbs"扩展名保存,而操作以".mts"扩展名保存。

操作是 QTP 内部的,而函数只是带有一些/没有参数和一个返回值的代码行。

操作有时可重复使用,但有时不能,而函数总是可重复使用的。

在变量名前使用 DIM 关键字来声明变量,在变量名前使用 SET 关键字来为变量赋值变量

例如

"Dim weight",这里使用 DIM 关键字声明权重变量。

设置 weight = 40,这里使用 SET 关键字将值"40"赋给权重变量。

GetRoProperty 是 QTP 的标准方法,用于获取运行时对象的属性值。

有时,QTP 无法找到与相应对象描述匹配的对象。或者,有时 QTP 会找到多个与对象描述匹配的对象。因此,为了解决这个问题,QTP 忽略了对象描述,而专注于智能识别机制来识别对象。

QTP 的智能识别机制使用两种类型的属性来识别对象:基本过滤属性和可选过滤属性。

基本过滤属性 - 特定测试对象类的属性,其值在原始对象的实际含义发生变化时也会发生变化。

可选过滤属性 - 它还有助于识别特定类的对象,这些对象的属性经常发生变化,但如果它们不再适用,则可以忽略它。

您可以在源电脑中创建一个脚本的 ZIP 文件,然后使用"生成脚本"功能将其导入 QTP 的目标电脑。要使用此功能,请转到"对象识别测试设置工具/选项"选项卡。

不可以!我们无法在一台机器上打开两个 QTP 实例来工作,但 QTP 本身可以在被测应用程序 (AUT) 的多个实例上工作,并同时处理多个 IE 浏览器窗口。

将 xls 导入 QTP 的语法 −

DataTable.ImportSheet "..\..\TestData\Input.xls",1,dtGlobalSheet

Syntax to export xls into QTP,

DataTable.ExportSheet "..\..\Results\Output.xls","Global"

SetToProperty 是 QTP 的标准方法,用于临时更改存储在对象存储库中的对象的属性。

基于 Web 的应用程序的标准时间延迟为 60 秒,可通过"测试设置"对话框进行更改。

在 UFT 中将数据写入 excel 文件的正确语法是 −

filepath = “C:\Bugs\Reports.xlsx”
Set objExcel = CreateObject(“Excel.Application”)
objExcel.Visible = True
Set Wb= objExcel.Workbooks.Open (filepath)
Wb.worksheets(1).Cells(1,1).Value = “TutorialPoints” read value from Excel file

TSR 代表测试共享存储库,用于共享对象存储库。

按照以下步骤生成 TSR 文件 −

首先,打开对象存储库,然后转到文件菜单。接下来,导出本地对象选项并选择它。UFT 将打开对话框以保存 .tsr 文件;提供所需的文件保存路径。

上述步骤将在 UFT 中生成 .tsr 文件。

它是 QTP 提供的标准内置工具,用于将操作转换为业务流程组件。

UFT 提供了三种从 Webtable 获取行数的方法。

  • 使用 Webtable 对象的属性 − rowcount

  • 使用 GetROProperty

  • 使用 HTML DOM + UFT

将数据表导出到 excel 有两种方法 −

  • DataTable.Export (“C:\export.xls”)

  • DataTable.ExportSheet “C:\mysheet.xls” ( creates the new file in the absence of excel file)

QTP 支持三种类型的环境变量 −

  • 内置(只读)

  • 用户定义的内部(只读)

  • 用户定义的外部(读/写)

以下语法用于检索环境变量

Environment.Value( "name") = "TutorialPoints"
                  OR
Environment.Value( "OS") = " TutorialPoints"

然而

Environment.Value ("name") 语法将返回名称作为 TutorialPoints

Environment.Value ("OS") 这将返回您的系统操作系统

在位图检查点中,用户可以比较两个完整的位图以及位图的一部分,从一个像素到另一个像素。

在图像检查点中,用户只能检查图像属性值

qfl 和 vbs 文件之间的区别−

  • qfl 是快速测试函数库文件,而 vbs 是微软的 vbscript 文件

  • qfl 是不可执行文件,而 vbs 是可执行文件

  • 要在 UFT 中使用 qfl 文件,必须从测试设置中关联 qfl 文件,而 vbs 文件只能与"执行文件"语句关联。

在 UFT 中将数据写入文本文件的正确语法是 −

Content = “TutorialPointsTutorials”
Set Fo = createobject ("Scripting.FilesystemObject")
Set f = Fo.openTextFile ("c:\myFile.txt",8,true)     ' open in write mode

   f.Write (contents)
   f.Close
   Set f = nothing

函数库的扩展名是".QFL"。

QTP 不基于本地数据表执行迭代,它基于全局数据表执行迭代,因此;测试迭代只会在全局数据表上进行一次。

以下代码有助于从 Outlook 发送电子邮件 −

Set Outlook = CreateObject ("Outlook.Application")
Dim Message 'As Outlook.MailItem
Set Message = Outlook.CreateItem (olMailItem)

With Message
   .Subject = Subject
   .HTMLBody = TextBody
   .Recipients.Add (aTo)
   Const olOriginator = 0
   .Send
End With

按照下面给出的代码从数据库获取数据 −

Set db = createobject (“ADODB.Connection”)
db.Open “Provider = Microsoft.Jet.OLEDB.4.0;Data Source=G:\guru99\vb6\admission_project.mdb;
Persist Security Info = False”

Set rst = createobject (“ADODB.Recordset”)
rst.Open “select*from Course”, db, 3
id = rst. RecordCount
For i = 0 to id-1
   Print rst.field (0) & rst.fields (1) & rst.fields (2) & rst.fields (3)
   rst.Movenext
Next

每当对象存储库增长时,由于其大小增加而开始提供较差的性能,并且 UFT 面临从对象存储库中识别对象的问题,描述性编程(也称为程序描述)提供了一种识别对象并对对象存储库中不存在的对象执行操作的方法。描述性编程包括属性名称和属性值。它执行非常动态的应用程序对象的操作,并在运行时对应用程序执行操作,而无需了解对象的唯一属性。

有时,QTP 无法识别已被视为应用程序标准对象的应用程序对象。QTP 将这些对象视为虚拟对象并将它们映射到标准类,这些对象可以是按钮或复选框。在运行时,QTP 复制用户对虚拟对象的操作并且测试结果将虚拟对象显示为标准类对象。