腾讯优测优分享-手机应用自动遍历的实现

摘要:

腾讯优测是专业的app自动化测试平台,安卓平台上的自动化遍历如果框架嫌麻烦可以尝试下,我在工作中也在不断地学习探索,目前处在探索的初期阶段。

关键词:

安卓自动化遍历  android适配  移动研发


在我看来,遍历自动化的难点主要集中在以下两个方面:

1.在不知道控件属性的情况下,如何定位和识别控件

2.无特定业务逻辑的情况下,如何导航到目标控件

虽然难题在眼前,但我仍不知道遍历后能定位多少适配问题。发此文一是记录遍历开发过程细节点滴,二是与大家一同分享和探讨遍历技术。

遍历框架依托在appium基础上,我也是一个月前刚刚了解,喜欢它可以使用任意的开发语言编写你的自动化代码,ruby,python,java,perl等等;最重要的是,它可以满足腾讯优测适配测试的需求。

我遍历的前期工作主要是解决基本需求-——遍历所有用户界面,甚至所有可点击控件

我在一开始的尝试不涉及任何业务逻辑,仅依托框架自动遍历所有clickables,但却遇到很多问题。通过摸索,我找到了最终的成型方案——半业务逻辑半自由遍历。

框架的数据结构建立在graph模型上,将应用的每个activity抽象为graph的节点,每个activity之间的跳转关联抽象为edge,并且实现定义graph为方向矢量图。之所以这么做主要是为了实现导航,通过graph的边遍历实现activity的遍历,自增长模式的graph在遍历每个clickable时会形成新的node和edge,新的node和edge会完成递归,并统一由graph管理。

半业务逻辑是指首先需要定义好应用中的activity.layout,多个layout的会导致clickable的点击失败,在未找到更好的解决方案之前,采取预先定义的方案。

clickables是通过标准3c协议获得的手机可点击控件。之所以说通过标准3c协议,主要是因为用到了webdriver,它支持xpath,通过xpath获取到了当前页面所有可点击控件,在此我为了提高性能,对clickables进行了一次过滤,去除了重复位置和focusable为true的控件。

遍历的“引擎”能够帮助我实现模拟用户点击,通过上面的clickables点击进入不同的页面(activity和layout)或者仅仅是改变了当前的page-source。

弄点干货吧,贴代码,只想告诉大家,appium可以做遍历,可以做跨平台适配(android&ios)

*—-(python实现)

*递推调用find_my_nodes方法,获取当前activity的关联ativity,添加到grpah中,并绘制图片

 

腾讯优测优分享-手机应用自动遍历的实现_第1张图片

导航到新的layout,序列化当前的clickable,作为两nodes的edge的key值,稍后调用可以实现点击跳转。

腾讯优测优分享-手机应用自动遍历的实现_第2张图片

*序列化和反序列化clickable

腾讯优测优分享-手机应用自动遍历的实现_第3张图片

目前正处在开发阶段,优化并未完成。

自生长模式的遍历最终会得到一个png,代表当前遍历过的所有activity,支持节点完整性的对比。

 

腾讯优测优分享-手机应用自动遍历的实现_第4张图片

这就是我对手机应用自动遍历实现的一点心得,希望对大家的工作有所帮助。另外,如果看后有意见建议,可以通过下面的评论功能与我交流。

文/腾讯优测 姚远

你可能感兴趣的:(测试,开发,安卓,适配)