- QTP 教程
- QTP - 首页
- QTP - 简介
- QTP - 测试自动化
- QTP - 环境设置
- QTP - 录制和回放
- QTP - 对象库
- QTP - 动作
- QTP - 数据表
- QTP - 检查点
- QTP - 同步
- QTP - 智能识别
- QTP - 调试
- QTP - 错误处理
- QTP - 恢复方案
- QTP - 环境变量
- QTP - 库文件
- QTP - 测试结果
- QTP - GUI 对象
- QTP - 虚拟对象
- QTP - 访问数据库
- QTP - 使用 XML
- QTP - 描述性编程
- QTP - 自动化对象模型
- QTP - 框架
- QTP - 框架设计
- QTP 有用资源
- QTP - 问答
- QTP - 快速指南
- QTP - 有用资源
- QTP - 讨论
QTP 面试问题
尊敬的读者,这些QTP 面试问题专门设计,旨在让您熟悉在QTP主题面试中可能遇到的问题类型。根据我的经验,优秀的考官很少会在面试前计划好要问哪些具体问题,通常问题会从该主题的一些基本概念开始,然后根据进一步的讨论以及您的回答继续下去。
基于技术、加载项和平台,QTP 选择其工作环境。
QTP 可以处理以下环境:
默认支持的环境 | ||
---|---|---|
Web | ActiveX | Visual Basic |
其他支持的环境 | ||
.Net(Windows & Web 窗体) | PeopleSoft | Visual Age |
Java | Oracle | Delphi |
PowerBuilder | Siebel | Web 服务 |
SAP for Web | Stingray | 终端模拟器 |
WPF | 标准 Windows | SAP for Windows |
QTP 支持两种类型的对象库:
共享对象库
每个动作的对象库
共享对象库:也称为全局对象库,在使用动态对象和对象描述经常更改的测试中最佳,扩展名为“.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”。在树对象中更改必需和辅助属性以方便识别。
可以通过针对不同的操作系统和浏览器创建不同的动作来实现跨平台测试和跨浏览器测试。
跨平台测试:内置的环境变量有助于提取操作系统信息。您可以根据录制动作的平台调用该动作。
跨浏览器测试:代码 Browser("Core Values").GetROProperty("version") 有助于提取浏览器及其对应的版本,例如:IE 6、Mozilla Firefox 9 或 Netscape 5。提取浏览器后,您可以调用与特定浏览器相关的动作。
您可以直接从 UFT GUI 窗口连接到 QC。为此:
转到文件菜单并选择 (QC) quality center
接下来,将打开一个窗口以输入 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 = (字符串) 报告中目标步骤的名称(对象名称)。
Details = (字符串) 报告事件的描述。该字符串将显示在报告的步骤详细信息框架中。
QTP自动化对象模型完全处理QTP中发生的自动化过程。通常,QTP自动化对象模型表示QTP测试提供的所有配置和功能。几乎所有QTP对话框都包含其对应的自动化对象,可以通过自动化对象模型中提供的对应属性或方法对其进行编辑或重新获取。用户可以使用自动化对象和标准VB编程元素(迭代循环或条件语句)来设计所需的脚本。
在测试运行期间,文本输出值捕获应用程序上显示的文本。在参数化中,文本输出值捕获每次迭代中显示的值,这些值将存储在运行时数据表中以供进一步使用。
步骤生成器在不录制任何过程的情况下向测试脚本添加步骤。
可以通过两种方式调用操作:
调用操作的副本:复制操作(可重用和不可重用的操作)时,还会复制检查点、参数化以及调用测试的数据表中的相应操作选项卡。在调用测试的数据表中,可以对复制的操作进行修改,这些修改不会影响其他测试。
调用现有操作:这里,只能调用“可重用”的操作。在调用测试中,对现有操作的调用将处于只读模式。它们只能在其创建的测试中修改。它易于管理,可以在多个测试中使用相同的操作。
测试融合报告显示测试应用程序在运行测试时使用的所有功能。测试融合报告以组织良好的表格格式呈现自身。此外,它还详细介绍了每次迭代的每个步骤、运行时数据表以及如果选择了测试运行的影片。
运行时数据表存储值,例如:参数化输出、检查点值、输出值等。它以“xls”文件扩展名呈现自身,并存储在测试结果文件夹中。用户也可以从测试融合报告中访问它。
检查点是一个验证点,通过比较指定属性的当前值和预期值来生成通过或失败状态。
输出值是在运行测试时记录的值,可以存储在特定位置,例如:数据表或变量中。与检查点不同,它不会比较两个值来生成通过/失败状态。
在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”, here DIM keyword is used to declare weight variable. Set weight = 40, here SET keyword is used to assign value “40” to the weight variable.
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提供三种方法来获取Web表的行数。
使用Web表对象的属性 - rowcount
使用GetROProperty
使用HTML DOM + UFT
将数据表导出到Excel有两种方法:
DataTable.Export (“C:\export.xls”)
DataTable.ExportSheet “C:\mysheet.xls” (如果不存在Excel文件,则创建新文件)
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复制用户对虚拟对象的动作,并且测试结果将虚拟对象显示为标准类对象。
下一步是什么?
接下来您可以回顾一下您之前完成的与主题相关的作业,并确保您可以自信地谈论它们。如果您是应届毕业生,面试官不会期望您回答非常复杂的问题,而是要巩固您的基础概念。
其次,如果您无法回答一些问题,这并不重要,重要的是,无论您回答了什么,都必须充满自信地回答。所以在面试过程中要自信。我们在tutorialspoint祝您面试顺利,并祝您未来一切顺利。干杯! :-)