在一个敏捷项目复盘会上,leader扫视一圈说:小王,鉴于此次总结的一些问题,还是把公司运营平台项目做一个UI自动化吧。小王叹了口气说好的;虽有万般无赖,还是咬咬牙答应下来。那么UI自动化是个什么项目呢?为啥这么让人头疼,让项目组感觉食之无味弃之可惜呢,接下来让我们娓娓道来。
即通过模拟手动操作用户UI界面,以代码方式实现自动操作和验证的一种自动化测试手段。分为Web端和App端,Web端以Selenium驱动web UI的自动化测试为主流。App端的appium,还有诸如uiautomator、espresso、robotium等。下面是测试阶段的类型形象金字塔图。
1、重复性的功能测试及验证
2、避免疲惫操作时人为的遗漏
3、通过UI自动化操作获取其他测试数据的能力
4、节省项目回归测试时间
优点:
1、用例编写简单,降低技术人员上手门槛
2、节省人工测试成本,提高功能测试、回归测试的测试效率
3、保障软件质量的一种手段和方式
缺点:
1、UI控件频繁变更、前端设计频繁变更导致前端页面元素定位变更频繁
2、用例脚本的维护成本较高,投入和产出比例较低
3、元素定位的不稳定导致用例的效率和稳定性差
4、测试投入时间多
5、仅适用于大型项目且前端无变化的稳定项目(如银行系统相关项目)
时代在进步,技术在不停的更新迭代,迭代速度越来越快,当敏捷开发逐渐成为主流,软件测试过程中的主要矛盾也就暴露出来了:不断的缩短迭代周期与落后的测试流程之间的矛盾。为了解决这个矛盾,一种全新的测试流程理念:基于RPA(机器人流程自动化)的流程测试应运而生。
那么RPA是什么,它和测试有什么关系,RPA测试与传统自动化又有什么区别?
RPA全称Robotic Process Automation,也就是机器人流程自动化,RPA本身是一项通用的理念和相关技术统称,它把一个流程繁琐但有固定模式的工作流程,通过一些简单的手段,以低代码或零代码的代价进行快速自动化。可以用于日常重复性的工作流自动化,也可用于软件自动化测试,使测试自动化的代码量极大的降低,从而降低测试成本,提高测试效率。
下文就引用实在RPA产品链来为我们揭开RPA测试的神秘面纱:
1、以下视频是实在RPA产品设计web项目UI自动化流程,通过机器人定时执行任务流程,代替原始的代码构建方式轻易地实现web页面功能回归验证。
实在RPA构建UI自动化
2、RPA全链路产品如何实现UI自动化(以上面视频操作为例)
(1)使用RPA设计器创建流程,进入流程块编辑,根据需求选择组件进行操作。用浏览器相关组件打开浏览器(需要在设置中心扩展插件安装浏览器插件),再用界面元素操作+模拟键盘类操作组件输入用户信息,自动进入web页面。整个业务可根据功能模块来拆分设计流程,也可根据数据流链路设计流程;看业务需要或者需求方灵活设计操作流程。
(2)web页面都需要根据HTML元素定位,因此界面元素操作类组件基本满足需求,所有HTML元素与属性皆可通过此类组件获取,再通过流程控制类组件对页面返回值断言和循环操作,业务模块间可以加入延迟执行,保证流程运行的稳定性与容错性;也可智能拾取win系统元素,然后模拟鼠标点击来实现文件上传。运行结果可以输出到变量通过文件处理、word等组件保存,也可以把结果通过邮件类组件发送给相关人员。
(3)流程运行稳定后可以发布到企业市场;控制器也可理解为一个中枢控制台,通过任务管理来调度流程运行任务,在执行方式上有三种可选方式(立即执行、定时执行、手动执行)其中定时执行最便捷,根据需要的时间来执行任务,定期校验结果。如果控制器执行的流程任务多、品类繁杂,可以设置任务放置在不同的机器上运行,确保资源不会拥堵,让不同的任务互不干扰、持续执行。
(4)流程运行稳定后可以发布到实在机器人;也可以分享到同一租户下其他的实在机器人。直接点击运行,运行结束后查看结果,通过报错信息详细定位到错误的流程,再回到设计器对流程进行优化;机器人可解决比小白还低级的用户,比如此类用户不会设计流程,可以通过分享流程来检验UI自动化效果。
1、使用实在RPA测试是一种前瞻性的创新技术:
传统的自动化测试往往是要求编写者熟练掌握一种或几种编程语言,通过编写代码的方式编写一些称为测试用例的程序去测试其他的程序或系统。实在RPA设计器相比传统脚本构建UI自动化,通过可视化操作,无需了解代码的小白也可通过组件去了解和操作前端Selector元素定位,操作简便、易理解、易学习和结果可控;使测试自动化的代码量极大地降低,从而降低测试成本,提高测试效率。
传统的代码构建UI自动化,对于现代分布式、云端、异步并发的系统,编程难度和复杂度迅速提升,难以开发高覆盖度的测试用例,实在RPA则更适合这种复杂的场景。
2、传统自动化测试分为单元、接口、UI层面,实在RPA测试对应的层面和创新进步:
作为传统的测试自动化来讲,测试者需要一个过程,把人类的行为转换成为机器能够理解的逻辑,这就是测试自动化所编写出来的测试用例;实在RPA则是用技术手段以自动化方式严格执行人类行为,整个开发和执行过程以人类大脑习惯的思维方式展开,使得测试过程更有效和便捷,相对这一层来说也可以理解为接口和UI界面做自动化流程测试。
与传统自动化测试相比,主要亮点在于以全新的视角审视测试过程,将测试还原为以人类行为为中心的活动,同时借助于现代技术进步使这一过程以低成本的方式得以落地实现。实在RPA设计器通过界面可视化操作,各类组件的使用及操作结果皆可视化,易理解,易操作,易使用。
3、RPA测试类型,轻易弥补传统自动化测试的不足:
实在RPA提供了一项基础测试能力,我们可以把它用在测试自动化的范畴之内,可以做现有的大部分的测试自动化,不会改变软件测试的理论基础,提出了一种新的测试方法,使测试自动化更加易于上手和高效;从这点上来讲,比传统代码构建自动化方式更高效和更容易移植。
4、实在RPA产品链易学习、是否开源:
从实践上来说,实在RPA实现了低代码或零代码解决流程自动化问题 ,只要会使用键盘鼠标操作电脑就可以使用RPA组件来编写测试流程做流程自动化。易上手且易学习,而且还提供社区版供爱好者免费使用。传统代码复用率、移植率低,比如环境依赖、plugins维护,更换系统操作时,都需要重新搭建一套UI自动化环境,实在RPA产品只需要安装一次,可以随时使用,无环境、插件、更换系统的影响。
5、实在RPA在测试分析及测试用例编写上的优势:
传统的测试自动化往往需要编写一个测试用例程序运行在单一的计算单元,也就是一个计算机内,去完成测试工作。对于一个复杂且多端联合的场景,第一,编码代价非常高昂;第二,即使勉强完成代码编写,将来的维护和变更的成本也让测试工作变得不可持续。实在RPA可以完全仿照人的操作方式,将各个自动化片段在更高级的工作流层面进行抽取和链接再自动化,因而快速且具备高可持续性。
6、实在RPA执行流程自动化,对测试自身的好处:
首先,不存在有一个单独的叫做RPA测试门类。正如同懂得Python编程的人并不一定叫做Python从业者一样。不管是做开发还是做测试,都可以利用实在RPA来提升工作效率。
RPA与人类行为相对应,非常适合快速完成工作流的自动化,因此更适合端到端场景测试。目前实在RPA正在处于高速发展的时期,将它运用到测试工作实践中来还相对较少,正因如此,对于从业者来说提前布局学习和运用,会使自己在机会来临的时候占据优势地位,这也可以间接带来经济价值的回报。