我们倾向于重用代码和函数块来使事情变得更容易,那么为什么不也重用 UI 对象呢?由于这个原因,大多数测试自动化工具都允许您使用对象存储库。
作为一名自动化开发人员,当我们从手动测试团队或客户那里听到他们如何通过使用我们构建的自动化而受益时,我们难道不会感到满足吗?为此,我们保证提供高质量的自动化套件,该套件不仅功能强大,而且还可以轻松适应任何业务/技术要求变化所需的更新。
维护应该很容易——这是我们不断提醒自己的。有哪些方法可以确保这一点?
在我们确保测试自动化套件高质量的多种方法中,一种方法是确保可重用性——不仅通过重用常用的测试步骤,而且还重用常用的 UI 对象。在本文中,我将解释如何使用对象存储库通过在 UI 测试自动化项目中重用对象来增强可重用性。
自动化测试中的对象存储库是什么?
当您第一次开始设计测试自动化套件时,我们大多数人都会确保我们不会重写代码块。为此,我们构建可重用的函数,使可重用的代码块在代码库中可用。但是,您是否重复使用了常用的 UI 对象?如果没有,让我解释一下如何通过将对象存储库作为基础来做到这一点。
对象存储库是通常关联在一起的 UI 对象的集合。这不仅增强了可重用性,而且还确保了自动化套件中 UI 元素的可靠性和管理。
在构建测试自动化脚本时,您会将测试脚本步骤与每个 UI 对象相关联。例如,通过
在文本框 UI 对象中键入内容
从 Label UI 对象中检索文本
单击超链接对象..等等。
现在,如何通过重用脚本所处理的 UI 对象来增强可重用性?
好吧,如果您使用的测试自动化工具有一个“对象存储库”,那就很容易了。使用对象存储库,您可以整理 UI 对象,并以有组织的方式从该存储库添加、删除、管理或更新 UI 对象。您最终可以通过引用这些对象来重新使用它们。
让我们分析一下您在测试自动化套件中未使用 OR 的情况。在这种情况下,对于使用相同 UI 小部件的单独测试自动化脚本,您可以将同一 UI 对象的多个副本添加到每个测试脚本中以对其执行活动。
现在,让我们考虑一个确实使用 OR 的情况。在这种情况下,您将拥有一个用于存储 UI 对象的位置/存储库。这样,在每个需要对同一 UI 对象/小部件执行操作的测试脚本中,它会将其关联到 OR 中存储的同一 UI 对象。测试套件中只有一份 UI 对象副本,多个测试脚本引用/调用同一 UI 对象。这就是可重用性发挥作用的地方!
它为什么如此重要?
我第一次使用 OR 的经历是在 IBM Rational 功能测试自动化工具中使用它时。从那时起,每当我学习一个新工具时,我都会期待检查该工具是否具有 OR 功能。
我第一次使用 OR 是在我们的团队自动化一个包含多个页面的大型管理 Web UI 控制台时。我们有 100 多个测试用例需要自动化。如果我们没有使用 OR,那么自动化将是一个巨大的挑战。我们分析并得出结论,我们想要构建的测试自动化套件是使用 OR 的理想案例。
原因
1.我们自动化的每个测试用例都有几个共同的子流程,因此具有共同的关联 UI 小部件。
由于存在公共子流程,因此场景中存在明显的公共 UI 对象。我们不想一遍又一遍地添加相同 UI 对象的副本,因此我们决定重新使用 UI 对象。
例如,在执行一组步骤之前,一组测试用例必须浏览相同的导航菜单链接。因此,我们计划有一个存储库,命名为仅存储和管理所有导航链接。然后我们就可以在 OR 文件中重复使用导航菜单链接。
2.我们获悉,未来可能会出现UI更新的情况——超链接、标签等。
因此,我们希望确保当发生此类 UI 更新时,测试自动化套件能够轻松更改,并且任何维护工作都应该快速且轻松。
这就是 OR 来拯救我们的地方:我们不必对同一 UI 对象的每个副本中的 UI 对象存储库进行更改。每当发生更改时,我们只需更新 OR 中的一个关联对象,测试脚本就会根据更新后的 UI 对象运行。
3. 我们必须在一个月内构建一个包含 100 多个脚本的测试自动化套件!
这就是使用 OR 的另一个优点:通过采用构建 OR 的方法,我们所有人都不必重新添加相同的 UI 对象,我们节省了时间。我们构建了一个组织良好的 OR,我们所要做的就是围绕我们在 OR 中组织的对象构建我们的代码。
我们专注于测试用例的目标和测试用例的业务逻辑,而不是浪费时间重新发明为每个测试脚本添加对象的轮子。我们节省了时间,最终在一个月的目标时间内交付了测试自动化套件!
使用对象存储库时应遵循的最佳实践
既然您知道 UI 对象存储库会有所帮助的情况,您不想知道是什么让它点击吗?
1.作为一个团队,建立可重用性的共同目标。一起了解为什么它最终可以帮助您的自动化团队、手动测试团队和客户。
2.在开发测试自动化套件时,作为一个团队,始终保持同步并了解您正在构建的对象。制定一套大家都将遵守的分组规则和命名约定。当您开始时,您可以制定一个关于如何组织和存储每个 OR 文件的计划。例如,OR 文件中的导航菜单对象、另一个 OR 文件中的登录页面 UI 对象等。此外,您还可以决定对象的命名约定,以便轻松查找它们。
3.确保以可读、易于查找和关联的方式命名 UI 对象。以这样的方式命名 UI 对象,以便任何其他扫描 UI 存储库以更新它的人都应该能够轻松找到 UI 对象。在下面的例子中,我将展示一种这样的情况。
如何创建对象存储库(示例)
现在让我们来看看如何快速开始使用对象存储库。UFT、IBM RFT、UiPath 测试自动化套件和 Power Automate 等工具中都有对象存储库。那么,为什么还要等呢?相信我,这非常简单!
以下是我针对 QAL 网站创建了一个 OR 的示例:
观察上面的 UI – 我将与在登录 UI 小部件上执行操作相关的所有小部件分组在一起,因为它们在多个测试用例中很常见。接下来,我将导航链接分组在一起。如果我们将这些对象记录在一组中,那么当所有测试脚本在每个测试用例开始时肯定会使用这组UI链接对象时,这些对象可以被重用,而不用将它们重新添加到存储库中
在 UiPath 中使用对象存储库的示例
以下是对象存储库在 UiPath 工具中的外观:
UiPath 中的对象存储库示例。
在对象存储库的这个示例中,我将“登录页面”对象组织到一组中,并将“主导航链接”组织到另一组中。有了这个,如果我要构建几个测试脚本来(比方说)测试登录页面,我会让所有测试脚本“调用”我放置在“登录页面”中的相同对象。
在 PowerAutomate 中使用对象存储库的示例以下是对象存储库在 PowerAutomate 工具中的外观:
PowerAutomate 中的对象存储库示例
正如我之前提到的,可重用性的关键还在于确保为以后可以轻松找到的对象命名。观察“meprmath_quiz”UI 对象。与其他字段不同,我们无法真正轻松地识别它引用的是哪个 UI 对象。
因此,在上述情况下,虽然当我为“quiz”文本框添加 UI 对象时,它显示的字段名称为“meprmath_quiz”,但我们也许可以将其命名为“login_add”左右,以使对象变得简单在自动化和维护手术室的同时进行定位。
那么,您如何在您最喜欢的测试自动化工具中使用 OR 呢?我们很想知道。
我希望这篇文章可以帮助您了解 OR,从长远来看如何帮助团队。我们很幸运,我们所处的时代大多数测试自动化工具都具有 OR 功能。
因此,您所要做的就是在您最喜欢的工具中探索它是如何工作的!
领取专属 10元无门槛券
私享最新 技术干货