机器人流程自动化在Web自动化测试中的应用
2024-02-09陈平李建超
关键词:软件自动化测试;机器人流程自动化;Power Automate Desktop;关键字驱动;低代码
中图分类号:TP311.56 文献标识码:A
文章编号:1009-3044(2024)36-0096-03"开放科学(资源服务) 标识码(OSID) :
0 引言
随着软件技术的迭代升级和激烈的市场竞争需求,各种软件开发模式逐渐兴起,如敏捷开发、增量模型开发、DevOps等[1]。相应地,软件的测试工作量逐渐增加,测试周期不断缩短,如何快速有效地进行软件测试成为测试人员面临的巨大挑战。
软件自动化测试技术具有自动运行和高效的特点,能够提高测试效率并节约成本,日益成为软件测试人员关注和研究的对象。目前,Web自动化测试主要过程包括:自动生成测试用例、通过测试脚本或工具自动执行测试用例以及自动分析测试结果。其中,自动执行测试用例是需要熏点关注的环节。测试脚本的常用编程语言包括Perl、Shell、Python和Java等,采用数据驱动技术与软件页面元素交互,检测测试对象的实际值和预期值。文献[3]设计并实现了一种基于Seleruum与Unittest的Web自动化测试框架,将常用的操作和查找封装成基础类,便于不同产品或项目直接复用。测试工具分为面向PC端和移动端两类。在PC端,典型的测试工具代表有Robot Frame-work和Jmeter等,其中Robot Framework基于可扩展关键字驱动,能够覆盖接口、GUI和数据库测试。在移动端,常用的自动化测试工具包括Robotium、Monkey Runner和Appium等,其中Appinm应用最为广泛,它使用Web Driver协议来驱动不同手机操作系统的应用软件,便于进行自动化测试。
然而,开展自动化测试需要测试人员具备一定的代码开发能力。对于不同的项目,测试人员经常需要在多种测试开发编程语言环境中切换,这在一定程度上限制了团队开展软件自动化测试的效率。本文针对软件项目测试活动中面临的压力,探索将机器人流程自动化技术融入日常测试活动中,测试人员只要具备基本编码技能,通过在控制台拖放操作组件即可搭建业务测试工作流,从而在最短时间和最低成本下开展自动化工作。
1 机器人流程自动化技术概述
机器人流程自动化(Robotic Process Automation, RPA) ,也称为软件机器人,是一种基于软件的技术,旨在自动执行重复性、规则性强和可预测性高的业务流程或任务,例如提取数据、填写表格和移动文件等。
RPA的应用领域已十分广泛,涉及财务管理、审计管理、人力资源管理和金融等领域[6]。这些领域的应用本质相同,即处理固定规则下繁复且重复性极强的工作。业务人员只用预先设计规则和流程,即可模拟人工操作,完成基于固定规则下的机械性操作和分析性较少的任务。因此,该项技术被视为代替人工操作的最佳方式,能够有效解决重复性较强的工作。由于RPA减少了团队的工作量,释放的资源可投入其他更具创造力的工作,从而提高生产率和投资回报率。
1.1 工作原理
本质上,人们借助RPA来记录一系列的操作以及与应用的交互,以此构建工作流。系统通过观察人类执行任务的过程,生成操作列表,然后构建软件机器人,用于在应用的GUI中执行任务。借助RPA,设计RPA机器人的步骤如下:
1) 分析流程:分析可实现自动化的流程或任务,明确自动化目标。
2) 设计自动化流程:根据业务规则设计自动化流程,包括任务的执行顺序和交互逻辑等。
3) 配置机器人:将自动化流程配置到机器人上,包括机器人的输入数据、输出目标和操作步骤等。
4) 执行自动化流程:启动机器人以执行自动化流程。
在使用过程中,通常需要为软件机器人提供输入数据和操作步骤,输入数据通常来源于Excel表格、XML文件和数据库等,作为驱动流程的数据要素;操作步骤是人工操作的模拟,需要按照业务规则部署关键操作步骤。
1.2 微软机器人工具
Power Automate Desktop(PAD)是微软在Windows 11操作系统中预装的一款RPA应用工具,是一个低代码平台,便于用户自动化所有熏复的桌面流程。此外,PAD还集成了多种AI技术,如Azure openAI服务,用以支持更加复杂的业务流程自动化操作。
PAD的主要功能及特点如下:
1)预设关键字操作丰富。PAD提供了诸如“打开浏览器”“填充网页上的文本字段”和“单击网页上的链接”等上百个预设关键字操作,这些操作组件基本覆盖了自动化任务中的常见动作,支持通过拖拽控制台的关键字操作组件,像搭积木一样构建复杂的自动化任务场景。
2) 便捷的页面交互。PAD利用UI元素与网页进行交互,无须依赖图像识别和绝对坐标。要将新的UI 元素添加到工作流中,无须通过DOM操作,只用在控制台通过UI元素窗格捕获新的UI元素,即可完成识别与定位。所有UI元素由一个或多个选择器组成,这些选择器可以精确定位与PAD交互的Web组件。每个选择器由多个属性组成,表示应用程序或网页中UI 元素的分层结构,属性对每个元素进行唯一描述,将它与其他元素区分开。
3) 数据类型及处理方法多样。PAD支持多种形式的数据类型,如表格、列表、数值、字符串等。同时提供了文件和文本两大类预定义操作,包括排序查找、“拆分文本”“替换文本”等常见数据处理过程。此外,PAD 也支持运行Python、Shell、JavaScript脚本进行数据分析与处理,极大地增强了自动化过程中的数据分析与处理能力,并可通过OCR技术处理非结构化数据。
4) 与第三方系统交互简单。PAD的预设HTTP操作支持普通Web服务、SOAP Web服务调用和从Web下载。例如,要发送API请求,只用使用“调用Web服务”操作,然后在操作的属性中填充服务的URL、HTTP 方法、请求和响应内容类型即可。此外,PAD支持一组在所有数据库上进行连接和SQL查询的操作。要连接到数据库,只用在控制台使用“打开SQL连接”操作。该操作仅需一个输入:连接字符串。连接字符串字段指定连接到数据库所需的所有信息,例如驱动程序、数据库、服务器名称以及用户名和密码。当操作连接到数据库时,它会将连接存储到SQL连接变量中,后续其他的数据库访问操作都可以复用这个连接变量。
5) 支持邮件报告发送。PAD允许用户自定义邮件内容及格式。用户可通过HTML美化实现邮件内容的个性化展示,并可插入测试运行过程中发生异常时的截图,以丰富邮件信息。
2 RPA 技术在自动化测试中的应用
2.1 自动化测试关键技术分析
2.1.1 Web元素识别与定位
Web元素是可以从网页中识别和定位的元素。这些元素包括文本字段、按钮、图片、链接或其他任何可在测试程序中交互的项目。捕获这些元素后,便可与相应的Web自动化操作相关联,实现桌面操作流程的自动化。
2.1.2 数据或关键字驱动
目前,商用自动化测试框架大都支持数据驱动或关键字驱动的测试用例编写和执行过程。前者将测试脚本与外部数据源隔离,通过外部数据源驱动测试过程。测试人员无须为不同测试场景重复编写代码,只用编写一套能够读取并使用不同测试数据的脚本。当测试条件变更或新增时,只须更新外部数据集,无须重新编写测试脚本,这极大地简化了测试管理。后者的本质是将函数封装成关键字,一个关键字对应一个函数,每个操作事件的函数封装成对应的关键字,用户通过调用关键字并传入测试参数即可驱动测试用例的运行。这样做的最大好处是降低了框架的使用难度,测试人员只须按照测试用例描绘的步骤,通过提取关键操作,实现低代码化的自动化测试脚本。
2.1.3 数据分析与处理
数据的分析与处理是自动化测试脚本中的常见任务。对于页面响应或接口返回的数据,通常不能直接使用,需要经过内容转换、裁剪和提取等步骤,因此数据处理模块是自动化测试脚本编写过程中的重要环节。
2.1.4 API调用
API调用是一种通过网络或本地进行的软件接口交互方式,可用于实现接口自动化测试。接口自动化测试本质是发送端发送请求报文到服务端,服务端对请求报文进行响应,发送端通过解析响应进一步判断服务端返回的信息是否符合预期,从而验证业务逻辑是否正确实现。由于接口测试与前端UI存在松耦合关系,在前端不改变的情况下,通过测试接口可以在一定程度上提高回归测试的效率,减少人工测试的任务量[7]。
2.1.5 数据库访问
自动化测试过程中的重要操作之一是数据库访问。插入、检索和修改数据是每个信息系统的基础操作。通过数据库访问,可以更好地监测系统的反应,便于定位问题。
2.1.6 测试报告生成及发送
Web测试用例执行完毕后,需要对测试结果进行统计和分析。测试报告通常显示所有用例执行结果,最基础的内容包括运行用例总数、成功数、失败数和执行时间等,并及时通知相关人员。
2.2 软件自动化测试实现
2.2.1 测试框架
应用机器人流程自动化工具实现自动化测试方案的框架结构主要由Power Automate Desktop、数据处理层和业务层三个部分构成,如图1所示。
业务层主要依据测试用例,根据系统具体业务功能模块在平台上创建对应的工作子流,子流中利用PAD控制台预设关键字操作构建测试逻辑;数据处理层主要对页面响应数据和接口响应数据进行处理,为业务规则提供支持;PAD充当自动化测试流构建平台,用于支撑接口自动化测试和UI自动化测试。
2.2.2 测试流程
PAD是一项联机工作流服务,因此整个测试过程可视为流的创建和运行。测试用例是创建桌面流的依据,需要将测试用例关键操作步骤逐一转换为对应的控制台桌面关键字操作引用,必要时增加流程控制,然后启动流。图2给出了完整的测试流程。
测试人员需要手动编写测试用例并存入Excel文件。加载测试用例时,可以选择手动加载单个测试用例或批量加载指定目录下的所有测试用例。程序将已加载的测试用例文件内容解析为测试动作列表。一旦运行流程,程序会按序执行已加载的测试用例,每个完成的测试用例执行过程都需要进行断言,并根据断言结果记录用例执行结果。
2.2.3 配置UI自动化测试流
测试用例的编写须遵循一定的规则,包含必要的测试数据和预期响应关键字。以一个普通登录过程为例,其主要字段格式如表1所示。
依据测试用例步骤编写对应的测试流程。在测试流程中可以根据实际操作步骤,选择桌面操作引用,如“启动新chrome”“从Excel工作表中读取”“填充网页上的文本字段”“单击网页上的链接”“从网页提取数据”“等待网页包含”等动作加入测试流程。登录测试子流程构建如图3所示。
登录子流程首先读取测试数据列,根据“#”分隔符拆分测试数据,形成测试用例数据,依次赋给相应的页面文本框。在断言子流程中,通过引用“如果网页包含”或“等待屏幕上显示文本(OCR) ”等关键字操作,对新页面显示的提示信息进行断言,并根据断言结果确定最终测试结果。当测试步骤完成后,程序将收集待测设备的状态,并汇总成测试报告。
2.2.4 配置接口自动化测试流程
在接口自动化测试过程中,接口的响应通常会随着传入接口参数的不同而变化,因此需要实现入口数据的参数化。参数化的形式主要有两种:一是使用测试系统内置变量,相当于预定义一些环境变量;二是从外部文件获取,通过将入参不同的取值组合写入CSV文件或YAML文件实现参数化。
以一个HTTP登录接口为例,接口测试用例主要字段格式如表2所示。
根据表2字段内容,系统创建一个内置列表变量,用以存放业务数据入参,然后依次赋给接口相应参数,形成入参键值对,并根据Content-Type封装请求信息,发起请求。在测试流程中通过循环读取更新列表变量,驱动测试用例运行。测试流程实例如图4所示。
接口测试流程从每一条用例中读取的业务数据入参列,同样根据“#”分隔符进行拆分形成参数值列表,保存在ExcelData变量中。在“调用Web服务”操作中,根据媒体类型拼接请求内容,形成请求的正文内容,进而发起接口调用请求。响应报文会存储到WebServiceResponse变量中,测试人员需要对其进行解析,转换为便于处理的格式,如JSON。断言操作子流程中,判断响应键值对与期望键值对是否一致,并将断言结果回写Excel文件。
3 结束语
本文分析了在Web功能自动化测试中使用RPA 的可行性及关键技术。为非专业测试人员参与软件项目活动和团队快速开展自动化测试提供了一条可行的途径。随着RPA的深入研究,与AI的结合已成趋势。RPA 视为“执行”任务的手臂,而AI作为“大脑”,AI可以帮助RPA更全面地自动执行任务,并处理更复杂的用例场景。