关于我们

这个时代,技术迭代速度越来越快,当敏捷开发逐渐成为主流,软件测试流程中的主要矛盾也就暴露了出来:不断缩短的迭代周期与落后的测试流程之间的矛盾。

要解决这个矛盾,一种全新的测试流程理念:基于RPA(机器人流程自动化)的软件自动化测试也应运而生。

那么,RPA是什么,它和测试有什么关系,RPA测试与传统自动化又有什么区别?本次专题我们请到了高级质量保证经理邓老师,来为我们揭开RPA测试神秘面纱。

邓老师
高级质量保证经理(QA/QE) Dell EMC

IT从业20余年,曾在雅虎、Sun、微软、亚马逊、EMC、阿里巴巴等知名公司任职,担任过开发、测试等技术和管理职位,擅长对不同软件构建进行深度整合以构建切近实际需求的开发测试和运维系统环境。

INTERVIEW
专访
老师您好,算是一个比较新颖的概念,能请您给大家介绍一下么?
NO.1
RPA的全称是Robotic Process Automation,也就是机器人流程自动化。它是充分运用现代IT技术成果,对一些用传统编程难以让机器做到的,同时对人来讲却很容易做到的工作,通过某些技术手段,使得整个的工作流程过程能够以低代码或零代码的方式快速高效地自动化起来。
老师您好,机器人流程自动化和测试有什么关系呢?
NO.2

RPA本身是一项通用的理念和相关的技术,它把一个头绪繁琐但有固定模式的工作流程,通过一些简单的手段,以低代码或者零代码的代价进行快速自动化。它可以用于日常重复性的工作流自动化,比如HR流程自动化或者财务流程自动化

它也可以用于软件自动化测试,使测试自动化的代码量极大地降低,从而降低测试成本,提高测试效率。传统测试自动化是通过编写代码的手段,主要是冯诺依曼单体式编程的方式,写出以代码表达的测试用例,用来测试其它业务软件的功能和其他特性。把这二者结合起来,软件测试自动化可以由RPA加持后,用于非常复杂的场景。

相较于传统的自动化测试,RPA测试有什么呢?
NO.3

传统的自动化测试往往是要求自动化测试的编写者熟练掌握一种或几种编程语言,编写一些称为测试用例的程序去测试其他的程序或系统。

由于本质上采用的使冯诺依曼单体式编程范式,对于功能内聚性较强的软件系统尚能胜任,但是对于现代分布式、云化、异步并发的系统,编程难度和复杂度迅速提升,难以开发高覆盖度的测试用例。RPA则更适合这种复杂的场景。

从编程上讲RPA没有带来新的内容,它只是带来了理念上的创新和有正对性的以人的行为为中心的测试方法。

传统的自动化测试大体分为单元、接口、UI自动化三个层面,RPA测试对应哪个层面,又有哪些进步呢?
NO.4

RPA更多的是对应到接口和UI测试这两个部分以及这里没有提及的端到端场景测试。

RPA适合模拟人类行为进行测试过程。对于一个复杂的测试过程,我们首先要知道人会怎么测。作为传统的测试自动化来讲,测试者需要一个过程,把人类的行为转换成为机器能够理解的逻辑,这就是测试自动化所编写出来的测试用例,跟最初为人类所设计和执行的测试过程逻辑上等价而实际执行上已经发生了扭曲。

RPA则是用技术手段以自动化方式严格执行人类行为,整个开发和执行过程以人类大脑习惯的思维方式展开,使得测试过程更有效。这也是为什么RPA相对不太适合单元测试的原因,因为单元测试面向的是代码逻辑而非人类行为。

RPA与传统自动化测试相比在编码上没有太大的可比性,它的主要亮点在于以全新的视角审视测试过程,将测试还原为以人类行为为中心的活动,同时借助于现代技术进步使这一过程以低成本的方式得以落地实现。

RPA测试的测试类型有哪些?根据您的经验,自动化测试活动中常见的难点有哪些?而RPA自动化是否能够弥补普通自动化测试中的不足?
NO.5

RPA本身并不是专为测试而生的一项技术,所以不存它涵盖什么样的测试类型的显式对应关系。它只是提供了一项基础能力,我们可以把它用在测试自动化的范畴之内,可以做现有的大部分的测试自动化,除非要测试的对象是非人类行相关的,比如说机器学习当中的某种深度模式发现,它在计算机行为空间里进行脱离人类行为的计算过程。

RPA不会改变软件测试的理论基础,它只是提出了一种新方法,使测试自动化更加易于上手和高效。

RPA测试有哪些?是开源还是收费的?是否上手易学?
NO.6

目前市面上的RPA工具有很多,比如微软的Power Automate,开源界的Robot Framework、UI Path、UI Vision、TagUI、Open Robot等等。有的是纯开源软件,有的是商业软件,但大多数都提供社区版本供大家免费上手学习使用。

从实践上说所有的RPA软件的目标都是低代码或零代码解决流程自动化的问题,所以只要会使用键盘鼠标操作电脑就可以使用RPA工具来做测试自动化。上手的难易程度也因RPA工具而定,像Power Automate是全图形界面操作,容易使用;而Robot Framework是半编码方式,需要学习它的语法和库,学习曲线相对陡峭,但功能强大。初学者可根据自身实际情况循序渐进进行学习掌握。

能否和我们分享一则常见的RAP测试业务场景,它和普通自动化测试在测试需求分析及测试用例编写上有哪些区别?
NO.7

举一个人工测试的例子来说,一个测试工作需要先到一个第三方气象网站上去查看一个天气预报的结果,再打开一个Excel,导入一个文件服务器上存储的历史记录表格,把去计算一个方差的结果,再用GUI界面去查询防火墙后方的Oracle数据库里的数据,最后把三者的数据糅合起来进行一个高阶算法的计算,根据运算结果进行测试逻辑的判定。

最后还要根据历史上同一测试的结果进行比对得出目前系统可用性的信心指数。用传统测试自动化的方法来开发这一类测试用例基本是一场噩梦。

用RPA来解决的话,它会充分利用已有软件的能力,把每个中间软件操作的结果进行抽取和链接,最终进行简单加工而达成目的。RPA的特点就是低代码或零代码自动化,而且是完成复杂场景、多场景的自动化流程。

传统的测试自动化往往需要编写一个测试用例程序运行在单一的计算单元,也就是一个计算机内,去完成测试工作。对于刚才所列举的这样一个复杂场景,第一,编码代价非常高昂;第二,即使勉强完成代码编写,将来的维护和变更的成本也让测试工作变得不可持续。RPA可以完全仿照人的操作方式,将各个自动化片段在更高级的工作流层面进行再自动化,因而快速且具备高可持续性。

对于刚入行测试行业或者是只有手工黑盒测试经验,想要转型到RPA测试的同学,要如何设定学习路线呢?换句话说,对于那些想入行RPA测试的同学而言需要具备哪些必须的技能门槛,或者说入门前提?
NO.8

RPA正是初学者或者新人逆袭的好工具。对于编程基础薄弱的同学,可以先从 Power Automate、TagUI、UI Vision等 GUI驱动的RPA工具入手,然后不断学习晋级。

对于有编程经验的同学,可以学习使用Robot Framework这样的框架,或者探究Power Automate或UI Path的高级功能迅速完成复杂或繁琐场景的测试。

总体来说,RPA进入的门槛非常低,更多是需要理念上的改变。只要会用键盘鼠标或者命令行工具完成某个测试任务就能找到某个或某些RPA组合完成自动化。RPA不存在转型的问题,而是在你现有的能力之上进行增强的途径。

相较于传统的软件测试,RPA测试人员在上是否有绝对的优势?
NO.9

这个问题很有意思。RPA的测试人员在薪资上跟传统的软件测试的对比,它是个不存在命题。RPA本身只是一个新出现的技术,作为一个测试人员,可以去运用这个技术,让自己在相同的时间、空间范围内达到更高的生产效率,仅此而已。

你所处的行业和你所作的工作的商业价值本身决定了你的薪资的高低,并非是会与不会某个特定技术而造成的差别。从另外一个角度看,如果一个人能充分利用诸如RPA这样的工具,比别人有数倍工作效率的提升,那么他自然在这个行业里有更强的竞争力,从而得到更高的经济回报。但是本末不能倒置。

国内RPA测试的如何?您作为RPA测试从业者是如何看待RPA测试人员的现状?
NO.10

跟上一个问题类似,不存在有一个单独的叫做RPA测试门类。正如同懂得Python编程的人并不一定叫做Python从业者一样。RPA只是一个工具,不管是做开发还是做测试,都可以利用它来提升工作效率。

RPA与人类行为相对应,非常适合快速完成工作流的自动化,因此更适合端到端场景测试。RPA入门不需要深厚的编程基础,对于初学者相对友好,运用得当的话,一个新手可以迅速达到资深测试自动化工程师的生产力。因此掌握一门或几门RPA工具将会是新人弯道超车的好机会,也可以使有经验的工程师更上一层楼。

目前RPA正在处于高速发展的时期,将它运用到测试工作实践中来还相对较少,正因如此,对于从业者来说提前布局学习和运用,会使自己在机会来临的时候占据优势地位,这也跟经济回报直接相关。

EXTENSION
扩展阅读

看过本次专题后,小伙伴们对机器人流程自动化有一定的认识了么?还有什么想要补充的知识或是有什么问题都可以在下方评论区交流~

另外,不知道大家还想看哪方面的知识或技术?又或者有哪位大佬有擅长的技术想要迫不及待分享给大家呢?可以微信添加or扫描二维码联系我们哦~

COMMENT
评论