引用
R. M. L. M. Moreira and A. C. R. Paiva, ‘PBGT tool: an integrated modeling and testing environment for pattern-based GUI testing’, in Proceedings of the 29th ACM/IEEE international conference on Automated software engineering - ASE ’14, Vasteras, Sweden, 2014, pp. 863–866, doi: 10.1145.
摘要
基于模型的 GUI 测试(PBGT)是一种旨在使 GUI 测试过程系统化和自动化的新方法。PBGT Tool 提供了集成的建模和测试环境。该环境支持基于 UI 测试模式设计的测试模型。该工具以 Eclipse 插件的形式免费提供使用。目前,PBGT Tool 已成功用于多个项目中,并且最近已在工业级别中进行使用。
1 介绍
如今,大多数软件应用程序都具有图形用户界面(GUI)。用户可以在 GUI 中执行非常多的事件序列。因此,测试 GUI 的正确性是非常有必要的。GUI 通常使用 UI 模式进行实现。根据期望的目的,可以实现不同的 UI 模式。例如,身份验证功能是登录 UI 模式的表示。此 UI 模式的典型实现包括两个输入字段(用户名和密码) 以及一个提交按钮。此外,“提交”按钮还可以带有其他按钮,例如“清除”或“保持登录状态”之类的按钮。提交此数据可能会触发多个结果。验证失败后,系统可能会在表单的特定区域中显示错误消息,或显示带有错误消息的弹出窗口。对于成功登录,我们仍然有不同的实现方式。最终用户可以重定向到其他位置,或者仍然停留在同一位置,但使用不同的 UI 从而启用更高的特权。
PBGT 是一种新的基于模式的 GUI 测试方法,它提供了通用的测试策略(UI 测试模式),并使用不同的配置来测试 UI 模式的不同实现。
本文介绍了 PBGT Tool(可以在 apaiva/tool 中找到演示视频),该工具是完全集成的测试环境。它提供了建模及配置功能、自动生成测试用例、自动执行测试用例并分析测试覆盖率。我们已经对该工具进行了多个案例研究,并且在案例中,测试人员仅仅需要几个小时就能发 现软件中的故障。目前,该工具可以用于 web 应用和基于 Android 的移动应用。
本文的其余部分的结构如下:第 2 部分概述了 PARADIGM 语言、PBGT 组件以及 PBGT 的使用流程。第 3 节介绍了相关背景以及相关工作。第 4 节讨论了 PBGT Tool 对社区的潜在影响。第五部分做了结论并指出未来的研究方向。
2 综述
PBGT 是一种新兴的基于模式的 GUI 测试方法,旨在使 GUI 测试过程系统化和自动化。UI 测试模式是
PARADIGM 中的一部分。PARADIGM 可以构建更高抽象水平的模式,这些模式描述了 GUI 的测试目标。
PBGT 能够根据这些模式自动生成测试用例,并执行它们。
2.1 组件
PBGT Tool 由五个主要组件组成:
- PARADIGM:一种基于 UI 测试模式构建 GUI 测试模型的领域特定语言;
- PARADIGM-RE:逆向工程组件,其目的是从网页中提取 PARADIGM 模型,而无需访问源代码;
- PARADIGM-TG:一个自动化生成测试用例的组件,该组件从 PARADIGM 模型中构建测试用例;
- PARADIGM-TE:测试用例执行组件,用于分析测试用例的覆盖情况并返回详细的执行报告;
- PARADIGM-ME:支持测试模型的构建和配置的建模环境。
2.2 PARADIGM
图 1: PARADIGM 的初始模型
PBGT 需要使用 PARADIGM 编写的 GUI 模型。PARADIGM 的目的是收集 UI 测试模式,并提供一种在不同抽象级别上构造模型的方式。
使用 PARADIGM 的目的是使得 UI 测试模式可以适应不同的 UI 模式实现。此外,该语言还通过重用或扩展现有元素来提高其可重用性。
2.2.1 元素
PARADIGM 的元模型如图 1 所示。用 PARADIGM 编写的模型以 Init 元素开始,以 End 结尾。PARADIGM 模型可以被构建为不同的抽象级别。为此专门提出了结构化的 Form 元素。Form 元素是具有 Init 和 End 元素的模型。Groups 元素也是结构化的元素,它们用于收集可以执行的元素。Behavioral 元素为 UI 模式的测试指定相应的通用测试策略。
2.2.2 连接器
PARADIGM 语言定义了三种连接器:(1)一般连接器:它指示了目标元素无法在完成源元素的测试之前开始;(2)数据传递连接器:具有与一般连接器相同的行为,此外,它指示目标元素从源元素中接收数据;(3)移动数据连接器:与数据传递连接器具有相似的含义,但是,源元素将数据传输给目标元素后就会丢失已传输的数据。依赖是另一种类型的连接器,指示了目标元素取决于源元素中的哪些属性。
2.2.3 UI 测试模式
UI 测试模式提供了通用的测试策略来测试 UI 模式的不同实现。UI 测试模式对应于 PARADIGM 元模型中的
Behavioral 元素(图 1)。
UI 测试模式描述了一种通用的测试策略,该策略由一组测试目标定义,表示为
Goal 是测试的 ID;V 是将测试输入与测试中涉及的变量进行关联的一组映射;A 是在测试用例执行期间执行的动作序列;C 是在测试用例执行期间执行的一组可能的检查;P 是一个布尔表达式,定义了一些条件,当特定的变量达到这些条件时,才开始执行测试。
PARADIGM 语言具有 7 个基本的 UI 测试模式:
- 输入:此模式应用于测试输入字段中哪些输入有效、哪些输入无效;
- 登录:此模式应用于验证用户身份验证。目的是检查是否可以使用有效的用户名/密码进行身份验证;
- 母版:此模式应用于测试两个相关的对象,以验证是否更改了母版的值或是否正确更新了内容;
- 查找:此模式的目的是检查搜索结果是否是正确的集合;
- 排序:此模式用于检查排序操作的结果是否正确;
- 调用:此模式应用于检查相应的调用的行为,例如,检查当点击某链接时是否打开了正确的页面;
- 选项集:此模式应用于检查当选择了多个选项后的预期行为。
2.2.4 约束
除了语法之外,PARADIGM 模型还必须支持根据不能在 UML 模型中直接表达的一组约束来构建。为了找到并调整这些约束,我们将 PARADIGM 元模型(图 1)转换为 Alloy 模型。通过转换,我们可以分析生成的实例。当从 Alloy 模型中获得的实例与 PARADIGM 模型相对应时,迭代过程结束。
2.3 使用流程
PBGT 使用流程主要包括六个主要步骤:(1)建模;(2)配置;(3)生成测试用例;(4)执行测试用例;(5)结果分析和(6)模型更新。测试用例的生成和执行都是完全自动化进行的。建模阶段可以手动执行,也可以自动执行,通过逆向工程过程从现有的软件中获取模型。自动建模是由 PARADIGM-RE 组件完成的。该组件将探索被测试的应用程序,并推断出一组现有的 UI 模式,然后建立一个适合于测试它们的 PARADIGM 模型。
在前向开发过程中,测试人员可以在需求确定阶段开始构建应用程序测试模型,并在开发过程中逐步更新
这个模型。之后,测试人员使用所需的数据配置每个 UI 测试模式。然后,使用 PARADIGM-TG 组件生成测试用例。首先计算模型中 Init 元素和 End 元素之间的所有路径。从这些路径中,考虑到测试人员先前提供的配置,生成测试案例。在执行测试前,必须事先在 UI 测试模式和被测 Web 应用程序的 UI 模式之间建立映射。
在建立映射的过程中,Selenium Web 驱动程序将保存 Web 元素的信息。除某些属性外,PBGT Tool 还通过 Sikuli 保存元素的图像及其区域坐标。
建立映射后,PARADIGM-TE 将在被测应用程序上执行生成的测试用例,并生成包含测试结果的报告。
3 对社区的影响
PBGT Tool 最近已公开发布。PBGT 的目标之一是促进行业中更多的人接受基于模型的测试过程。在我们看来,根据收到的反馈,以下方面可以视为推动的力量:
- 可重用性问题:UI 测试模型可在 GUI 建模和测试过程中重用;
- 减少工作量:与其他 GUI 建模方法相比,PBGT 可以在短时间内制作和配置模型;
- 目标:典型的基于模式的 GUI 测试工具将重心放在对应用程序的行为进行建模。PBGT 的重点是对测试目标进行建模;
- 与平台无关:PBGT Tool 可用于 Web 应用程序以及移动应用程序;
- 不需要源代码:PBGT Tool 不需要访问被测系统的源代码,即可从中生成 GUI 模型;
- 维护成本低且易于发展:只需很少的步骤,就可以扩展 UI 测试模式的初始集合,并可以调整当前的测试策略以支持新的 UI 趋势;
- 使用简单:几乎不需要测试活动相关的知识,用户可以在短时间内开始建模和测试软件。
4 相关工作
目前,已经有一些基于模式的用于 GUI 测试的工具。但是,大多数人从一开始就没有考虑可重用性。此外, 有些工具不提供扩展机制,并且只有在以特定语言实现 GUI 的情况下才能生成模型。
GUITAR 是 MBGT 的一种流行工具。使用此工具可直接从可执行文件中生成模型。它使用事件流图来创建 GUI 模型、捕获事件流,并在 UI 中包含所有可能的事件交互。
可以使用 Spec #进行 GUI 的建模,Spec #是微软研究院开发的一种规范语言。Spec #模型是 Spec
Explorer(一种高级的基于模型的测试工具)的输入。它可以自动生成和执行测试用例。GUI mapping tool 是 Spec Explorer 工具的扩展。该工具用于基于模式的 GUI 测试,旨在使用模拟用户操作的方法自动生成.Net 程序集。
其他方法使用例如有限状态机、GUI 测试自动化模型自动创建状态模型。
5 结论及未来工作
本文介绍了 PBGT Tool,这是一个基于模式的新 GUI 测试工具,它提供了一个集成的建模和测试环境。该工具已在多个项目以及行业级别使用。
本文中描述的 7 个 UI 测试模式,且已被证明足以为各种 Web 应用程序和移动应用程序建模。但是,考虑到后者,我们通过增加 UI 测试模式集来测试特定的移动应用事件。此外,目前,PBGT Tool 还无法测试桌面应用程序和 iOS 应用程序。我们的目标是在不久的将来为这些应用程序开发和集成驱动程序。
我们还打算通过广告和现场演示来推广该工具,以便它可以促进行业的进一步使用。
致谢
本文由南京大学软件学院 2020 级硕士张松涛转述 感谢国家重点研发计划(2018YFB1003900)和国家自然科学基金(61832009,61932012)支持!