zoukankan      html  css  js  c++  java
  • 腾讯优测优分享 | 让你头疼的手机应用自动遍历可以这样实现

    腾讯优测是专业的移动自动化测试平台,提供全面兼容性测试,远程真机租用等多维度的测试服务,让测试更简单!
    安卓平台上应用程序的遍历一直是研发工程师十分关注的问题,因此我在工作中也在不断地学习探索,目前处在探索的初期阶段。在我看来,遍历自动化的难点主要集中在以下两个方面:
    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中,并绘制图片
     

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

    *序列化和反序列化clickable

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

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


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


    腾讯优测是专业的移动云测试平台,为应用、游戏、H5混合应用的研发团队提供产品质量检测与问题解决服务。不仅在线上平台提供自动化兼容性测试、云手机远程租用与调试、漏洞分析、自动化测试工具Xtest等多种质量检测工具,更为VIP客户配备了专家团队提供定制化综合测试解决方案。

  • 相关阅读:
    超级楼梯
    hdu1040
    hdu2033(惭愧)
    hdu2032杨辉三角
    hdu1013Digital Roots
    hdu2031
    Linux信号(signal) 机制分析
    android init重启service(进程)
    [android] init进程 .rc文件中service、action的parsing
    oom_adj
  • 原文地址:https://www.cnblogs.com/utest/p/5866318.html
Copyright © 2011-2022 走看看