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

网易杭州 QA Team

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

 
 
 
 
 

日志

 
 

Robotium学习之运行原理解析---Instumentation  

来自nickbeibei   2015-06-12 17:42:23|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |
导言:Robotium,最先接触的自动化框架,主要针对Android平台的应用进行黑盒半白盒自动化测试,它提供了各种模拟手势操作例如点击、滑动、长按等,以及一些查找和断言机制的api,能对应用各种控件进行操作。

Robotium特点:
1.使用简单,测试用例容易编写
2.不需要源码,可直接测试APK

Robotium缺点:
1.跨进程的支持
2.webview的支持

那么ok,简单的介绍了一下robotium,我想一般在做android自动化的都会知道robotium,那么robotium是如何对android应用进行一些操作测试的呢,接下来大家一起来学习探讨吧。

Robotium基于Instrumentation
Robotium学习之运行原理解析---Instumentation - 网易杭州QA - 网易杭州 QA Team
Instrumentation是Android测试系统的核心,通过Instrumentation,你的测试应用程序可以精确控制应用程序。使用Instrumentation, 你可以在主程序启动之前,创建模拟的系统对象,如Context;控制应用程序的多个生命周期;发送UI事件给应用程序;在执行期间检查程序状态。

1.Instrumentation框架通过将主程序和测试程序运行在同一个进程来实现这些功能。

“instrumentation can load both a test package and the application under test into the same process. Since the application components and their tests are in the same process, the tests can invoke methods in the components, and modify and examine fields in the components.“

“Instrumentation可以把测试包和目标测试应用加载到同一个进程中运行。既然各个控件和测试代码都运行在同一个进程中了,测试代码当然就可以调用这些控件的方法了,同时修改和验证这些控件的一些项也不在话下了。“

2.InstrumentationTestRunner

InstrumentationTestRunner继承于Instrumentation,通过解析获取和建立目标测试用例和测试集然后知道测试的运行。

android.test.InstrumentationTestRunner会在目标应用代码运行之前调用onCreate方法来建立一个新的线程并准备后消息队列,然后会开始基于Instrumentation的测试集的测试。

所有收集到的测试集进行一个for循环然后取出每个测试用例在junit.Framework.Testcase环境下进行运行了。

3.Instrumentation事件注入--控件操作
Robotium学习之运行原理解析---Instumentation - 网易杭州QA - 网易杭州 QA Team
从各个方法的源码可以看出,Instrumentation都是用的InputManager来实现的事件注入
tips:Android下,有三种事件注入的方式,可自行搜索学习

那么这里来总结一下,robotium基于android的instrumentation类来控制测试线程于apk线程于一个进程中,从而可以捕获并且操作控件,具体测试的运行由testrunner类来驱动,对控件的操作一部分依赖于InputManager的事件注入方式


 













 

  评论这张
 
阅读(668)| 评论(0)
推荐 转载

历史上的今天

评论

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

页脚

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