找回密码
 会员注册
查看: 25|回复: 0

ATX架构下的UI自动化实现

[复制链接]

4

主题

0

回帖

13

积分

新手上路

积分
13
发表于 2024-10-11 19:58:33 | 显示全部楼层 |阅读模式
背景目前所在项目组的客户端采用的是敏捷开发模式。该模式通常是在生产后部署快速修复程序,然后再次进行回归测试。整体回归的测试而言非常耗时,很多时候是无法确定修改部分功能导致的影响范围到底多大,在这种情况下,很可能陷入了恶性循环。在这之前测试团队都是手动回归测试,测试人员都必须重复大量的测试用例,一遍又一遍地执行相同的测试,不仅要花费更多的时间,而且还会降低测试的整体效率。因此开发同事帮助测试团队调研了自动化测试技术方案——ATX(Automotive Test Exchange Format))自动化。自动化测试可以加快测试周期,不必每天重复执行单调的测试用例,节省出来的时间用来提出更好的测试用例场景。接入此项目后初学自动化,对此技术方案进行了学习,相关介绍如下。技术方案关于APP的UI自动化,基本上都是采取的pom模式(Page Object Model)加上关键字驱动、数据驱动、实现测试数据分离。POM模式是将APP每个页面当作是一个对象类进行分层管理,一个类就是一个模型,通过模型生成页面对象。分为三层模型,第一层为基础页面层,包含一些基础的公共方法的公共属性,比如元素定位和输入点击等操作;第二层为测试用例层,包括具体操作流程的用例,第三层里是用例数据,调用的是第二层内的方法。此模式相当于是将页面内的UI元素对象、逻辑、业务、数据等分离开来,让测试逻辑更加清晰,如果后期客户端的UI进行了调整修改,也不需要更改测试脚本,只要更改页面对象中的代码就可以,可维护性也很高。数据驱动是通过excel、csv、yaml和数据库等读取输入和输出的数据,然后通过变量传入自动化测试用例中,在整个过程中,数据的读取,测试状态,测试信息全部在测试用例里面。关键字驱动,关键字是将同样的业务逻辑会封装成一起的函数的名称,业务逻辑可以通过调用关键字来实现。调研App自动化测试技术方案,调研前考虑框架需要很强的跨平台能力(支持:Android、IOS、H5),有强大的第三方库,编写脚本更有效率,配置简易启动迅速,最后选择ATX+python组合。ATX的python库openatx被拆分成了20多个库,便于维护和集成。其中uiautomator2主要用来做Android端的自动化,facebook-wda用来做IOS端的自动化,adbutils库是用来和adb做交互,但不是简单的做个交互,而是通过协议程序去和adb进行交互,但是这块只支持python3.6+。在执行APP UI自动化测试时,需要使用到元素定位,通常我们会直接使用appium Desktop的Inspector。这里有另外一种方法,ATX抓取页面元素使用的控件为WEditor能够提供辅助编写脚本,定位元素,调试代码等功能,是基于python的一个查看APP元素的工具,此工具的使用可以减少atx频繁的启停。以下是Appium和ATX中的uiautomator2一些对比情况:相较于Appium,可以看出ATX的上手难度以及配置会比较简单,而且启动和运行的速度会更快,只是支持的编程语言会比较单一,ATX只支持使用Python语言。除此之外,appium实现跨应用操作很困难,但是ATX可以实现混合APP的UI自动化并且生成测试报告。询问了相关开发人员选择此方案还有一个原因,就是使用OTX标准化工具,可以支持多种测试硬件,减少测试软件兼容性问题,可以使得APP自动化和固件脚本命令、python可视化页面等固件自动化同时进行。实现过程简单记录一下安装部署的步骤,在配置好python3的环境后,首先pip安装适配于安卓的uiautomator2 后对手机进行初始化,其次pip安装weditor,每次测试前都需要先启动这个。最后进行脚本设置,配置项目根目录下conf.json文件后就可以执行运行命令了。环境配置完成后,已安装Android的 sdk,adb devices检查移动设备后出现List of devices attached,是由于设备连接失败,排查后检查原因有以下两点:① 检查是否已安装手机驱动,电脑→管理->设备管理->Andriod Phone项;②检查手机的usb是否已打开开发模式,usb调试。连接成功后执行update后会生成设备对应路径下的文件,此时打开weditor浏览器页面访问地址,输入adb devices查询到的序列号,点击connet便可以进行实时监控。安装、设备初始化以及配置文件配置完后可以进行代码操作了,常见的代码如下。由于项目是需要和硬件进行交互的,客户端的具体测试操作是体现在具体设备的功能实现上,固件设备连接串口后可以通过串口给设备发送配置数据,也可以实时输出日志打印,校验客户端指令是否发送成功并确保实际操作成功无误。故在实现APP操作自动化的同时也实现了固件自动化,这也是开发人员调研方案后选择ATX自动化方案的原因之一。实现了固件和APP结合的自动化测试之后,每次进行测试需要手动选择设备具体的串口号后打开串口,并且需要输入指令来启动流水操作的具体执行,故考虑可以做个有功能按钮的简单的可视化页面,来完成以上启动测试的准备操作。实现的操作可视化页面包含以下4个有关流程的元素:◆ 选中串口号◆ 点击“打开串口”按钮◆ 点击“接收设备日志”按钮,查看是否有数据显示◆ 点击“开始快连测试”按钮操作可视化是使得每次进行测试时的步骤变简易的最简单有效的方式,并且实时输出日志打印并保存到本地可以便于更好地分析数据,其中有关固件交互部分的串口值处理的具体实现代码如下图所示,从串口工具中获取到可读取到的所有有效的串口号,将其全部存储在串口列表的数组中,后续完善页面的显示控件后检测到button的down操作时对读取到的串口值进行处理,获取到有效串口后调用串口打开函数,此时只需要检查保证串口输出的日志打印为此设备的日志即可开始后续的客户端用例的自动化执行了。总结客户端的UI自动化测试除了常见常用的appium之外,对于一些使用python语言的客户端自动测试,ATX也是个很不错的自动化测试方法,不仅可以实现混合APP的UI自动化,而且配置简单、运行速度快,其中的OTX的标准化工具,可以支持多种测试硬件,减少测试软件兼容性问题,非常适合和固件自动化进行兼容使用,十分推荐!但是需要注意的是appium和ATX的weditor框架不兼容,运行2个程序时会导致无法正常运行。分享给第一个想到的人
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2024-12-27 15:14 , Processed in 0.520911 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表