【一、前言】
之前小编分享了《PyUnit+uiautomator2实现应用自动化回归测试实践》,MTSC听了《ATX在淘宝客户端实践》(ATX作者,ID:codeskyblue)的议题分享,进行学习总结。
【二、ATX自动化测试】
1、ATX的用途与其Python库
openatx,被拆分了20多个库,方便维护、集成;比较有名的是下面几个库
作者希望测试能够用Python编写,能够在电脑上运行的时候就控制手机。非常感谢 Xiaocong He,他将这个想法实现了出来(见xiaocong/uiautomator),原理是在手机上运行了一个http rpc服务,将uiautomator中的功能开放出来,然后再将这些http接口封装成Python库。因为xiaocong/uiautomator这个库,已久不见更新,所以作者fork了一个版本,为方便区分,加了个2, openatx/uiautomator2。
Uiautomator是Google提供的用来做安卓自动化测试的一个Java库。功能很强,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1. 测试脚本只能使用Java语言 2. 测试脚本必须每次被上传到设备上运行。
2、UI自动化面临的问题
问题:UI自动化,稳定性差、维护成本高,导致自动化项目在公司没法开展起来,为什么稳定性这么差呢?主要是安卓环境
Android25亿台设备,180+个厂商;(图截自谷歌大会)
蓝色柱状图:Android;黑色:ios;
Android开发一个应用,兼容5、6、7、8、9,很容易出现问题;
Android碎片化严重,和ios形成强烈对比;
左上角入口;(Python代码,例如按home键)
测试逻辑,现在全放到PC上,命令可以马上执行,修改后,可以生效;将测试成本降低(以前是放手机上)。
可以通过WiFi(设备和开发机在同一WiFi环境,基于atx-agent)和usb(生产环境推荐,可充电,避免WiFi不稳定的情况)两种连接方式;
Atx-agent:用go语言编写,屏蔽了手机Android5/6/7/8的差异,用公共函数通过http的方式提供出来。(例如获取ip地址,可通过手机版本号,调用不同的命令)
Uiautomator2,不是很稳定,会被杀掉,需要atx-agent为它去保活。
4、示例
安装进度、状态获取
可以获取到安装进度(百分比)、安装速度以及出现什么问题;(Python库直接和adb server去通信,获取到详细信息),一边下载,一边push;
对弹窗处理
添加了便捷的方法,如弹窗处理。(后台开了一个线程,每间隔4s检查一次)
weditor是智能手机测试框架openatx的子项目,便于使用web浏览器编辑atx脚本。
可以xpath点击方式、也可以利用控件属性;
weditor比较方便,获取Ui元素属性,可以简化ui用例的书写步骤;代码可以直接用到测试用例里,可以单独执行,方便调试。
不用录制回放(因为稳定性不是很高),而是生成代码的方式,进行第二次处理。对于不确定的,多点击几次,确保用例的稳定性;可以运行选中行,调试。
可以一边写UI自动化的case,一边进行调试,非常方便,代码直接可放到用例里面,省时省力。
6、脚本的组织
pytest
pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效。使用pytest编写用例,必须遵守以下规则:
1.测试文件名必须以“test_”开头(如:test_ab.py)
2.测试方法必须以“test_”开头
pytest插件丰富,比如flask插件,可用于用例出错重跑;还有xdist插件,可用于设备并行执行。
Allure
Allure是一个可以独立运行的测试报告生成框架。把Allure集成到Python的Pytest单元测试框架中,生成漂亮的图形测试报告。
http://allure.qatools.ru/
7、atxserver2移动设备管理平台
openatx实现了一个设备管理平台(也支持iOS) atxserver2
Allure和atxserver2实践部分,小编在自己项目正在实践,后续总结分享。