多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 前 100 个 QTP / UFT 面试问题&答案 > 原文: [https://www.guru99.com/qtp-interview-questions.html](https://www.guru99.com/qtp-interview-questions.html) 该问卷分为初学者和高级问题。 如果您有 [QTP](/quick-test-professional-qtp-tutorial.html) 的经验,请在此处跳至问题#50 [。 不过,我们建议您阅读所有问题,因为它将为您做好面试的准备](#50) **1)Micro Focus UFT 中对象存储库的类型是什么。** QTP 支持 2 种类型的对象存储库 1)共享对象存储库(也称为全局) 2)每个动作对象存储库(也称为本地) 默认情况下使用“按操作对象存储库”。 Per-Action 存储库的扩展名为“ .mtr”。 在处理在多个测试中调用的动态对象时,最好使用共享对象存储库。 扩展名是“ .tsr” **2)HP QTP 支持哪些环境?** QTP 支持以下环境 | * 主动 X * 德尔菲 * 爪哇 * 。净 * 甲骨文 | * 人软 * 电力建设者 * 树液 * 西贝尔 * 黄貂鱼 | * 终端仿真器 * Visual Basic * 可视年龄 * 网页 * Web 服务 | 要了解有关加载项及其使用方法的更多信息,请观看此视频[教程](/uft-qtp-automation-testing.html)。 **3)我们可以使用脚本从另一个测试中调用 QTP 测试吗? 假设有 4 个测试,我想在主脚本中调用这些测试。 QTP 有可能吗?** 是。 您可以在测试中调用 4 个或更多脚本,为此,首先需要使相应脚本中的操作可重复使用,然后从目标脚本中调用这些可重复使用的操作。 **4)什么是动作拆分?在 QTP 中使用它的目的是什么?** 动作拆分是将现有动作分为两部分,目的是根据动作的功能将其划分,以提高代码的重用性。 **5)您将如何处理 QTP 中的 Java 树?** 首先,您将选择 [Java](/java-tutorial.html) Add-In 并启动 QTP。 下一步在 Java 树上记录操作。 如果在录制时遇到问题,则可以选择工具>对象标识> Java,树对象,并更改必需属性和辅助属性以启用标识。 提示:您可以根据类似的回答针对任何环境中的任何其他对象做出回答。 例如:如果问题是如何选中 SAP 复选框,请说,首先,我将选择 SAP Add in ...,依此类推。 **6)说明 QTP 如何识别对象?** QTP 根据其相应属性识别任何 GUI 对象。 记录时,QTP 将在 GUI 对象的对象存储库中标识并存储特殊属性(如“对象标识”设置中定义)。 在运行时,QTP 会将存储的属性值与屏幕上的属性进行比较,以唯一标识 GUI 对象。 了解有关[对象识别](/uft-qtp-object-identification.html)的更多信息 **7)QTP 中有几种类型的记录模式? 什么时候使用?** QTP 支持 3 种类型的记录模式 1.普通模式也称为上下文 2.低级录音模式 3.模拟模式 普通模式:这是默认的记录模式,并充分利用了 QTP 的测试对象模型。 它可以识别对象,无论它们在屏幕上的位置如何。 这是首选的重新编码模式,并且用于大多数自动化活动。 低级记录模式: 此模式记录鼠标操作的确切 x,y 坐标。 这对测试哈希图很有帮助。 对于记录未被 QTP 正常模式识别的对象很有用。 模拟模式:此模式记录您相对于屏幕/应用程序窗口执行的精确的鼠标和键盘“运动”。 此模式对于诸如绘制图片,记录签名,拖放操作等操作很有用。 了解有关 QTP 中的[记录模式的更多信息](/uft-qtp-recording-modes.html) **8)您将如何从一个动作调用到另一个动作?** 我们可以通过两种方式调用动作 1)调用动作副本。 -在这种情况下,动作对象库,脚本和 Datable 将被复制到目标测试脚本。 2)调用现有动作。 -在这种情况下,将不会复制 Object Repository,Script 和 Datable,但是会在源脚本中对 Action 进行调用(引用)。 **9)什么是虚拟对象?** 您的应用程序可能包含行为与标准对象相似的对象,但 QTP 无法识别这些对象。 您可以将这些对象定义为虚拟对象,并将它们映射到标准类,例如按钮或复选框。 QTP 在运行会话期间模拟用户对虚拟对象的操作。 在测试结果中,虚拟对象显示为好像它是标准类对象。 例如,假设您要在包含用户单击的位图的网页上记录测试。 位图包含几个不同的超链接区域,每个区域打开一个不同的目标页面。 记录测试时,该网站将与位图上的单击坐标相匹配,并打开目标页面。 要使 QTP 在运行会话期间单击所需的坐标,可以为位图的区域定义一个虚拟对象(包括那些坐标),并将其映射到按钮类。 运行测试时,QTP 单击定义为虚拟对象的区域中的位图,以便网站打开正确的目标页面。 **10)如何使用 QTP 执行跨平台测试和跨浏览器测试? 你能解释一下例子吗?** 您将需要创建单独的操作,以照顾不同的操作系统和浏览器 跨平台测试: 使用内置环境变量,您可以挖掘操作系统信息。 例如。 平台=环境(“ OS”)。 然后,基于平台,您需要调用在该特定平台上记录的操作。 跨浏览器测试: 使用此代码 浏览器(“核心值”).GetROProperty(“版本”)可以提取浏览器及其对应的版本。 例如:Internet Explorer 6 或 Netscape5。根据此值,您可以调用与该浏览器相关的操作。 **11)对象的逻辑名称是什么?** 逻辑名称是 QTP 在存储库中创建对象以与应用程序中其他对象唯一标识时给出的名称。 QTP 将使用此名称来映射脚本中的对象名称及其在对象存储库中的相应描述。 例如:Browser(“ Browser”)。Page(“ Guru99”)这里,Guru99 是对象的逻辑名称。 **12)什么是描述性编程?** 通常,必须将对象及其属性记录在对象存储库中,以使 QTP 能够对其执行操作。 使用描述性编程,您无需将对象及其属性值存储在对象存储库中,而是直接在脚本中提及*属性值对*。 描述性编程的思想不是绕过对象存储库,而是帮助重新定义动态对象。 了解有关[描述性编程](/uft-qtp-descriptive-programming.html)的更多信息 **13)使用描述性编程时,用于标识浏览器&页面的属性是什么?** 您可以使用 name 属性 例如:Browser(“ name:=” xxx“”)。page(“ name:=” xxxx“”)..... 要么 我们还可以使用属性“ micClass”。 例如:Browser(“ micClass:= browser”)。page(“ micClass:= page”)...。 **14)我们可以使用 QTP 记录在远程计算机上运行的应用程序吗?** 是的。您可以记录远程应用程序,前提是您要通过本地浏览器访问应用程序,而不是像 citrix 这样的远程程序。 如果仍然无法记录,建议在同一台计算机上安装 QTP 和应用程序 **15)举例说明关键字 CreateObject。** 创建并返回对自动化对象的引用 语法:CreateObject(servername.typename [,location]) 争论 服务器名称:必填。 提供对象的应用程序的名称。 类型名:必填。 要创建的对象的类型或类。 location:可选。 要在其中创建对象的网络服务器的名称。 示例:设置 IE = CreateObject(“ InternetExplorer.Application”) **16)可以在“按操作”存储库和“共享对象存储库”之间切换吗? 如果是,怎么办?** 是的,我们可以切换。 转到测试--- >设置--- >资源。 您可以在这里选择存储库。 **17)什么是对象间谍? 如何使用它?** Object Spy 帮助确定被测应用程序的运行&测试时间对象属性&方法。 您可以直接从工具栏或从“对象库”对话框访问对象间谍。 在描述性编程过程中非常有用 了解有关[对象间谍](/uft-qtp-objectspy-getroproperty.html)的更多信息 **18)当单独的顺序标识符可以使一个对象唯一时,为什么不赋予它们最高优先级? 为什么它首先是强制性的,然后是辅助性的。 为什么我们不能直接使用序号标识符?** 考虑以下 - a)如果两个对象彼此重叠,则基于位置的对象识别将失败。 b)如果仅使用基于索引的识别,您的脚本将起作用,但脚本执行时间将增加。 因此,使用强制性和辅助性。 **19)QTP 中代码文件的文件扩展名是什么?** 代码文件扩展名为 *script.mts* **20)简要说明 QTP 自动化对象模型。** QTP 自动化对象模型处理 QTP 本身的自动化。 QTP 提供的几乎所有配置和功能都由 QTP 的自动化对象模型表示。 QTP 中几乎所有对话框都有一个相应的自动化对象,可以使用自动化对象模型中的相应属性或方法来设置或检索该对象.QTP 自动化对象可以与标准 VB 编程元素(如迭代循环或条件语句)一起使用,以帮助您设计 选择的脚本。 **21)QTP 中文本输出值的用途是什么?** 文本输出值使您可以捕获运行时在测试中的应用程序上显示的文本。 如果进行了参数化,则文本输出值将捕获每次迭代中出现的值,这些值将存储在运行时数据表中以进行进一步分析。 **22)什么是步进发生器?** 使用“步骤生成器”可以在脚本中添加“测试步骤”。 使用步骤生成器,您可以将步骤添加到脚本中,而无需实际记录。 **23)如何使 QTP 理解相同类型的对象之间的区别。假设页面中有 5 个复选框,我必须选择第二个,如何通过脚本来做到这一点?** 您可以将序号标识符(例如 index)与一些描述性编程一起用于对象识别。 观看此示例的[视频](/uft-qtp-descriptive-programming.html)。 **24)什么是测试融合报告?** 测试融合报告,显示测试运行的所有方面,并以树格式组织。 它提供了所有迭代执行的每个步骤的详细信息。 如果选择,它还会提供运行时数据表,屏幕快照和测试运行的影片。 **25)如何处理 QTP 中的异常?** 在 QTP 中,异常处理是通过使用 一个。 恢复方案。 b。 使用“出现错误”语句 在恢复方案中,您必须定义。 1.触发的事件。 2.恢复步骤。 3.恢复后测试运行。 在脚本级别,您可以使用 On Error Resume Next 和 On Error Go to 0 语句。 **26)QTP 中的环境变量类型是什么?** QTP 中的环境变量分为三种类型: 1)内置(只读) 2)用户定义的内部(只读) 3)用户定义的外部(读/写) 您可以使用以下语法*设置环境变量* *Environment.Value(“ name”)=“ Guru99”* 您可以使用以下语法检索环境变量 *Environment.Value(“ name”)-这将重新运行名称为 Guru99* *Environment.Value(“ OS”)*-这将返回您的系统 OS **27)位图检查点&图像检查点有什么区别?** 位图检查点对图像或图像的一部分进行像素到像素比较。 图像检查点确实会进行像素间比较,但会比较图像属性(例如 alt 文本,目标 url 等)。 **28)QTP 中的功能和动作之间有什么区别?** 动作具有自己的对象存储库&数据表。 操作有助于使您的测试模块化,并增加重用性。 示例:您可以基于登录,注销等功能将脚本划分为动作。 函数是 VB 脚本编程概念,没有自己的对象库或数据表。 函数有助于重用您的代码。 例如:您可以在脚本中创建一个函数以连接两个字符串。 **29)什么是 QTP 中的关键字视图和专家视图?** 关键字视图是基于图标的视图,以表格形式显示测试步骤。 它还会自动生成测试步骤的文档。 专家视图为“关键字”视图中的每个测试步骤提供了相应的 VB 脚本语句。 **30)解释 QTP 测试流程吗?** 快速测试测试过程包括 6 个主要阶段: 1)创建您的测试计划-这是准备阶段,您可以在其中确定确切的测试步骤,测试数据和自动化测试的预期结果。 您还将确定创建和运行 QTP 测试所需的环境和系统配置。 2)在您的应用程序上记录会话-在此阶段,您将在 AUT 上一步一步执行测试步骤,并且 QTP 将自动为执行的每个步骤记录相应的 VB 脚本语句。 3)增强测试-在此阶段,您将插入检查点,输出值,参数化,编程逻辑,例如 if ... else 循环,以增强测试脚本的逻辑。 4)重播&调试 -增强功能后,您将重播脚本以检查其是否正常运行,并在必要时进行调试。 5)运行测试-在此阶段,您将执行测试脚本的实际执行。 6)分析测试结果-测试运行完成后,您将在生成的“测试融合”报告中分析结果。 7)报告缺陷-发现的任何事件都需要报告。 如果您使用的是 <st1:place><st1:placename>质量</st1:placename> <st1:placetype>中心</st1:placetype></st1:place> ,则在 QTP 中失败的测试会自动引发缺陷。 **31)有哪些不同类型的测试自动化框架?** 自动化框架的类型是- 1)线性脚本-记录&播放 2)测试库架构框架。 3)数据驱动的测试框架。 4)关键字驱动或表驱动测试框架。 了解有关[测试自动化框架](/test-automation-framework.html)的更多信息。 **32)您将如何使用 QTP 在 Web 应用程序中检查断开的链接?** 您可以使用页面检查点来提供页面上有效/无效链接的数量。 **33)什么是运行时数据表? 我在哪里可以找到并查看此表?** 参数化输出,检查点值,输出值等数据存储在运行表中。 这是一个 xls 文件,存储在“测试结果”文件夹中。 也可以在“测试融合”报告中进行访问。 **34)检查点和输出值之间有什么区别。** 检查点是一个验证点,用于将指定属性的当前值与该属性的期望值进行比较。 基于此比较,它将生成“通过”或“失败”状态。 输出值是在测试运行期间捕获的值,并且可以存储在诸如 Datable 甚至变量的指定位置。 与检查点不同,不会生成“通过/失败”状态。 **35)如何使用 VBScript 连接到数据库?** 要连接到数据库,您必须知道 a)服务器的连接字符串 b)用户名 c)密码 d)DNS 名称 您可以直接对数据库连接性命令进行编码,也可以使用 QTP 提供的 [SQL](/sql.html) 查询工具。 **36)什么是 QTP 批处理测试工具?** 您可以使用批处理测试工具来运行多个脚本。 将脚本添加到工具后,它将自动打开脚本并开始一个接一个地执行。 **37)QTP 的缺点是什么?** 从 QTP 版本 10 开始 1)在 QTP 中进行大量测试会占用大量内存并增加 CPU 使用率。 2)由于 QTP 将结果存储在 HTML 文件(而不是 txt)中,因此结果文件夹有时会变大。 **38)什么是可选步骤?** 声明为可选的步骤不是必须执行的步骤。 如果存在相应的 GUI 对象,则 QTP 对其执行操作。 如果不存在 GUI 对象,则 QTP 绕过可选步骤并继续执行下一步。 **39)什么是 Reporter.ReportEvent?** Reporter.Reportvent 是 QTP 提供的将自定义消息发送到测试结果窗口的标准方法。 句法 Reporter.ReportEvent EventStatus,ReportStepName,详细信息[,ImageFilePath] *其中* EventStatus = 0 或 micPass 1 或 micFail 2 或 micDone 3 或 micWarning 结果可以采用通过,失败,警告等任何状态。您还可以将屏幕截图发送到测试结果窗口。 **40)您将如何在 QTP 中声明变量?** 您使用 DIM 关键字声明。 您可以使用 SET 关键字为变量分配值。 例如 Dim temp'将声明 temp 变量 设置温度= 20'将为温度分配一个值 20。 **41)什么是 GetRoProperty?** GetRoProperty 是 QTP 提供的一种标准方法,用于获取运行时对象的属性值。 **42)什么是智能识别?** 通常,即使屏幕对象属性之一与记录的对象属性都不匹配。 测试失败。 在智能识别中,如果属性值不匹配,QTP 不会给出错误,而是使用基本过滤器和可选过滤器属性来唯一标识对象。 在智能识别中,如果属性值不匹配,脚本不会失败,但是会继续进行比较下一个属性。 可以在“对象标识”对话框中启用智能标识。 进一步了解 [SMART 识别](/uft-qtp-smart-identification.html) **43)如何在 QTP 中将脚本从一台 PC 导出到另一台 PC?** 我们可以利用“对象标识”,“测试设置”和“工具/选项”选项卡中提供的“生成脚本”功能在源计算机上创建脚本的 zip。 然后,可以将这些 zip 文件导入到目标计算机的 QTP 中。 **44)可以在同一台计算机上启动两个 QTP 实例吗?** 不能。您只能在同一台计算机上使用 QTP 的单个实例。 但是 QTP 本身可以在被测应用程序(AUT)的多个实例上工作。 例如:QTP 可以处理多个 IE 浏览器窗口。 **45)给出将 xls 导入/导出到 QTP 的语法。** *DataTable.ImportSheet“ .. \ .. \ TestData \ Input.xls”,1,dtGlobalSheet* *DataTable.ExportSheet“ .. \ .. \ Results \ Output.xls”,“全局”* **46)什么是 SetToProperty?** SetToProperty 更改存储在对象库中的对象的属性。 但是,这些更改不是永久性的。 **47)QTP 中基于 Web 的应用程序的标准定时延迟是多少?** 标准延迟为 60 秒。 可以在“测试设置”中更改。 **48)什么是动作转换工具?** 它是 QTP 提供的内置工具,用于将操作转换为业务流程组件。 **49)函数库的扩展名是什么?** 扩展名为'.QFL' **50)如果“全局数据”表中没有数据,而“本地数据表”中包含两行数据,则测试将迭代多少次?** 该测试仅迭代一次-全局迭代。 **51)解释如何读取 UFT 中的注册表项?** 此处演示的示例说明了如何在 UFT 中读取注册表项 ``` ‘Create a shell object Set MyShell= CreateObject (“WScript.Shell”) Read the value of key from the registry RegValue =MyShell.RegRead (varpathofkey) ‘in above function we have to pass the path of key in registery’. e.g. HKCU\software\ie\settings msgbox RegValue ``` **52)UFT 如何通过 UFT 获取系统环境变量?** 有三种方法可以在 UFT 中获取系统环境变量 使用 WSH Shell 对象 * 使用 WMI 的 Win32_Environment 类 * 从注册表中读取变量 ``` Set myShell = CreateObject (“WScript.Shell”) WScript.Echo myShell.ExpandEnvironmentStrings( "%PATHEXT%" ) myShell=Nothing, ``` 输出将是.BAT; .CMD; .VBS;。 VBE;。 JS;。 日本证券交易所 其他用户变量(如 TEMP)会覆盖其系统副本 ``` Set myShell = CreateObject( "WScript.Shell" ) WScript.Echo myShell.ExpandEnvironmentStrings( "TEMP=%TEMP%" ) myShell=Nothing ``` 输出将是 TEMP:C:\ DOCUME〜1 \ You \ LOCALS〜1 \ Temp **53)提到 UFT 中从 Outlook 发送邮件所需的步骤吗?** 要从 UFT 中的 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 ``` **54)请解释如何从 UFT 中从数据库中获取数据?** 要在 UFT 中从数据库中获取数据,您必须遵循以下代码 ``` 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 ``` **55)我们可以使用哪些代码从 UFT 中的 ftp 服务器获取文件?** 要从 ftp 服务器获取 ftp 文件,您必须使用以下代码 a)put-在服务器上存储单个文件 b)get-从 ftp 服务器下载单个文件 c)mget-从服务器下载多个文件 d)mput-在服务器上存储多个文件 e)删除-删除 ftp 服务器上的文件 ``` MyShell.Run "%comspec% /c FTP -n -s:" & commandstoworkwithftp & " " & Site, 0,True ``` **56)在 UFT 中,如何防止系统被锁定?** 为防止系统被锁定,可以使用两种方式中的任何一种 * 创建一个简单的 vbs 文件,其中包含按 numlock 键的代码并运行该 vbs 文件 * 编辑一个注册表项“ DisableLockWorkstation = 1”以禁用锁定 **57)UFT 中的描述性编程是什么意思?** 描述性编程包括属性名称和属性值。 每当 UFT 在从对象库中识别对象时遇到困难时,而是直接从脚本中识别对象,这就是描述性编程。 **58)在 UFT 中解释 qfl 和 vbs 文件之间的区别吗?** a)qfl 是快速测试功能库文件,而 vbs 是 Microsoft 的 vbscript b)qfl 是不可执行的文件,而 vbs 是可执行文件 c)要在测试设置的 UFT 关联 qfl 文件中使用文件,而要包括 vbs 文件,请使用“执行文件语句” **59)在 UFT 中将数据写入文本文件的代码是什么?** 用 UFT 代码将数据写入文本文件是 ``` Content = “Guru99 Rocks” 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 ``` **60)如何在 UFT 中将数据写入 excel 文件?** 在 UFT 中将数据写入 [Excel](/excel-tutorials.html) 文件的代码为 ``` 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 = “guru99” read value from Excel file ``` **61)如何在 UFT 中创建 TSR 文件?** TSR 表示测试共享存储库,它是创建来共享对象存储库的。 要创建 TSR 文件,请按照下列步骤操作 * 打开对象存储库 * 转到文件菜单 * 转到导出本地对象选项并选择它 之后,UFT 会要求您存储.tsr 文件。 给出路径并保存。 这将在 UFT 中创建.tsr 文件 **62)如何在 UFT 中连接到 QC?** 要与 QC 连接,UFT 提供了直接从 UFT GUI 连接 QC 的选项。 a)转到文件菜单 b)选择(QC)质量中心 c)您将被要求输入-输入质量控制网址 d)输入用户名,密码和项目 执行上述步骤将使您可以与 QC 连接,以后可以从 QC 本身执行测试。 **63)UFT 中的自动化框架类型是什么?** 为了简化使用 UFT 进行测试自动化的过程,设计了测试自动化。 UFT 中主要有三种类型的自动化框架 * **关键字驱动框架:**当需要测试多种功能时使用。 * **数据驱动框架:**用于测试具有不同测试数据的相同流,测试数据比应用程序的多种功能更为重要 * **混合框架:**它是数据驱动框架和关键字的组合。 **64) When we should use descriptive programming in UFT?** 通过对象存储库或描述编程,UFT 可以识别对象。 在以下情况下使用描述性编程 a)用于删除重复的对象。 同一对象存在于应用程序的不同屏幕或窗口中。 如果在这种情况下使用 OR,则必须在 OR 中将同一对象存储在不同的对象层次结构下。 为了应对这种情况,使用了描述性编程 b)在某些情况下,不适合将对象存储在 OR(对象存储库)中。 假设如果要在页面上打印 100 个链接,则不应将所有链接存储在 OR 中。 相反,您应该使用“描述编程”来访问那些链接。 **65)什么是“ settoproperty”,以及何时在 UFT 中使用它?** Settoproperty 代表设置测试对象的属性。 您可以使用此属性在运行时更改对象值。 您可以在运行时期间编辑属性值,但是所做的更改是临时的。 **66)如何在 UFT 中创建字典数组?** 我们可以使用语法创建字典数组 ``` Dim ArrayofDictionary(2) First element of array Set ArrayofDictionary(0)= createobject("scripting.dictionary") ArrayofDictionary(0).Add "key1", "temp1" ArrayofDictionary(0).Add "key2", "temp2" Added keys in first dictionary Second element of array as dictionary Set ArrayofDictionary(1)= createobject("scripting.dictionary") ArrayofDictionary(1).Add "key1", "temp1" ArrayofDictionary(1).Add "key2", "temp2" Added keys in second dictionary…..and so on ``` **67)“数组”和“字典”之间有什么区别?** | 数组 | 字典 | | * 可以使用动态数组 | * 没有动态字典的概念 | | * 在使用数组 之前必须设置数组的大小 | * 不需要设置字典的大小。 | | * 在向动态数组 添加额外元素之前,我们必须使用 redim 语句 | * 要添加额外的元素,无需编写任何语句。 我们只使用添加方法 | | * 如果不需要特定元素,则没有释放内存的特定方法。 | * 不再需要的元素可以从字典 中删除 | **68)什么是 UFT 中的舍入函数?** UFT 中的舍入函数用于舍入小数 ``` Mydecimal = 6.3433333 Roundedvalue= Round(Mydecimal , 3) Print roundedvalue,  it will print 6.343 ``` **69)如何在 UFT 中查找 Web 表中的总行数?** 我们可以通过三种方法在 UFT 中查找表中的行数 a)使用 UFT Webtable 对象的 rowcount 属性 b)使用 UFT 的 GetROProperty c)使用 HTML DOM + UFT **70)如何在 UFT 中创建 Excel 文件?** 步骤将在 UFT 中创建 excel 文件, ``` 'Create a new Microsoft Excel object Set myExcel = createobject("excel.application") 'To make Excel visible myExcel.Application.Visible = true myExcel.Workbooks.Add MyExcel.worksheets(1).Cells(1,1). Value = “Scenario Id” MyExcel.worksheets(1).Cells(1,2).Value = “Scenario Name” MyExcel.worksheets(1).Columns(1).ColumnWidth = 10 MyExcel.worksheets(1).Columns(2).ColumnWidth = 40 MyExcel.worksheets(1).Columns(3).ColumnWidth = 20 MyExcel.worksheets(1).Columns(4).ColumnWidth = 20 MyExcel.SaveAs "c:\guru99.xlsx" MyExcel.close objExcel.Quit blnFlag = False ``` **71)解释以什么方式可以将数据表导出到 UFT 中的 excel?** 要将数据表导出到 excel,有两种方法。 a)DataTable.Export(“ C:\ export.xls”) b)DataTable.ExportSheet“ C:\ mysheet.xls”(如果不存在 excel 文件,则创建新文件) **72)在 UFT 的数据表中,如何从单元格读取值?** 要从单元格中读取值,我们遵循 2 步骤过程 a)第一步设置行指针 b)在第二步中,我们从工作表中定义要读取的参数/列名称 例: 对于此示例,我们在事务处理表中将行指针设置为 2 **Datatable.GetSheet(“ Transactions”)。SetCurrentRow(2)** 现在,我们必须指定要从事务处理表的 module_name 列中读取一个值 **打印数据表值(“ Module_Name,“交易”)** **73)UFT 中有哪些可用的循环,它们的作用是什么?** UFT 中有 3 个循环 a)Do ..... Loop:Do 循环将重复运行语句块 b)For ... Next:For Next 循环将执行一系列语句,直到特定的计数器值为止 c)对于……每个:为了对集合中每个对象的每个语句执行一系列语句,使用了“对于每个循环” While .... Wend 循环:只要给定条件为真,Wend 循环将用于执行一系列语句 **74)UFT 中需要处理哪些类型的错误?** UFT 将面临三种错误类型 a)语法错误 b)逻辑错误 c)运行时错误 **75)处理运行时错误的方法是什么?** 有多种方法可以处理运行时错误 a)使用测试设置 b)在错误声明中使用 c)使用 err 对象 d)使用 Exit 语句 e)恢复方案 f)报告对象 **76)exitaction 和 exititeration 有什么区别?** 当我们想退出某个特定动作时,可以使用 Exitaction,而退出迭代则可以从某个动作的特定动作迭代中退出。 **77)在 QTP 中,如何从字符串中删除空格?** 您可以使用**替换功能**从 QTP 中的字符串中删除空格 打印替换(“ sdsd sd sd s”,““,”””) 输出将是 sdsdsdsds **如果仅需要删除字符串中的前导空格,则可以使用 Itrim 函数** 打印 Itrim(“ sdsd sd s”)à输出将为**“ s** dsd sd **s”** 您可以使用 rtrim 函数从字符串中删除尾随空格 打印 rtrim(“ sdsd sd s”)à输出将为“ sdsd sd **s”** **78)在 QTP 中,如何从字符串中获取最后一个字符?** 获取 QTP 中字符串的最后一个字符的代码 印刷权(“ junior,1)”à输出将为“ r” **79)如何在 QTP 中添加同步点?** 我们可以通过 4 种方式在 QTP 中添加同步点 a) **Wait 语句**:此语句将暂停执行 x 秒,直到对象出现 b)**等待属​​性**:此方法将等待直到对象的属性取特定值 c)**存在语句**:该语句将等待直到对象变为可用 d)**同步方法**:代码将等待直到浏览器页面完全加载。 对于 Web 应用程序测试,使用此方法。 **80)在 QTP 中解释什么是加密对象** QTP 中的加密对象用于加密字符串。 **语法** 加密。加密(“ Guru99”) **范例:** 在此示例中,使用加密算法对 pwd 变量中的值进行加密。 加密方法。 然后将此加密的值输入到 editbox。 ``` pwd= “myvalue” pwd = Crypt.Encrypt (pwd) Browser(“myb”).WinEdit (“pwd”). SetSecure pwd ``` **81)提到 Excecute 文件和 loadfunction 库之间有什么区别?** 在执行文件中,我们无法调试语句。 使用 loadfunction 库,可以调试语句,还可以加载多个库文件。 **82)解释如何在 QTP 中找到数组的长度?** 在 QTP 中找到数组长度的代码是 打印(ubound(arr)+1) Ubound 返回数组中的最后一个索引-因此数组的长度将为+1。 这将是数组中元素的总数 **83)提到 QTP 中有哪些不同类型的记录模式? 什么时候使用?** QTP 支持 3 种类型的记录模式 a)普通模式:这是默认的记录模式,用于大多数自动化活动。 无论它们在屏幕上的位置如何,它都能识别对象。 b)低级记录模式:对于记录未被 QTP 正常模式识别的对象很有用。 它记录了鼠标操作的确切 x,y 坐标。 c)模拟模式:此模式对于记录签名,绘制图片,拖放操作等操作很有用。 **84)您可以通过哪种方式从一个动作调用到另一个动作?** 您可以通过两种方式从一个操作调用到另一操作 a)调用动作副本:在此,脚本和数据表动作对象存储库将被复制到目标测试脚本 b)调用现有操作:在这种情况下,不会复制脚本数据表和对象存储库,而是将对源脚本中的操作进行调用引用 **85)QTP 中的可选步骤是什么? 如何在 QTP 中添加可选步骤?** 运行测试时,该测试无法打开对话框,QTP 不一定会中止测试运行。 它会通过指定为“可选”的任何步骤,并继续运行测试。 默认情况下,QTP 自动标记为打开某些对话框的可选步骤。 为了在关键字中设置可选步骤,请右键单击并选择“可选步骤”。 可选步骤的图标将在下一步中添加。 在专家视图中添加可选步骤,将可选步骤添加到 VBScript 语句的开头。 **86)如何在 QTP 中定义数组?** 可以在 QTP 中以 3 种方式定义数组 a)在 QTP 中固定大小的数组 点心 A(10)-单一尺寸 Dim MyTable(5,10)–多维 b)动态数组大小不固定 Dim MyArray()ReDim MyArray(25) c)在 QTP 中使用阵列功能 A =数组(10,20,30) B = A(2)’B 现在是 30 **87)如何在 QTP 中将上下文写入文本文件?** ``` Content = “Guru99” Set Fo = createobject(“Scripting.FilesystemObject”) Set f =Fo.openTextFile(“c:\abc.txt”, 8,true) f.Write (contents) f.Close Set f= nothing ``` **88)在 QTP 中使用“选项明确”关键字时?** 要指定必须在 QTP 中使用之前声明所有变量,请使用``Option Explicit''关键字。 **89)在 QTP 中如何退出循环?** 您必须使用“ Exit For”语句退出 QTP 中的“ for 循环”。 “ Exit For”语句将使控件脱离“ for 循环” ``` For count= 1 to 3 TempNum= mid(Tempstr,count,1) If isnumeric(TempNum) Then LenghtNum = LengthNum & TempNum Else Exit For End If Next GetStrLenNumber = LengthNum ``` **90)如何在 QTP 中查找数组大小?** 通过使用以下代码 Print(ubound(arr)+1)可以找到 QTP 中数组的大小。 Ubound 返回数组中的最后一个索引-因此数组的大小将为+1 **91)在 QTP 中,请解释什么是 qrs 文件?** qrs 表示**“最快的恢复方案”** 。 通过使用恢复方案管理器,我们可以处理测试执行中的异常。在 QTP 中,使用恢复方案管理器,我们可以处理测试执行中的异常。 在 QTP 中创建恢复方案时,必须将其保存在.qrs 文件中。 qrs 文件中可以定义任何数量的方案。 **92)QTP 中“动作 0”的意义是什么?** 当您在 QTP 中与动作 1 一起创建新测试时,默认情况下会创建``动作 0''。要确定我们调用其他动作 1,2,3 等的顺序,请使用动作 0。 **93)解释如何在 QTP 中替换字符串?** 要在 QTP 中替换部分字符串,我们将使用如下示例所示的代码, ``` Str = (Guru99) Suppose if you want to replace “99” with “88” then the code will print replace(str,“99”, “88”) output will be “Guru88” ``` **94)QTP 中可用的各种自动化框架是什么?** QTP 中可用的各种类型的自动化框架是 a)线性脚本 b)测试库架构框架 c)数据驱动测试框架 d)关键字驱动或表驱动测试框架 e)混合测试自动化框架 **95)什么是“对象间谍”?在 QTP 中,对象间谍的功能是什么?** “对象间谍”是 QTP 中的一项功能,您可以使用它查看测试和运行时对象的属性和方法。 **96)什么是“ GetROProperty”,使用 GetROProperty 涉及哪些步骤?** “ GetROProperty”是一种内置方法,用于检索对象属性的运行时值。 要使用 GetRoProperty,它涉及四个步骤 a)在对象存储库中记录要在其上使用 GetROProperty 的对象 b)标识可以使用的记录对象的运行时属性 c)检索标识的运行时属性并将值存储在变量中 d)使用此值进行进一步扣除 **97)请解释如何在 QTP 中找到数字的绝对值?** 要找出数字的绝对值,可以使用 QTP 中的内置函数 ``` Example-   a= -1 Print abs(a) ‘output will be 1 ``` 该代码将找到数字的绝对值 **98)如何检查数据表中是否存在参数?** 为了检查数据表中是否存在参数,我们将使用代码 ``` on error resume next val=DataTable(“ParamName”, dtGlobalSheet) if err.number<>0 then ‘Parameter does not exist’ else ‘Parameter exists end if ``` **99)在 QTP 中解释什么是关键字驱动的自动化框架?** 在关键字驱动的自动化框架中,重点主要放在关键字/功能而不是测试数据上。 这意味着完全专注于创建映射应用程序功能的功能。 **100)在 QTP 中,如何使用 Xpath 识别对象?** Xpath 只能用于识别 Web 对象。 我们可以使用以下代码来标识对象。 ``` Set oPage=Browser(“myGoogle”).Page(“myGoogle”) oPage.WebEdit(“xpath:=//INPUT[@name=‘nameofeditbox’]”).Set “search term” ‘Enter value in google edit box ``` ***在这里您可以获得 3 个问题的奖励:-)*** **101)请解释如何删除 QTP 中的 excel 文件?** 要在 QTP 中删除 excel 文件, ``` Set fo = createobject(“Scripting.filesystemobject”) fo.deletefile(“C:\xyz.xlsx”) Set fo=nothing ``` **102)哪些因素会影响位图检查点?** 位图检查点受屏幕分辨率和图像大小的影响。 **103)什么是可访问性检查点?** 万维网联盟(W3C)提出了一些有关基于 Web 的技术和信息系统的说明和准则,以使残障人士易于访问网络。 例如,标准规定图像必须带有“替代文字”。 因此,访问该网站的盲人将使用文本到语音的转换器,并且如果看不到图像,则至少会了解图像的含义。 所有这些标准都由可访问性检查点检查。