【自动化测试】Airtest-基于图像识别的UI自动化框架初探
已经没做自动化测试很长时间,在MTSC2018大会之后有朋友跟我提了这个开源项目。
抱着学习的态度简单了解了一下,分享给大家,项目刚好有这方面需要的小伙伴可以继续深究。
AirtestIDE是什么?
Airtest Project由网易游戏内部工具团队开源的一个UI自动化测试项目,主要产品即AirtestIDE,包含功能如下:
自动化脚本录制、一键回放、报告查看,轻而易举实现自动化测试流程
核心:支持基于图像识别的Airtest框架,适用于所有Android和Windows游戏
支持基于UI控件搜索的Poco框架,适用于Unity3d,Cocos2d与Android App
Airtest相关资料
GitHub:https://github.com/AirtestProject
教程:http://airtest.netease.com/tutorial/Tutorial.html
官网:http://airtest.netease.com/
举个栗子
本人因做App项目,故仅实践了Android原生App,使用Mac电脑。(IDE支持其他平台请访问官网了解)
1.安装IDE启动并且登录网易帐号即可(可切换中文、英文)
Mac电脑安装IDE超简单,使用如上教程或者官网均有提供下载的地方,直接下载DMD包解压即可
踩过的坑:开发团队宣称他们最低兼容10.11.2,实际上可能低版本的macOS点击IDE不会有任何反应。但最新的macOS10.13.6经楼主试验是肯定ok的。
2.连接Android设备开启开发者调试模式(因连接占用ADB,故请保证没有其他应用占用了ADB端口),点击connect完成与设备的连接联动(这个应该是基于STF实现的)
连接上设备后“移动设备连接”区域会展示设备的Serial No,表明adb连接设备成功,此时点击connet
点击connect后,可以看到设备的界面,可以开始录制了~
3.脚本优化
第一次看到这个录制的脚本是懵逼的:啥玩意儿,截图直接写到代码里?是的,没看错~“没办法,我就是这么强大,啦啦啦啦啦啦啦啦啦啦啦”
Airtest这就是网易这款IDE最优秀的地方,截图、存图、对比图,好麻烦。这些都帮你做了。点个题:基于图像识别的UI自动化框架
任何录制的脚本可阅读性及真正运行起来都会有些问题,比如如上录制的脚本里面,这截图都是截了一点,识别率不高,且没有断言等。
故在截图模块1里面有常用的方法可自行编辑脚本进行断言、可自行使用方法截取合适的图片区域(识别率更高),添加一个断言并且自行进行截图
4.其他支持
其实就算优化后这个脚本看起来也真的是让人不想接受(太丑...)。而且也总有可以很简单用元素定位就可以实现的地方,故IDE也提供了封装好的基于UI控件定位的Poco框架,在截图3的区域,使用这个模式进行录制,脚本则是基于元素定位的呈现,录制出来的均是基于id的。如果没有id就比较尴尬需要自己写了。
做个总结
优:
1.跟市面上一些录制的软件比起来,Poco做了封装基于元素id定位,不是简单的基于坐标点击,已经可以很大程度提高元素识别成功率
2.Airtest基于图像识别完美解决了需要从图片上进行判断案例是否成功的自动化场景,比如网易内部大量应用于网易游戏的自动化测试
缺:
1.Airtest框架是基于录制的,做自动化的同学一般都会鄙视录制的方式,因为觉得得不到技术的提升并且想让录制的脚本运行起来也是需要花费很多时间去重写
2.Poco作为一个新框架,确实还有很多问题待处理,和市面上成熟的UI自动化框架相比,个人觉得没有选择他的理由
写在最后
对于这个新的框架的了解仅是到Hello world级别,也没有深究,分享出来看哪些项目刚好有对于这种框架的有需求,可自行深入研究学习。
如有写得不对或者不充分的地方欢迎指正、补充~