关于SAPUI5应用程序的自动化测试方法
原文:UI5中的测试状态:OPA5、UIVeri5和wdi5作为确保UI5应用程序开发投资的一种手段,测试已变得越来越普遍。为了进一步提出这个问题,让我们评估一下UI5中最著名的端到端测试框架。这三个都允许测试面向用户的功能,“像用户一样”操作UI5应用程序:与UI元素交互。UIVeri5和wdi5都可以远程控制浏览器。也就是说,它们与UI5应用程序具有不同的运行时。因此,两者都需要(网络)服务器才能连接以运行被测UI5应用程序。与OPA5的不同之处在于,它与UI5应用程序共享相同的运行时——它紧挨着被测UI5应用程序工作,而不是单独工作。(QUnit不在本文中,因为我们专注于运行面向用户的测试,而不是纯粹的功能测试。)此外,wdi5允许在移动设备上测试混合应用程序。它可以连接到iOS、Android和Electron上的cordova包装的UI5应用程序,并运行与基于浏览器的应用程序相同的测试。OPA5OPA5随UI5一起提供,不需要额外的安装步骤。然而,它的设置并不直观,与OPA5的基本QUnit混合使用,并且需要多个级别的包含。下面是一些例子:webapp/test/integration/opaTests.qunit.html:
webapp/test/integration/opaTests.qunit.js:sap.ui.getCore().attachInit(function(){"使用strict";sap.ui.require([//所有测试套件聚集在这里"test/Sample/test/integration/AllJourneys"],function(){//`OPA5`'smama:)QUnit.start();});});webapp/test/integration/AllJourneys.js:sap.ui.define(["./arrangements/Startup",//安排"./NavigationJourney",//动作+断言"./BindingJourney",//动作+断言"./InteractionJourney"//动作+断言],/*...*/摘自webapp/test/integration/BindingJourney.js:sap.ui.define(["sap/ui/test/opaQunit","./pages/Main","./pages/Other"],function(opaTest){"usestrict";QUnit.module("BindingJourney");QUnit.module("Otherview:PeopleList:itemsaggregation");opaTest("绑定状态",function(Given,When,Then){Given.iStartMyApp();When.onTheAppPage.iPressTheNavButton();Then.onTheOtherView.iShouldSeeTheList().and.theListShouldBeBound();});//...从以下网址开始:http://localhost:1081/test/in...uiveri5UIVeri5需要Node.js>=8并且通过标准npm命令npminstall@ui5/uiveri5安装,然后通过配置文件和包含测试代码的文件进行设置-确保两者都在同一个文件sys文件夹中。配置文件:exports.config={profile:"integration",baseUrl:"http://localhost:1081/index.html"};然后就可以启动UIVeri5首先启动webserver:yarndev(oryarnstart:ci)yarntest:uiveri5OPA5比UIVeri5快因为它与UI5Sharedruntime兼容,从而节省了基础架构开销,例如启动浏览器本身。但是,当需要更高级的测试行为时,它很快就会达到极限,例如UI5控件之间的交互或者for另外,嵌套的waitFor操作感觉很笨拙。使用UIVeri5,你可以真正以外部用户的身份操作UI,包括UI5控件之外的元素和功能。但是UIVeri5的核心(量角器,WebdriverJS)感觉已经过时了,核心元素之间的链接代码有时缺乏最后的实现里程(例如不可能在conf.js中设置日志级别?!)。某些限制,如套件名称(描述)和文件名关联之间的强制执行,也增加了这种印象。不幸的是,测试时控件上只有一部分UI5API方法可用。此外,文档似乎是分散的——但有些隐藏在文档中,UIVeri5具有预构建的身份验证器,其中包括SAPCloudPlatformSAPID。更多Jerry原创文章在这里:《王子熙》: