Android UI自动化测试框架的痛点与解决方案
如果无法正常显示,请先停止浏览器的去广告插件。
1.
2.
3.
4. O1 O2 O3
技术痛点 服务方案 通信方案
O4
展望
5. 自动化测试技术的业务场景
6. 具体的应用案例分析
需求:
1、自动化测试短视频应用,并保留操作过程的信息(录屏);
2、云真机平台实时展示测试过程(声音);
3、人工介入自动化流中的例外情况(弹窗);
4、 自动化执行检索(录入中文);
问题:
1. 业务脚本的适配性
2. 云真机平台服务与自动化脚本同时运行,并控制设备操作(输
入文本、操作屏幕、发送按键);
3. 如何录入中文;
4. 如何处理应用权限;
5. 有些控件无法通过文本或ID等特征识别(图片中绘制的控件);
6. 云真机平台如何在浏览器上播放手机声音;
7. 痛点
8. 业务脚本适配(uiautomator1.0 兼容问题)
1、初始化测试服务UiAutomation
2、初始化U1测试框架:UiDevice
9. 中文录入(uiautomator1.0 测试框架不支持)
1. 依赖自定义输入法输入中文
2. 测试框架内录入中文
10. 准确判断应用授权情况
AppOps 判断权限状态
可以判断所有权限的授权状态
定位权限、悬浮窗权限可以直接授
权
可以取消授权
通过package info获取应用申请的权
限,精准判断
Shell 命令查看授权状态
11. 计算机视觉处理(按图行搜索不能定位的控件)
图片搜索
OCR
耗时长,1S左右
混合字符识别率低
图片比对
耗时长,200ms左右
图片分辨率必须一致
搜图
耗时长,1S左右
容易收到干扰
解决分辨率不统一问题
12. 多媒体处理(音视频转发)
录制带麦克风声音的屏幕无法实时转发;
依赖App转发屏幕或声音的服务稳定性差;
录音 录屏
录制麦克风声音 录制屏幕
实时转发麦克风声音 录制带麦克风声音的屏幕
转发屏幕信息需要依赖推流服务;
录屏操作每次都需要授权;
实时转发屏幕信息
13. 服务方案
14. 利用反射技术初始化uiautomator1.0脚本
15. 利用Android app提供个性化测试服务
输入法 图片处理 多媒体
输入中文 图片比对 录屏
增量输入 图片搜索 录音
发送按键 文本识别 转发音频
16. 通信方案
17. 利用ContentProvider服务提供稳定通信
1. 应用间共享数据的服务;
2. 应用停止运行时也能正常提供服务;
3. 基于Binder实现跨进程通信;
4. 不可传输超过1M的数据
5. Shell进程可以通过IContentProvider
访问内容提供者
18. 构建Http Server 通信服务解决大文件传输
1. 基于Netty框架;
2. 框架广泛应用于分布式计算、游戏和通信等行业,服务稳定可靠;
3. 可并发处理Get、Post请求;
4. 可以自定义传输数据量;
5. 便于统一定制消息接口,规范测试系统协议;
19. 展望
Shell进程实现基础服务,可以按需初始化U1;
Shell进程提供测试所需功能,可依赖内部
App实现个性化功能;
业务脚本可以集成Shell进程框架,调用API完
成测试;
业务脚本可以在局域网内或手机内通过
get/post请求调用测试功能;
操作设备实时性要求高的业务中通过socket
通信,以Protobuf协议封装接口;
通过App实现测试赋能
20. 360技术
THANKS
360质量效能