天天看點

關于 SAP UI5 應用的自動化測試方法

測試作為確定 UI5 應用程式開發投資的一種手段已經變得越來越普遍。

為了進一步推動這個問題,讓我們評估 UI5 中最突出的端到端測試架構。

關于 SAP UI5 應用的自動化測試方法

所有這三個都允許測試面向使用者的功能,“像使用者一樣”操作 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>
<!-- ... -->
      

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

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();
  });
});
      
webapp/test/integration/AllJourneys.js:

sap.ui.define([
"./arrangements/Startup", // arrangements
"./NavigationJourney", // actions + assertions
"./BindingJourney", // actions + assertions
"./InteractionJourney" // actions + assertions
], /* ... */
      

excerpt from webapp/test/integration/BindingJourney.js:

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"
};
      

然後可以啟動 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。

更多Jerry的原創文章,盡在:"汪子熙":

關于 SAP UI5 應用的自動化測試方法