关于 SAP UI5 应用的自动化测试方法

简介: 原文:state of testing in UI5: OPA5, UIVeri5 and wdi5

测试作为确保 UI5 应用程序开发投资的一种手段已经变得越来越普遍。

为了进一步推动这个问题,让我们评估 UI5 中最突出的端到端测试框架。

image.png

所有这三个都允许测试面向用户的功能,“像用户一样”操作 UI5 应用程序:与 UI 元素交互。


UIVeri5 和 wdi5 都可以远程控制浏览器。 也就是说,它们有一个不同于 UI5 应用程序的运行时。 因此,两者都需要一个(网络)服务器,以便连接到运行测试中的 UI5 应用程序。


OPA5 的不同之处在于它与 UI5 应用程序共享相同的运行时——它与被测 UI5 应用程序相邻工作,而不是分开。


(QUnit 不在本文中,因为我们专注于运行面向用户的测试,而不是纯粹的功能测试。)


此外,wdi5 允许在移动设备上测试混合应用程序。 它可以连接到 iOS、Android 和 Electron 上使用cordova 封装的UI5 应用程序,并运行与基于浏览器的应用程序相同的测试。


OPA5

OPA5 自带 UI5,不需要额外的安装步骤。 然而它的设置并不直观,混合了 OPA5 的基本 QUnit,并且需要几个包含级别。


下面是一些例子:


webapp/test/integration/opaTests.qunit.html:

  <!-- ... -->
  <script src="opaTests.qunit.js"></script>
</head>
<body>
  <div id="qunit"></div>
    <!-- ... -->
sap.ui.getCore().attachInit(function () {
  "use strict";
  sap.ui.require([
        // all test suites aggregated in here
    "test/Sample/test/integration/AllJourneys"
  ], function () {
        // `OPA5`'s mama :)
    QUnit.start();
  });
});
sap.ui.define(["sap/ui/test/opaQunit", "./pages/Main", "./pages/Other"], function (opaTest) {
    "use strict";
    QUnit.module("Binding Journey");
    QUnit.module("Other view: PeopleList: items aggregation");
    opaTest("bound status", function (Given, When, Then) {
        Given.iStartMyApp();
        When.onTheAppPage.iPressTheNavButton();
        Then.onTheOtherView.iShouldSeeTheList().and.theListShouldBeBound();
    });
// ...

使用下面的 url 启动:


http://localhost:1081/test/integration/opaTests.qunit.html


uiveri5

UIVeri5 需要 Node.js >=8 并通过标准 npm 命令 npm install @ui5/uiveri5 安装。


然后通过配置文件和包含测试代码的文件进行设置——确保两者都在同一个文件 sys 文件夹中。


配置文件:


exports.config = {

   profile: "integration",

   baseUrl: "http://localhost:1081/index.html"

};

1

2

3

4

然后可以启动 UIVeri5


首先启动网络服务器:yarn dev(或yarn start:ci)

yarn test:uiveri5

OPA5 速度快于 UIVeri5,因为它与 UI5 共享运行时,从而节省了基础设施开销,例如启动浏览器本身。然而,当需要更高级的测试行为时,它很快就会达到其极限,例如 UI5 控件之间的交叉交互或对 UI5 控件以外的元素进行操作。此外,嵌套的 waitFor 操作感觉很笨拙。


使用 UIVeri5,可以真正以外部用户的身份操作 UI,包括 UI5 控件之外的元素和功能。但是 UIVeri5 的核心(Protractor、WebdriverJS)感觉已经过时了,核心元素之间的连接代码有时会缺少最后的实现里程(例如不可能在 conf.js 中设置日志级别?!)。某些限制,例如套件名称(描述)和文件名之间的强制关联也会增加这种印象。不幸的是,在测试时控件上只有 UI5 API 方法的一个子集可用。此外,文档似乎是零散的——但在文档中有点隐藏,UIVeri5 具有预构建的身份验证器,其中包括 SAP Cloud Platform SAP ID。


相关文章
|
21天前
|
存储 开发框架 JavaScript
深入探讨Flutter中动态UI构建的原理、方法以及数据驱动视图的实现技巧
【6月更文挑战第11天】Flutter是高效的跨平台移动开发框架,以其热重载、高性能渲染和丰富组件库著称。本文探讨了Flutter中动态UI构建原理与数据驱动视图的实现。动态UI基于Widget树模型,状态变化触发UI更新。状态管理是关键,Flutter提供StatefulWidget、Provider、Redux等方式。使用ListView等可滚动组件和StreamBuilder等流式组件实现数据驱动视图的自动更新。响应式布局确保UI在不同设备上的适应性。Flutter为开发者构建动态、用户友好的界面提供了强大支持。
33 2
|
12天前
|
机器学习/深度学习 并行计算 算法
深度学习中的自动化超参数优化方法探究
传统的深度学习模型优化通常依赖于人工调整超参数,这一过程繁琐且耗时。本文探讨了当前流行的自动化超参数优化方法,包括贝叶斯优化、遗传算法和进化策略等,分析它们在提高模型效率和性能方面的应用与挑战。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:AI 驱动的自动化测试方法
【5月更文挑战第29天】随着人工智能(AI)技术的不断发展和成熟,其在软件测试领域的应用也日益广泛。本文旨在探讨 AI 如何改变软件测试的面貌,特别是自动化测试方法。我们将分析当前自动化测试的挑战,并介绍 AI 如何提供解决方案,包括智能化测试用例生成、测试执行优化、以及结果分析等。通过实际案例研究,我们还将讨论 AI 在提高测试效率、减少错误和提升软件质量保障中的作用。最后,文章将预测 AI 在自动化测试领域的未来趋势,并提出对测试工程师的建议。
|
2月前
|
XML 存储 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第11天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试策略,它允许测试人员通过外部数据源控制测试用例的输入和输出。这种方法促进了测试用例的参数化,并提高了测试的灵活性和可维护性。本文将探讨数据驱动测试的核心概念、实施步骤以及使用Python进行数据驱动测试的实践案例,旨在为读者提供一种结构化的方法来设计和执行复杂的测试场景。
|
2月前
|
测试技术 UED
软件测试中的自动化与手动方法比较
【5月更文挑战第31天】本文将探讨软件测试中自动化和手动方法的优缺点,以及它们在不同场景下的应用。通过比较这两种方法,我们将了解它们各自的优势和局限性,并提供一些建议来帮助选择适合特定项目的测试策略。
|
2月前
|
XML 敏捷开发 存储
深入理解自动化测试中的数据驱动方法
【5月更文挑战第25天】 在现代软件开发过程中,自动化测试是确保产品质量和加速交付速度的关键手段。本文将探讨数据驱动测试(DDT)方法的核心概念、实施策略以及它如何提升自动化测试的灵活性和效率。不同于常规摘要,本文将通过实际案例分析,揭示数据驱动方法在不同测试场景中的应用,并讨论其对测试覆盖率和可靠性的影响。
|
2月前
|
测试技术
使用 Playwright 复用 Cookie:简化自动化测试的高效方法
Playwright 提供的 Cookie 复用功能允许在不同测试用例间共享会话状态,提高测试效率。通过 `context.set_cookies()` 方法设置共享 Cookie 数据,确保会话在多个测试中保持一致。优点包括节省时间、维持稳定会话,但需注意可能增加测试用例间的依赖。使用此功能可优化自动化测试流程。
69 1
|
2月前
|
存储 XML 敏捷开发
深入理解自动化测试中的数据驱动方法
【5月更文挑战第30天】 在现代软件开发过程中,自动化测试已成为确保产品质量和加快市场交付的关键步骤。数据驱动测试(DDT)是一种高效的自动化测试策略,它通过外部数据源来增强测试用例的灵活性和可维护性。本文将探讨数据驱动方法的核心概念、实施步骤及其在各种测试场景中的应用优势。通过实际案例分析,我们将展示如何利用数据驱动方法提高测试覆盖率并减少重复工作。
|
2月前
|
存储 XML 敏捷开发
深入理解自动化测试中的数据驱动方法
【5月更文挑战第30天】 在软件测试领域,自动化测试是提升测试效率和质量的关键手段。数据驱动测试(DDT)作为一种测试设计技术,允许测试人员通过外部数据源动态地输入多组测试数据,以执行相同的测试脚本。这种方法的优势在于可以显著减少测试脚本的重复编写工作,同时提高测试案例的覆盖率。本文将探讨数据驱动测试的理论基础、实施步骤以及面临的挑战,并通过一个实际案例来展示如何有效地应用数据驱动方法于自动化测试流程中。
|
2月前
|
存储 XML 敏捷开发
深入理解自动化测试中的数据驱动方法
【5月更文挑战第29天】 在现代软件测试领域,随着敏捷开发和持续集成的实践日益普及,自动化测试已成为确保软件质量的关键手段。本文将重点探讨数据驱动测试方法(DDT),一种旨在提高测试案例可维护性和重用性的测试策略。通过将测试逻辑与测试数据分离,DDT能够以更高效的方式应对大型测试套件的管理问题。文章不仅阐述了数据驱动方法的理论基础,还提供了实际的应用示例,帮助读者深入理解如何在自动化测试框架中有效地实施DDT。