Android自动化测试框架总结

发表于:2020-11-25 09:51

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:博客园

  
  Android常用的自动化测试工具框架:
  Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,MonkeyTalk......
  但这些工具框架都是什么呢有什么联系呢,先通过一张图来了解一下吧。
  Monkey
  Monkey1是AndroidSDK自带的测试工具,是一个命令行工具,可以运行在模拟器里或实际设备中。可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用程序进行压力测试。由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。
  编写语言:命令行
  运行环境:使用adb连接PC运行
  测试对象:Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。主要测试客户端应用的稳定性,健壮性
  测试限制:主要是做随机模拟用户操作移动端的操作
  例子:
  这样就开始乱点日历应用了。
  MonkeyRunner
  MonkeyRunner2是AndroidSDK提供的测试工具。严格意义上来说MonkeyRunner其实是一个Api工具包,比Monkey强大,可以编写测试脚本来自定义数据、事件。缺点是脚本(jython(java语言))用Python(Python(C语言))来写,对测试人员来说要求较高,有比较大的学习成本;使用Byid/name/text方法操控(hierarchyviewer),执行速度太慢。典型应用:安装,卸载,启动Activity,点击X,Y坐标,发送按键事件,drag,截屏等。
  这个相对于Monkey来说就是真正意义上的自动化测试工具了。只需要编写脚本即可完成我们平时所需要的大部分冒烟用例等等。
  尤其是在4.x以下的机型里,由于无法使用uiautomator,MonkeyRunner几乎就是唯一的自动化测试编写办法。
  编写语言:py
  运行环境:py环境,使用adb连接PC运行
  测试对象:UI测试,功能测试,回归测试,并且可以自己定义测试扩展,灵活性较大。
  测试限制:主要使用坐标,逻辑判断较差
  UiAutomator
  UiAutomator3是Android提供的自动化测试框架,基本上支持所有的Android事件操作。是用来做UI测试的,也就是普通的手工测试,点击每个控件元素看看输出的结果是否符合预期。对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK16(Android4.1)及以上,不支持HybirdApp、WebApp。
  编写语言:java
  运行环境:使用adb连接PC运行,启动测试
  测试对象:主要用于UI功能自动化和UI测试,快速、运行简单
  测试限制:是通过以控件的方式来定位,当然也是支持坐标轴的方式来定位,权限控制不足,无法像Instrumentation那样使用。
  Robotium
  Robotium是基于Instrumentation的测试框架,主要针对android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击,长按,滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合android官方提供的测试框架达到对应用程序进行自动化测试。另外,Robotium4.0版本已经支持对WebView的操作。Robotium对Activity,Dialog,Toast,Menu都是支持的。支持Nativeapp、HybirdApp。缺点不能跨App。
  录制工具Radar(不稳定)、Testin(不提供源码)、官网工具(收费)
  开发环境:脚本语言java;Eclipse中引入:robotium-solo-**.jar
  编写语言:java基于Instrumentation封装
  运行环境:使用adb连接PC运行,启动测试
  测试对象:主要用于白盒测试和UI测试
  测试限制:单个Activity测试,需要与测试相同应该的签名各种框架编写代码风格
  Appium
  Appium是开源的移动端自动化测试框架;支持NativeApp、HybirdApp、WebApp;支持Android、iOS、FirefoxOS;是跨平台的可以在mac,windows以及linux系统上。用Appium自动化测试不需要重新编译App;脚本语言:Java、python、ruby、C#、ObjectiveC、PHP等主流语言。
  相关限制:如果你在Windows使用Appium,你没法使用预编译专用于OSX的.app文件,因为Appium依赖OSX专用的库来支持iOS测试,所以在Windows平台你不能测试iOSApps。这意味着你只能通过在Mac上来运行iOS测试。
  总结:在iOS部分是封装了UIAutomation;Android4.2以上是用UiAutomator,Android2.3~4.1用的是Instrumentation,也就说Appium同时封装了UiAutomator和Instrumentation。所以Appium拥有了以上几大框架的所有优点:跨App,支持NativeApp、HybirdApp、WebApp,还支持N种语言来编写你的测试脚本。
  appium内核基于UiAutomator来识别元素。如果只有Androidapp产品,推荐选择robotium,提供的API比appium好用;既有IOS和Android,则使用appium。
  Instrumentation
  Instrumentation是早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation你可以模拟按键按下、抬起、屏幕点击、滚动等事件。Instrumentation是通过将主程序和测试程序运行在同一个进程来实现这些功能,你可以把Instrumentation看成一个类似Activity或者Service并且不带界面的组件,在程序运行期间监控你的主程序。缺点是对测试人员来说编写代码能力要求较高,需要对Android相关知识有一定了解,还需要配置AndroidManifest.xml文件,不能跨多个App。
  编写语言:java
  运行环境:使用adb连接PC运行,启动测试
  测试对象:主要用于白盒测试和UI测试
  测试限制:单个Activity测试,需要与测试相同应该的签名
  Espresso
  Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。因为是基于Instrumentation的,所以不能跨App。
  Selendroid
  Selendroid是基于Instrumentation的测试框架,可以测试NativeApp、HybirdApp、WebApp,但是网上资料较少,社区活跃度也不大。
  uiautomator2
  uiautomator24是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Googleuiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:1.测试脚本只能使用Java语言2.测试脚本必须每次被上传到设备上运行。我们希望测试能够用一个更脚本化的语言,例如Python编写,同时可以每次所见即所得地修改测试、运行测试。
  
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号