何梁伟 基于AI的移动端自动化测试框架的设计与实践

1. 基于 AI 的移动端⾃自动化 测试框架的设计与实践 何梁梁伟 爱奇艺资深 Android 架构师
3. 何梁梁伟 资深 Android 架构师 • 爱奇艺资深 Android 架构师 • 沪江学习 Android 团队负责⼈人 • Kotlin 早期布道者 • KotlinThree 发起⼈人
4. • 理理想中的 UI 测试框架 • 深度学习带来的机会 • Aion 的诞⽣生 • Aion 的优势与挑战 • AI 未来
5. • 易易于开发和维护 • 稳定性 • 执⾏行行效率 • 跨平台 • 跨应⽤用 • ⽀支持 Hybrid How
6. ⽀支持语⾔言 控件捕获 UIAutomator Appium Java/Kotlin 较⾼高 Java、Python、 Ruby等 ⾼高 Robotium Java 较⾼高 跨平台 否 是 否 跨应⽤用 是 是 否 ⽀支持 Hybrid 不不⽀支持 ⽀支持 ⽀支持 稳定性 中 中 中 Espresso UIAutomation Java/Kotlin JS 较⾼高 较⾼高 否 否 否 ⽀支持 中 是 ⽀支持 中
7. 传统框架的缺点 • 跨平台能⼒力力差 • 跨应⽤用能⼒力力差 • 稳定性对ID依赖较⼤大 • 控件捕获成本⾼高 • dump 系统视图树⼏几率性的失败
8. ⼀一种⽀支持所⻅见即所得⾃自动化测试框架
9. Sikuli
10. AirTest
11. Sikuli&AirTest 的不不⾜足 • 准确率不不⾜足 • 没有层次结构 • 代码稳定性差 • 代码可维护性差
12. f点i击nd“(t‘atba”b⾥里’里⾯)面.“fviinpd”(的te按x钮t='会员').click() f点i击nd“(导‘航na”v上’)的.“f搜in索d(”i按m钮g='搜索框').click() s往c下ro滚ll动do,wn找_a到nd“_奇fi葩n说d(”'的co“v封er⾯'面)”.,fi点nd进('去延禧攻略略').click()
13. • 图像切割 • 图像分类识别 • OCR ⽂文字识别 • 图像相似度匹配 • 像素点操作 能⼒力力的需求
14. • 理理想中的 UI 测试框架 • 深度学习带来的机会 • Aion 的诞⽣生 • Aion 的优势与挑战 • AI 未来
15. Top5 准 确 率 从 75% 提 升 到 98%
16. OCR Accuracy 93% total accuracy 98% chars accuracy
17. • 理理想中的 UI 测试框架 • 深度学习带来的机会 • Aion 的诞⽣生 • Aion 的优势与挑战 • AI 未来
18. PixelToApp
19. PixelToApp
20. 存在的问题 • 复杂界⾯面处理理难度⼤大 • 阈值设置适应性差 • 瓶颈突破⽐比较难 • 需要使⽤用⼤大量量算法,维护性差
21. Pix2Code train sample
22. 存在的问题 • 准确度不不够 • 中间⼲干预难 • 训练素材标注成本⾼高 • 切割精准度不不够
23. Aion 是怎么做的
26. core 图像切割 提取⼦子元素 条件判断 测试⽤用例例 截屏 场景判断 布局分类 AI 填充⼦子元素 执⾏行行/结束 传统测试框架
27. ⾃自定义算法 背景分块 切割 分布 相似切割 Jaccrad 相似切割 极⼤大空间 切割 直⽅方图 相似切割 元素Jaccrad 相似切割 前后景 分层
28.
29. [ [ 19., 300., 581.][ 830. , 945.5, 1061. ] ] [ [ 36. , 74.5, 113. ][162., 211., 260.] [336. , 459.5, 583. ][662., 710., 758.] [839., 893., 947.][ 987. , 1013.5, 1040. ] ] [ [ 36. , 74.5, 113. ][839., 893., 947.] ] [ [ 19., 300., 581.][ 830. , 945.5, 1061. ] ] (similarity, 0.856)
30. 0.856 0.994 0.948
31. 分 类 模 型 选 择
32. AI 优化
33. 素材分布不不均 5000 1000 500 10 脚本⽣生成 更更多应⽤用
34. Top-layer 到 Fine-tune 冻结 10 训练
35. 多结果并⽤用 结果 灰度图 MobileNet v2ShuffleNet v2 原图 轮廓图
36. • 理理想中的 UI 测试框架 • 深度学习带来的机会 • Aion 的诞⽣生 • Aion 的优势与挑战 • AI 未来
37. ⽀支持语⾔言 控件捕获 UIAutomator Java/Kotlin 较⾼高 Appium Java、 Python、 ⾼高 跨平台 否 是 跨应⽤用 是 是 ⽀支持 hybrid 不不⽀支持 ⽀支持 稳定性 中 中 Robotium Espresso UIAutomation Aion Java Java/Kotlin JS Python 较⾼高 较⾼高 较⾼高 低 否 否 否 是 否 否 是 是 ⽀支持 ⽀支持 ⽀支持 ⽀支持 中 中 中 较⾼高
38. 优势 • 可⻅见即可得,易易于理理解和开发 • 对系统框架依赖弱,跨平台 • 稳定性强,不不⽤用担⼼心 ID 混淆的问题 • 分类少,层次浅,视图捕获简单 • ⽆无缝⽀支持传统框架
39. • 准确率 • 样本数量量 • 执⾏行行时间 • 极度复杂背景的元素提取 • 特征极少的元素识别 • 悬浮元素的提取 挑战
40. • 理理想中的 UI 测试框架 • 深度学习带来的机会 • Aion 的诞⽣生 • Aion 的优势与挑战 • AI 未来
41. • 错误界⾯面识别 • ⼦子元素 AI 识别 • ⻚页⾯面预加载 • UI2Code • 录屏分析 AI More