解放双手 - Android 开发应该尝试的 UI 自动化测试

解放双手 - Android 开发应该尝试的 UI 自动化测试

困境

接下来我将说到这种情况并非个例——作为一个Android开发者,当我实现了一个界面的一些功能,或者对界面上某些功能进行了修改,我该如何去查收我想要的结果呢?

最简单的方式就是直接编译运行App,通过自己的操作对界面进行交互,从个人的视觉效果上进行功能的检查,比如我实现了一个RecyclerView,我就打开界面,看看这个列表是否正确显示在了界面上。

不久之后,我觉得某些地方代码不是很好,于是我改了一些代码,我怕会出现问题,于是为了保证项目能够不出问题(至少是避免低级的错误),我选择再次编译运行,验收结果。

再深入一点,如果每个版本发布前都需要这么多次测试,或者每当我们简单修改了一下代码,就需要更多次重复进行以上步骤,并检测结果,来来往往,反反复复,实在令人乏味。

 

I choose to die

 

 

也许, UI自动化测试是一劳永逸解决这个问题的方案之一。

UI自动化测试简介

充满热情,一腔热血,说学就学,我行我上。

相信我,不要这样,这和学习或者框架不一样,UI自动化测试是一个专业技能。不信的话,请参考一下各大机构对于测试工程师的培训周期,系统性走一遍全日制要几个月,闲暇时间学习?学不完的,而且,没必要。

Android官方文档的概述,AndroidStudio提供了几种UI测试工具供开发者使用。

事实上UI的自动化测试工具很多,但对于Android开发者来讲,掌握其中的1至2项,就足以在UI测试领域立足,本文仅简单介绍基础的几款工具以抛砖引玉。

1. Monkey

Monkey是Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流,如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出。实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性。

2. Instrumentation

Instrumentation是早期Google提供的Android自动化测试工具类,虽然在那时候JUnit也可以对Android进行测试,但是Instrumentation允许你对应用程序做更为复杂的测试,甚至是框架层面的。通过Instrumentation你可以模拟按键按下、抬起、屏幕点击、滚动等事件。Instrumentation是通过将主程序和测试程序运行在同一个进程来实现这些功能,你可以把Instrumentation看成一个类似Activity或者Service并且不带界面的组件,在程序运行期间监控你的主程序。缺点是对测试人员来说编写代码能力要求较高,需要对Android相关知识有一定了解,还需要配置AndroidManifest.xml文件,不能跨多个App。

3. UiAutomator

UiAutomator也是Android提供的自动化测试框架,基本上支持所有的Android事件操作,对比Instrumentation它不需要测试人员了解代码实现细节(可以用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。基于Java,测试代码结构简单、编写容易、学习成本,一次编译,所有设备或模拟器都能运行测试,能跨App(比如:很多App有选择相册、打开相机拍照,这就是跨App测试)。缺点是只支持SDK 16(Android 4.1)及以上,不支持Hybird App、WebApp。

4. Espresso

Espresso是Google的开源自动化测试框架。相对于Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,编写测试代码简单,容易快速上手。因为是基于Instrumentation的,所以不能跨App。

以上这些工具的概述,节选引用自知乎:Android 手机自动化测试工具有哪几种?

如何入门?

UI的自动化测试的是一个复杂的系统,所谓望山跑死马,作为Android开发者,我们想要通过闲暇的时间,期望短期能够精通UI自动化测试是不现实的,但是每次都运行app手动测试又显得很蠢,最好的方式,是通过了解并学习一个经典的UI测试工具,在了解到UI自动化测试的好处之后,再选择继续深入还是功成身退

有心的同学已经注意到了,上文中最后介绍的那个Espresso怎么这么眼熟呢?确实如此,在AndroidStudio2.2版本之后,在新建的项目中,AndroidStudio会默认添加Espresso的依赖。

这样看来,Espresso显然是一个不错的选择。正如Google所希望的,当Android

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值