本地和共享对象存储库 QTP/UFT

⚡ 智能摘要

对象存储库 QTP/UFT 一个存储工具用于识别您的应用程序的测试对象和属性,它有两种形式:每个操作一个本地存储库和一个可重用的共享存储库。

  • 🔘 测试对象模型: QTP 在录制过程中学习对象属性,并在播放过程中将其与运行时对象进行比较。
  • ☑️ 默认本地化: 每个操作都从其自身的本地存储库开始,该存储库以 ObjectRepository.bdb 的形式保存在操作文件夹中。
  • 共享存储库可扩展: .tsr 文件存在于测试之外,可以与多个测试中的许多操作相关联。
  • 🧪 三个主要步骤: 创建存储库,将其与您的操作关联,然后通过对象存储库管理器对其进行编辑。
  • 🛠️ 只读保护: 在管理器中,共享存储库默认以只读方式打开,直到选择“文件”>“启用编辑”。
  • 📌 当前名称: QTP 现在 OpenText 功能测试(UFT 一),但存储库菜单和文件格式保持不变。

本地和共享对象存储库结构 QTP 和 UFT 一个

什么是对象存储库? QTP?

对象库 是测试对象和信息的集合,可被识别。 QTP 感谢您为此付出的努力。当用户录制测试时,默认情况下会捕获对象及其属性。

由于自动化的每个步骤都必须指向一个存储的对象,因此存储库决定了应用程序更改后脚本是否继续运行。首先要了解对象是如何到达存储库的。

物体识别是如何工作的? QTP?

  • QTP 使用类似“人类”的技术 物体识别
  • Record 时间, QTP 尝试了解对执行操作的 GUI 对象的属性。
  • 在运行时, UFT 将存储的对象属性与屏幕上可见对象的实际属性进行比较,即可唯一标识一个对象,而无需考虑其在屏幕上的位置。
  • 存储的对象及其属性被称为 测试对象
  • 在运行时,被测应用程序中实际可用的对象被称为 运行时对象
  • 这是 快速测试 “测试对象模型”
  • 测试对象的信息存储在对象库中。
  • 插件通过预先告知 QuickTest 要记录的对象的特性来提供帮助,从而减少 QuickTest 学习其属性所需的时间。

通过以下视频中的示例学习对象识别

点击 开始 如果视频无法访问

对象存储库的类型

对象存储库有两种类型 QTP

  1. 本地对象存储库
  2. 共享库

两者仅在一点上有所不同:对象的归属权。本地仓库属于单个操作,而共享仓库是一个独立的文件,任何操作都可以借用它。

本地对象存储库

  • 本地对象存储库是默认的对象存储库
  • 它特定于动作,并且只能用于特定动作
  • 当应用程序不随时间动态变化时,本地对象存储库是更佳选择。
  • 本地对象库无法重用
  • 您可以在本地对象库中执行许多操作,例如:
    • 突出显示被测应用程序存储库中存储的对象
    • 检查 AUT 中的特定对象是否存储在对象存储库中
    • 剪切、复制、粘贴、修改和删除对象
    • 如果您不小心修改了属性的值,可以使用更新功能从应用程序中更新其描述。

以下视频演示了如何使用本地对象存储库。

共享对象存储库:创建、关联、编辑

  • 当应用程序是动态的且对象描述频繁更改时,全局对象存储库或共享对象存储库是更佳选择。
  • 在共享对象存储库和本地对象存储库中,共享对象存储库在自动化项目中更为常用。
  • 但是,与本地对象存储库相比,它存在维护和管理方面的开销。

要创建和使用共享对象存储库,您需要执行三个主要步骤

  • 创建共享对象存储库
  • 关联共享对象存储库
  • 编辑共享对象存储库

让我们逐一看一下

步骤 1)创建共享对象存储库

  • 默认情况下,所有存储库均为本地存储库。要创建共享对象存储库,请在“对象存储库”对话框中进行操作。 Box,点击 文件 > 导出本地对象
  • 存储库文件具有扩展名。 .tsr取一个合适的名字,比如“guru99”,然后保存。
  • 共享存储库文件现已创建

步骤 2)关联共享对象存储库

  • 下一步是将存储库与你的测试关联起来,这样你就可以使用它了。
  • 要将存储库与测试关联,请单击 资源 > 关联存储库 (已标记) 关联存储库 现在 UFT (一个版本)
  • 您可以选择与测试中可用的操作关联的存储库。
  • 现在您可以使用此共享存储库来开发您的测试。

步骤 3)编辑共享对象存储库

  • 您可以使用对象库管理器来编辑共享库。
  • 选择 资源 > 对象库管理器打开我们创建的对象库“guru99”。
  • 默认情况下,存储库以只读模式打开。要启用编辑功能,请单击 文件 > 启用编辑
  • 启用编辑功能后,您可以执行所有操作,例如剪切、复制、粘贴和重命名对象,这些操作在对象库中也可以执行。
  • 使用对象库管理器,您还可以比较两个对象库。 QTP 报告统计了两个存储库中哪些内容是独有的,哪些内容是共同的。
  • 您可以使用对象库合并工具将两个对象库合并为一个。

以下视频将详细介绍共享存储库的工作流程。

本地对象存储库和共享对象存储库的区别

大多数团队最终都会同时运行这两种类型,因此在决定新对象属于哪个位置之前,在一个地方看到权衡取舍会很有帮助。

标准 本地对象存储库 共享库
可用性 每次操作都会自动创建 必须先创建,然后将其与某个操作关联。
适用范围 每个操作对应一个存储库;仅供该操作使用。 一个文件可供多个测试中的多个操作使用
文件格式 已保存 对象存储库.bdb 在操作文件夹内 已保存为外部文件 .tsr 文件
编辑 可直接在对象库窗口中编辑 默认情况下为只读;可通过对象库管理器进行编辑。
重用 不可重复使用 专为重用和版本控制而设计
维护 每次操作都必须修复已更改的属性 对于每个关联的测试,更改后的属性只会固定一次。
最适合 小型、稳定的应用程序和单动作学习测试 涉及多名自动化工程师的大型或动态应用

简而言之,本地代码库启动速度更快,而共享代码库维护成本更低。学习测试和一次性检查可以保留在本地;任何其他人会运行的代码都应该放在共享代码库中。 .tsr 文件中。

如何直接向共享对象库添加对象

导出本地对象只是实现目标的一种途径 .tsr 文件。如果您已经知道套件需要哪些控件,那么先构建共享存储库,完全不进行录制会更快。

  1. 选择 资源 > 对象库管理器 打开管理器窗口。
  2. 选择 文件>新建 创建一个空的共享存储库,或打开一个现有的共享存储库。 .tsr 文件并选择 文件 > 启用编辑.
  3. 使用 添加对象 可以选择指向被测应用程序中要学习的控件,然后确认选择。
  4. 对套件涉及的每个控件重复此操作,并随时将对象重命名为易于理解的名称。
  5. 选择 文件>保存 并将该文件与测试文件一起存储在源代码控制文件夹中。
  6. 回到测试中,选择 资源 > 关联存储库 并将该文件附加到每个需要该文件的操作中。

两种习惯使这种方法卓有成效。首先,根据对象的业务角色而非其描述来命名对象,因为描述比角色更容易更改。其次,为每个应用程序屏幕或模块维护一个代码库,而不是使用一个巨大的文件,因为较小的代码库加载速度更快,合并冲突也更少。

常见问题

本地对象库以 ObjectRepository.bdb 的形式存储在其操作文件夹内。共享对象库以独立的 .tsr 文件形式存储,该文件位于测试之外,并且可以提交到源代码控制系统中。

是的。打开对象库窗口,选择“文件”,然后选择“导出本地对象”。 QTP 将操作对象写入 .tsr 文件,然后您可以将该文件与任何需要这些对象的操作关联起来。

是的。“关联存储库”对话框每次操作可接受多个 .tsr 文件,并允许您设置它们的优先级顺序。如果同一个对象名称出现两次,则列表中排名靠前的存储库优先。

对象库管理器默认以只读模式打开共享文件,以防止两位工程师互相覆盖对方的文件。选择“文件”,然后选择“启用编辑”以获取写入锁,并在编辑完成后关闭文件,以便其他同事可以进行编辑。

AI辅助识别 UFT 该方法通过视觉外观和标签文本而非固定属性来匹配控件,因此重命名类不再会导致步骤中断。此外,在用户界面更改后,自愈建议还会标记过时的存储库描述。

Copilot 可以生成周围的 VBScript 逻辑、循环和报表,但它无法访问您的存储库。对象名称仍然必须来自存储库本身,因此请将生成的层次结构视为占位符,并使用以下命令验证每个层次结构: 对象间谍.

不,它们是互补的。 Descript实战编程 它在运行时以代码形式构建对象描述,这适用于动态控件,而存储库仍然是稳定屏幕和可读脚本的更好选择。

在对象库管理器中打开这两个文件,然后运行对象库合并工具。它会报告哪些对象是相同的,哪些对象是唯一的,然后让您解决每个冲突,最后写入合并后的 .tsr 文件。

总结一下这篇文章: