Press "Enter" to skip to content

基于机器学习的自动化测试弹窗处理实践

1. 背景与痛点

 

B 站游戏的业务不断发展,对游戏自动化测试的机型覆盖率、测试效率和稳定性都有了更高的要求。

 

在现有技术的批量自动化兼容性测试方案中,当需要同时在海量的、不同分辨率不同品牌的手机上跑自动化测试时,一般需要测试人员频繁手动的去点击处理手机设备上授权、验证等弹窗,或需要通过元素定位的方式去给每一台手机做适配。

 

现有的弹窗处理技术运行过程需要不断遍历读取手机控件的元素信息,会占用大量手机和服务器资源,此外还无法自适应未经过适配的手机,某些情况下会出现漏处理,导致部分设备自动化流程中断以及造成测试结果不准确、漏测等情况。

 

因此我们要对现有技术机型升级改造,引入基于机器学习的自动弹窗处理技术。

 

2. 目标

 

我们为实现以下 3 个自动化测试的目标

 

l  减少人工频繁处理批量兼容性测试任务过程中的弹窗所花费的时间

 

l  减少测试过程中的漏处理情况

 

l  减少新设备适配时间

 

需要在不影响设备本身性能的情况下,完成各种授权弹窗、异常弹窗的自动化处理,并且还能支持单设备和多设备同时并发处理,解决测试效率的问题。

 

3. 我们的解决方案

 

通过深度学习和目标识别技术预先对不同分辨率、不同型号的手机弹窗页面进行训练模型,利用模型预测出设备弹窗位置详细坐标并自动对设备进行授权处理。

 

这样可以避免测试人员执行大量兼容性测试任务过程中需要来回点击弹窗的情况,同时该技术还能自适应不同品牌分辨率的设备,也不需要人工对每一台手机去适配,大大提高了兼容性测试的效率和准确性。

技术选型

 

我们选择了 YoloV4-Tiny 而不是 YoloV4。

 

因为 YoloV4-Tiny 是 YoloV4 的简化版,YoloV4-Tiny 仅使用了两个特征层进行分类与回归预测,少了一些结构,所以预测速度大大增加了。

 

YoloV4 共有约 6000 万参数,YoloV4-Tiny 则只有 600 万参数。模型体积方面,YoloV4-Tiny 只有 20+MB,而 YoloV4 有 200+MB。

 

4. 预期效果

 

针对大批量移动设备测试过程中需要手动处理各式各样的授权弹窗、异常弹窗情况,通过深度学习,对各种设备型号的弹窗图片进行学习。

 

测试人员不需要关注不同型号设备的弹窗样式,通过该工具采集设备画面来自动完成设备弹窗处理,对于新设备的接入,该工具只需针对新设备的弹窗进行一次训练即可识别新设备弹窗,极大的提高了自动化测试稳定性和准确性,提示测试人员测试效率。

 

5. 实施方案

 

1.  提取 YoloV4-Tiny 算法核心代码,划分成两部分,分别是:模型训练部分、弹窗预测部分

 

2.  优化和封装模型训练部分代码,实现弹窗图片数据增强功能、模型 loss 收敛自动识别功能、模型迁移训练功能、自动挑选最佳模型功能等

 

3.  优化和封装弹窗预测部分代码,实现重复类别最大置信度获取方法、并发预测方法、异步接口、轮训处理等方法

 

4.  将弹窗预测部分代码容器化,部署至线上集群,提供异步接口供自动化测试系统调用

 

5.  将弹窗预测部分代码容器化,部署至 jenkins 服务中,按指定频率对自动化集群中的测试手机进行轮训扫描

 

6. 具体案例

 

(一)被动弹窗处理

 

1.  在处理被动弹窗时,我们的弹窗处理工具以接口的形式提供服务,供自动化测试框架调用。适用于自动化测试执行期间。即自动化测试工具按需调用弹窗处理服务来处理手机弹窗,确保自动化测试过程的稳定性。

 

2.  通过 yolo 机器学习算法对图片和标签数据进行训练,算法模型输入内容有待训练的弹窗图片,弹窗标签(标签包含:弹窗类型、弹窗位置坐标,图片路径等)

 

模型输出内容有:是否有弹窗,所预测弹窗的位置坐标,弹窗的类型,所预测弹窗的准确度

 

以下是图片标签数据和模型输出样例:

3. 通过遍历所有训练模型准确度,生成一个最高准确率模型

 

4. 基于 yolo 模型,创建支持高并发的异步服务接口

5. 手机自动化测试框架定时自动截图并转成 base64 字符串,数据无需清洗,直接通过调用弹窗处理工具的接口,将手机图片、手机连接地址发送到弹窗处理工具。该工具通过机器学习所训练得到的模型识别手机画面是否有弹窗、置信度以及弹窗类型与具体按钮坐标,弹窗处理工具服务根据识别的结果类别,自动采取不同的处理方式对目标手机进行处理操作,例如点击操作、密码输入操作等

 

处理过程:

识别到的异常弹窗以及坐标位置:

(二)主动弹窗处理

 

1. 主动处理方法是我们的弹窗处理工具通过主动轮训测试环境手机画面,并完成弹窗处理的过程。适用于手机设备闲置期间。手机会弹出各种广告弹窗、系统升级等弹窗,这些需要弹窗处理服务主动轮训去处理,以确保下次自动化测试开始的时候不受影响。

 

2. 通过 yolo 机器学习算法对所有已知手机弹窗图片进行训练和学习

 

如下图

3.  通过遍历所有训练模型准确度,生成一个最高准确率模型

 

4. 启动弹窗处理工具,该工具会主动通过多线程与 adb 批量对测试环境内所有手机进行截屏,图片数据无需清理,yolo 模型直接对图像进行识别

5. 弹窗处理工具配合弹窗识别模型,使用多线程快速过滤每一张图片,针对有弹窗的图片进行弹窗类型与位置预测识别,对成功识别到的手机进行实时弹窗处理,处理完成后通过循环机制,进行下一轮检测。

7. 后续规划

 

·         替换 yolov4-tiny 算法,将尝试使用开源的 PaddleDetection 目标检测算法

 

· 解耦 AI 弹窗处理服务与手机的连接方式,让该服务更加通用化

 

· 加入 OCR 辅助检测算法,提高 AI 弹窗处理服务准确率 95% → 99%

 

·         搜集海外手机弹窗图片来继续训练当前模型,让弹窗预测能力更广更全

 

作者:游戏事业部 质效保障部 EP 团队

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注