Testingba工作室

在测试的路上 我们和你一路同行 我们交流的不仅仅是技术更是测试思想

android自动化测试_uiautomator方案实现要点


 

 

android的自动化测试方案,弄了好久了。

 


Monkeyrunner对象引用速度太慢,过于简陋;

Robotium不能跨应用(不知道现在最新情况如何),即便能够跨应用我都不是太想用他,太麻烦,而且毕竟不是亲生的,稍微google搞点动作,就够他一阵忙乱的;


Google在sdk4.0以后提供了一个自动化解决方案uiautomator:

优点:可以跨应用了;这可是亲生的;

缺点:必须sdk4.0以上版本;要想实现的好,最好有开发配合;java项目编译为jar后需要push到手机才能运行,也就是说必须打印日志暴力调试。

 

一直有研究和简单使用,但是一直没有推向生产使用,理由很简单,性价比不够高,每行代码都需要自己去查看元素对象的引用方法一点点的编写,太麻烦了。

 

但是这个解决方案毕竟是可以解决android的自动化测试的。

 

不过要想走得顺畅并不容易,需要关注几个要点:

1.      需要一个工具,打开源码文件后,将所有的布局文件打开,写入contentDescription属性,如果不写这个属性也能对象引用,但是会很麻烦,你需要去找各种不同的属性进行引用,既然人家已经提供了这个属性,目的就是让你方便引用的,所以最好充分利用,写完后,要留心,因为listview的行布局文件是一个,也就是说如果代码运行后,你的listview控件的每行的contentDescription属性都会是一样的,需要使用其他的属性进行引用,最好呢是在代码中修改该属性;

2.      上述方法搞定了静态控件后,找到开发,确定哪些是动态生成的,在代码中加入动态对象的属性,编译通过后,提交到版本库;

3.      建立长效机制,这个是最重要的,以后每次增加了新的模块,开发都要给控件提供该属性的唯一值,开发测试可以约定一个命名方式。

 

这个解决方案的成败关键是开发测试的充分沟通和长效机制的运作,要不然就会出现下面的情形:

开发把代码扔给测试就不管了,每次版本发布,都需要给所有的静态对象加上contentDescription属性,动态对象测试历尽千辛万苦才引用到,然后执行。试想想,要是版本频繁发布,这样根本就无法正常运转下去。

 

但是这个方案是一个可行的可用的解决方案。

 

参考工具:

这个vbs脚本是通过指定项目文件目录,自动搜寻下面所有的layout目录,找到所有的布局文件,将布局文件中的每个元素都加上contentDescription属性,以便uiautomator进行对象识别和引用操作。

http://download.csdn.net/detail/testingba/6931865



 

 

 

 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

android自动化测试_uiautomator方案实现要点

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭