APP兼容性(2)- 揭秘岩鼠智能遍历

简介: Android APP兼容性测试一直都是广大开发者极为头痛的事情,究竟如何入手才好呢?UC研发效能分享内部经验,供大家参考!

概述

APP兼容性测试大部分采用的是通用的方法,就是在app内随机操作。Android自带的Monkey工具由于简单方便,一直沿用到现在并在开发者中广泛使用。但随着在大规模的应用,原生Monkey一些弊端也随之显现出来。

原生Monkey的缺点导致测试效果和效率都不可控,如何改善这些问题呢?岩鼠在这方面重点投入进行了较多探索,开发了“智能遍历工具”——利用UI自动化的方式获取APP的控件,进行一个随机的可控的遍历,来达到尽可能覆盖被测APP内所有的界面和控件的目的。

框架技术方案

基于UI自动化实现的Monkey遍历工具主要分为以下2类
image.png

从以上对比,可以看到基于Uiautomator方式直接在手机端运行,更方便部署执行,效率和稳定性也更好。因此岩鼠选择了这个方案进行改造。

当然在这里面还有一个问题就是Uiautomator官方已经不在进行维护,已经被Uiautomator2替代,像主流的Appium等框架也都是基于Uiautomator2进行开发了。但当前Android即使最新版本的android Q也仍然还能够使用Uiautomator,相关的api也基本能够满足Monkey遍历测试的需求。

相比于Uiautomator2,Uiautomator的优势是不需要安装apk可以推送jar到手机端直接执行,避免了像Uiautomator2的框架都需要安装2个额外APK的问题,特别是oppo,vivo等手机需要安装密码等导致的安装成功率问题。

而Uiautomator2的优势是后续官方的持续支持,更多更好用的API,可以获得应用context从而获得android的服务实现更多的功能。

岩鼠当前也正在逐步的演进,即将使用Uiautomator2来驱动测试。

遍历技术方案

控件的遍历方案是最核心的部分了。当然目标只有一个就是怎么样可以尽可能的覆盖APP所有的控件和功能,执行到最多的代码。

但遍历过程可能会遇到很多问题,例如:

  • 如何探索到所有的可操作的控件,访问到所有需要被测的activity?
  • 如何提高遍历效率,避免控件过多的重复操作?
  • 如何屏蔽掉我们不想要的操作?
  • 如何限定在我们想要的测试范围?
  • 如何解决登录问题?
  • 如何评估测试效果?
  • 如何帮助后续复现问题?
  • 包括但不限于以上的种种问题都是在实现可控Monkey过程中可能会遇到的问题,目前还没有一个统一的完美的解决方案,更多还是在实践中不断的改进和完善。

智能遍历算法

智能遍历流程

image.png

智能遍历测试流程整体上是遵循业界比较流行的方式通过Uiautomator获取当前页面的控件进行智能分析,提取分析出可遍历操作的控件。这样的好处是不言而喻的,对比原生monkey,避免了大量的无效点击,大大提高了单位时间内对App控件操作的覆盖率,提升测试效率。

深度优先搜索(DFS)

保证有效的测试,核心是有效可靠的遍历算法。根据github上的一些开源工具的研究发现,大部分的工具是使用深度优先搜索(DFS),原理就是限定能够访问的层级,然后递归的点击记录操作的控件,遇到走不到下一个界面时就回退到上一个界面循环下去。

听上去很不错,其实其中存在很多问题。例如 webview界面网页产生大量的控件而且深度也是不可控的。测试中遇到崩溃跳出等导致的重新递归。各种界面如何判定控件是被访问过的,都会对遍历过程产生很大的影响。

对于简单的APP这种遍历方式还是很有用的,但对于复杂的存在大量动态内容的APP执行的效果就不好评估了。

岩鼠智能遍历算法

岩鼠之前尝试使用DFS算法,但是效果并不太满意。因此自主开发了效果更优的智能遍历算法。

岩鼠智能遍历算法,主要是记录页面的控件信息,通过控件特征信息的提取对界面的唯一性进行定义,并记录了页面之间访问的关系。由于存在这些必要的访问关系,我们可以更智能的了解到访问过的页面和测试路径信息,避免了大量的重复点击和实现新路径的探索。

同时我们也可以对页面进行定向干预,对指定页面例如网页的访问,满足加强特定页面测试覆盖的需求。

另外由于我们的测试是运行在手机上的,并不依赖于例如appium的框架进行测试,因此相对比而言不依赖于这些框架的点击效率,整体测试效率的提升也是非常明显的。

评估智能遍历的效果

对于遍历效果的分析,岩鼠智能遍历工具提供了对于Activity级别的点击覆盖情况分析,可以知道具体访问过哪些Activity以及对应的点击次数。这个是可以通过岩鼠的报告页面进行查看。
image.png

另一个评估效果的方式,是对每次操作和点击位置的截图以及对界面控件信息的记录。但这对于在手机端执行的“智能遍历”来说数据量比较大,特别是很多时候都是运行几个小时,产生过几千次的点击在手机端保存这些信息不会太合适。不过岩鼠提供了实时的崩溃分析并进行崩溃点的录像。可以满足一定的崩溃定位需求,这个可以通过岩鼠测试报告进行查看。
image.png

另外平台也提供了遍历点击操作日志的下载,你可以看到测试过程中操作的activity以及控件的基本描述和操作类型,让你对测试情况有一个大概的了解。
image.png

未来方向

  • 优化算法,提升APP控件遍历覆盖度和效率
  • 建立遍历效果评估体系
  • 引入AI算法实现更智能的遍历

免费试用

岩鼠平台兼容性测试,当前开放免费试用,欢迎体验

系列文章:
APP 兼容性(1)- 概述

相关文章
|
2月前
|
测试技术
一款功能完善的智能匹配1V1视频聊天App应该通过的测试CASE
文章列举了一系列针对1V1视频聊天App的测试用例,包括UI样式、权限请求、登录流程、匹配逻辑、消息处理、充值功能等多个方面的测试点,并标注了每个测试用例的执行状态,如通过(PASS)、失败(FAIL)或需要进一步处理(延期修改、待定、方案再定等)。
49 0
|
5月前
|
人工智能 UED iOS开发
最佳平替APP:智能消费新选择
【2月更文挑战第29天】最佳平替是一款AI应用,响应消费降级趋势,通过智能匹配帮用户找到价低质优的商品替代品,节省开支。用户输入商品名,AI推荐相似平替选项,提高购物效率。涵盖商品、旅游景点、学校等多个领域,提供跨界平替建议。尽管AI推荐有时不准确,开发团队正持续优化,旨在帮助用户理性消费,避免不必要的开支,已获得用户支持。
135 1
最佳平替APP:智能消费新选择
|
5月前
|
传感器 内存技术
毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计
毕业设计 江科大STM32的智能温室控制蓝牙声光报警APP系统设计
165 0
|
5月前
|
机器学习/深度学习 数据采集 小程序
互联网智能3D导诊系统源码支持微信小程序、APP
互联网智能3D导诊系统源码支持微信小程序、APP
137 0
|
10月前
|
人工智能 监控 数据可视化
Java大型智慧工地APP云平台源码带AI智能识别功能
智慧工地”立足于互联网+,采用云计算,大数据和物联网等技术手段,针对当前建筑行业的特点,结合建筑企业信息化工作的需求,以建设工程为核心,以建筑行业企业、人员,项目信息库为基础,搭建智慧工地云平台,实现参建各方协同工作,实现施工现场全要素管理,构建可伸缩、可扩展的行业信息化解决方案。
119 0
|
人工智能 自然语言处理 小程序
AI智能导诊系统源码,支持以公众号、小程序、App 等形式接入
智能导诊系统是一种基于人工智能和大数据技术开发的医疗辅助软件,它能够通过对患者的症状、病史等信息进行计算分析,快速推荐科室和医生。通过简单的描述自身症状,系统即可找到最适合的科室
186 1
|
存储 文字识别 JavaScript
毕业设计So Easy:Java MySQL智能报纸阅读器APP应用
很多计算机专业大学生经常和我交流:毕业设计没思路、不会做、论文不会写、太难了...... 针对这些问题,决定分享一些软、硬件项目的设计思路和实施方法,希望可以帮助大家,也祝愿各位学子,顺利毕业!
|
TensorFlow 算法框架/工具
《使用TensorFlow搭建智能开发系统自劢生成App UI代码》电子版地址
使用TensorFlow搭建智能开发系统自劢生成App UI代码
《使用TensorFlow搭建智能开发系统自劢生成App UI代码》电子版地址
|
存储 安全 区块链
量化交易APP开发量化策略交易软件源码开发智能交易系统
区块链技术已经逐渐渗透到各个领域中,其应用场景也越来越多样化。其中,量化交易是一个极具吸引力的领域,许多投资者都希望通过定量交易来获得更多的利润。然而,传统的量化交易系统存在一些局限性,如交易平台的不透明性、数据源的不可靠性等等。区块链技术的出现为量化交易提供了新的解决方案,区块链跟单合约量化系统就是其中之一。
230 0
量化交易APP开发量化策略交易软件源码开发智能交易系统
|
人工智能 机器人
量化现货合约对冲智能ai机器人app开发源代码详情展示
量化现货合约对冲智能ai机器人app开发源代码详情展示