前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >安卓UI自动化工具通用卡脖子技术问题已解决-4399AT

安卓UI自动化工具通用卡脖子技术问题已解决-4399AT

作者头像
厦门-安仔
发布2022-12-12 14:17:31
7050
发布2022-12-12 14:17:31
举报

ps:4399AT是基于appium定制改造的安卓UI自动化工具,可以用于全自动化多设备兼容测试,压力测试,遍历测试,功能测试,覆盖安装测试等,定位方式除了常规定位方式,包含多xpath定位,图像识别来解决webview及同一个apk不同版本控件定位问题;功能多多,就不再描述,自行查看订阅号文章;

做安卓UI自动化的一个最大问题,就是截图,截图可以用于发现问题步骤 追溯以及不同设备同一个页面的对比,图像识别定位等,那目前基于google系统开始安全性进行升级,特别是从Android 9以上系统,由于权限问题造成minicap中的minitouch没有权限,造成黑屏,只有华为的手机部分手机可以支持,可以支持到android12,而小米手机,oppo等手机你就别想了,除非类似小米手机,你用它自己编译的minicap.so,并且minicap的兼容升级跟不上android 系统的升级,老是慢一拍,这样就造成维护成本以及做多手机兼容性测试就存在问题了。好在还有一个谷歌的“儿子”scrcpy,这个可兼容性贼强,维护成本低,也不存在不同厂商的兼容性问题。所以就折腾起来。

解决方案有几个:

1.开发一个apk用来跟自动化工具进行通讯,截图,貌似airtest 就是这样,这样成本很大,而要经常维护,对于不同厂商设备还不一定兼容,涉及权限技术问题;

2.持续查找每个厂商的自己编译minicap.so,也不大现实,貌似只有小米的找到的比较多,其余OV等品牌少,不显示,放弃;

3.用scrcpy,直接自动化配合scrcpy进行改造,恩,可行,但遇到问题,开发要求高,要修改scrcpy底层代码,也尝试修改了,遇到了技术瓶颈,暂时放弃了,技术,成本有限,暂时放弃;

4.scrcpy-minicap, scrcpy手机端流转成minicap可接受的jpeg格式,这方案是成本低,实现最快的,改动原来框架量也是最小,这个也是看别人论坛有实现过;综合以上,就第四个方案,开干:

设计跟实现思路是这样:主要是通过 scrcpy 的socket 通讯机制 及 adb forward 端口转发让手机和pc建立socket连接,然后通过获取视频流的frame将frame转成jpeg格式的二进制数据(使用libturbojepg.so 及 libjpeg.so进行jpg转换及压缩)通过socket发送给pc端。pc端获取数据,并将二进制数据保存成jpeg文件;恩,没错就是这样,杠杠的。

scrcpy github地址:https://github.com/Genymobile/scrcpy ;主要修改server.java 图片质量,比特率设置,DesktopConnection.java 主要修改 socket连接方面,screenEncoder.java 主要修改屏幕编码相关,ScreenEncoder.ImageAvailableListenerImpl.java 主要是修改对jpeg图片进行压缩,并压入socket,JpegEncoder.java 主要修改加载处理jpeg库.。(代码就不放出来,太多了,这是测试开发同学的成果) 经过反复测试,经过安卓10以上10个品牌测试,没有问题,其中发现的两个坑是:1.由于pc端使用的是minicap用来接收数据,所以socket 传输的数据格式遵循minicap的数据格式;2.使用System.loadlibary() 加载 so库,建议使用库的全称,省略前缀(lib)和后缀(.so)部分手机可能会无法正常加载动态连接库;

具体的可以查看这个案例视频:http://mpvideo.qpic.cn/0bc36iaaaaaau4addrzmubrvb4wdadzaaaaa.f10002.mp4?

(视频有点长,可以耐心看下) 这个简单的视频自动化实现的功能有:1.apk自动化授权;2.测试过程任意提示框跳出的点击;3.图像识别(一张图片在任意手机同样页面都可以识别到);4.scheme协议跳转功能(解决步骤多,执行效率和用例成功率问题,也解决数据的录制和任意多种数据随机测试);至于报告等其他的功能就不说了。 以上,就是关于整体解决UI自动化的卡脖子问题的分享

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试一般不一般 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像识别
腾讯云图像识别基于深度学习等人工智能技术,提供车辆,物体及场景等检测和识别服务, 已上线产品子功能包含车辆识别,商品识别,宠物识别,文件封识别等,更多功能接口敬请期待。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档