注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

Java实现渠道包自动化测试  

来自成艳艳   2016-09-24 16:36:04|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
最近考虑写个monkeyRunner脚本来简化繁复的渠道包验证工作,需要实现的功能也很简单,安装、卸载、启动并进入到欢迎页和全部课程页以及检查结果是否正确。
monkeyRunner本身是androidSDK自带的工具包,它提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。
通常都是用python来编写相应的脚本,但是monkeyRunner本身都是用java写的,所以用java写monkeyrunnber脚本本身应该也是可行的。于是决定用java来完成这个渠道包测试的脚本。
首先我用的IDE是eclipse。先导入android sdk  tools路径下的lib里面的几个包:ddmlib.jar、guavalib.jar、monkeyrunner.jar、sdklib.jar、chimpchat.jar。

Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
其实用java写monkeyRunner脚本主要依赖于chimpchat还有ddlimb,后者主要是设备连接。看下chimpchat的结构:
Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
可以窥见,chimpchat下面的API能满足我们对设备的基本操作,连接、启动、安装卸载和截图等等。但是chimpchat本身的API比较繁复,为了便于使用,可以自己封装下常用的操作。下面是一些片段:
Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
都是一些基本的操作应该很一目了然。

然后问题还是会发生的,当你通过坐标的方式定位了某个控件或者是进行了滑动的操作时,如果换了一个屏幕尺寸不一样的手机如何做到完美适配呢?

基于坐标的适配
很简单就是按照屏幕的长宽比,得出新手机上的横坐标和纵坐标。
比如我使用手机A来定位到两个坐标Xa,Ya,手机A的屏幕尺寸是Wa,Ha;而手机B的屏幕尺寸是Wb,Hb;比例关系如下:
Wa/Xa = Wb/Xb,Ha/Xa=Hb/Yb
于是产生了2个方法专门转换X和Y轴的坐标:而针对坐标的drag和touch操作都会调用这两个方法先转化下坐标,便于适应其它屏幕尺寸的手机。
Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
基于Id操作控件
一般除了滑动(drag)这类操作,对控件的操作用控件id来实现当然准确,比如:
Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
这里使用HierarchyViewer解析界面元素,来根据控件id获取控件的位置,这个位置是一个Point对象,通过获取其X和Y坐标来进行基于坐标的touch操作,从而控制控件。
Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
从图中可以看出HierarchyViewer类中提供的方法主要是用来定位控件相关的,包括根据ID取得控件,根据控件取得控件在屏幕的位置等。
我这里就主要用到了以下两个方法:
findViewById(String):通过控件的ID来获得代表用户控件的一个ViewNode对象。注意这里需要填写的id的可以通过应用源码或者HierarchyViewer工具来获取。方法返回的一个ViewNode的对象,代表目标控件,拥有大量控件相关的属性。
getAbsolutrPositionOfView(ViewNode):这个方法的目的是获得目标ViewNode控件的中间点的绝对坐标值,但是对Menu Options下面的控件不适用。

剩下的就是调用封装好的接口,进行渠道包的安装、卸载和启动。
对于云课堂安卓除了安装卸载启动,针对欢迎页的图片进行了比较来验证启动是否成功。如下。
Java实现渠道包自动化测试 - 网易杭州QA - 网易杭州 QA Team
 
最后用FatJar将其打成JAR包,安装包路径通过运行参数传入即可。
脚本完成后的确也大幅的节省了渠道包的测试时间。

  评论这张
 
阅读(230)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016