美文网首页Android知识
ADB+UiAutomator实现智能精准化测试

ADB+UiAutomator实现智能精准化测试

作者: 烨枫_邱 | 来源:发表于2017-12-19 10:32 被阅读98次

上一篇文章介绍了一种基础性的自动化测试工具ADB,同时描述了如何将ADB封装后自动化在手机端执行;该方法勉强可以让手机“动”起来,但时间久了会觉得繁琐前期的坐标录入和用例执行时的不可控是该工具面临的两个最大的弊端;因此,考虑如何让手机智能化的读懂测试者的心声,如何提升回放的精准性是首要解决的问题!


引入UiAutomator智能化获取元素

Uiautomator对自动化测试同学来说并不陌生;使用UIAutomatorViewer可以清晰的找到所选元素的属性列表:(这里暂且叫它XML树)

是不是很吃惊?右边FrameLayout红框中居然显示了“WLAN”这行元素的所有属性;index|class|package等;那这意味着什么?

说明,我们可以利用这个先决的便利条件,把元素获取出来,再传给Uiautomator去执行回放;

换句话说:我们可以利用Uiautomator去执行回放,便可大大提升回放时的精准性;

再换句话说:将红框中的部分看成一个对象,一个Node,一个树的节点,只要把这个对象交给Uiautomator,它就可以在手机的界面上画个框框,是不是也就能再对象上进行操作了?!(怎样把对象交给Uiautomator我们放到最后讲,这里不是重点)

重点是如何将手指点击位置和上文中的这个“对象”联系起来

这里就不得不提到大家耳熟能详的ADB了,废话少说,直接上代码:

adb shell getevent

输出格式 --> 设备名: 事件type 事件code 事件value

这里的0035和0036分别表示屏幕上的X坐标和Y坐标,后面的值表示具体的坐标点,通过16进制转换可以得到值1142和1527,随便找个手机的屏幕分辨率为800*480的,很明显两个点是完全不匹配,那如何转换呢?

在cmd中输入adb shell getevent -p

找到您的屏幕设备中0035和0036的含义,我的手机中可以看到x的值min为0,max为1172,y的值min为0,max为1900。

这样就找到您的设备的坐标具体大小值,这里计算公式如下:

x=(x-xmin)*480/(xmax-xmin) ;

y=(y-ymin)*800/(ymax-ymin);

得到触碰点坐标后,千万别高兴太早,核心点在最后这一步:需将坐标点带入到上面的XML树中去反查该坐标属于哪个树节点。(具体的算法就不在这里做介绍了,实现方式有很多种,具体以性能最优为佳;如实在没有头绪可以私聊)

将查到的对象构造出来交给Uiautomator实现精准执行

总结:

以上方法智能化的监控了人在手机界面的一系列操作,实现了操作时的跟随录制,并以元素操作的方式实现了精准性回放;对自动化测试本身来说实现了往智能化方向的转变,并留下可以参数化构建用例,持续集成式回放的可能,扩展性较强。

相关文章

  • ADB+UiAutomator实现智能精准化测试

    上一篇文章介绍了一种基础性的自动化测试工具ADB,同时描述了如何将ADB封装后自动化在手机端执行;该方法勉强可以让...

  • 【5】精准测试技术

    精准测试技术解决的问题 1、可视化2、智能化3、可信4、精准 什么是精准测试方法 精准测试方法通过代码插装后打包部...

  • 自动化测试者眼中的图像识别

    当自动化测试沉溺于ADB+Uiautomator给Android手机带来的便捷时,更高阶的问题接踵而至。如何用一套...

  • 数字经济园区 | 指引经济发展进入快车道

    数字经济园区基于物联网、大数据、5G、云计算、人工智能等技术,实现园区基础设备网络化、功能服务精准化、运营管理智能...

  • 【恩易】扬尘在线监测系统解决方案

    【恩易物联】扬尘在线监测系统解决方案,智能化,精准化监测环境质量。

  • 人工智能技术如何让智能家居变得更聪明?

    智能家居是能能够实现完全的智能化,不仅需要硬件的支撑,还需要软件的支撑,也就是如何让硬件拥有思维,实现智能化。智能...

  • 敬业一直都在

    精准人脉: ️1:精准人脉更专业化,操作更简单方便,无须备份通讯录 ️2:更精准客户,而且能精准到区,实现同城...

  • 测试智能合约

    测试智能合约 框架 Truffle 提供了一套标准的自动化测试框架,这就使得测试智能合约变得简单了。这个框架允许你...

  • 好动健身系统接入智能门禁,开启健身房的黑科技

    好动智能健身系统专注打造互联网+智能健身体验馆,实现“让营销更精准,让服务更高效”,实现健身房运营成本少,收益快,...

  • 自动化测试原理

    自动化测试的实现原理,针对不同的类型(静态测试和动态测试)来区别对待。动态测试的自动化实现主要通过特定的程序来模拟...

网友评论

  • 70fdec47a92b:难点,👍
  • 早起有虫吃:如果运行了100个脚本,第30脚本运行发现了bug,那你如何去截取第30个脚本运行的事件点击
    烨枫_邱:在回放的过程中,需要有断言,断言不对的地方,绝大多数公司是将失效用例就此打住退回到Idle界面,再执行下一条;来规避后面的用例大面积失败;久而久之,用例间相互的独立性增强,写用例时考虑的情况增多(绝大多数情况也是后知后觉);因此,你可以采用人工智能的方式进行判断,给手机一个决策权
  • 早起有虫吃:你好,手机里面的事件值实在太多,做起来估计很费劲吧,而且录制回放直接运行脚本不是来的更加方便吗
    早起有虫吃:@烨枫_邱 受教了思路还是挺好的
    烨枫_邱:你好,手机里的事件的确很多,但是可以对事件进行归类和抽象;录制还是那个录制,大同小异,但是回放可以简单到不用Java的脚本,这种方式才是更方便的。上文的截图只是告诉大家可以利用uiautomator的这个机制做文章
  • 敖特曼Qiana:不明觉厉:clap: :sunglasses:
  • 427415665825:赞:+1:🏻

本文标题:ADB+UiAutomator实现智能精准化测试

本文链接:https://www.haomeiwen.com/subject/umfbwxtx.html