APP UI自动化测试是鸡肋吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP UI自动化测试是鸡肋吗?相关的知识,希望对你有一定的参考价值。
参考技术A 最近与一个朋友聊到了APP的UI自动化,他问我如何做APP的UI自动化。我说了一下目前主流的方法是通过对UI的识别,然后触发操作,各种工具的原理差不多。当然,有更牛逼的,使用高清摄像头+机械臂,通过高清摄像头识别界面元素(基于位置定位),然后使用机械臂去点击操作。完全模拟人去操作。只是这套装备很昂贵,大概60万左右。
我个人意见,如果APP功能比较多,大部分功能和界面比较稳定,这时可以给稳定的功能做UI自动化测试,每当版本更新时,使用UI自动化用例来保证这些功能不受影响。
而实际情况是,大部分APP更新比较快,这时做UI自动化测试时不划算的,因为要花大量的时间去维护自动化测试脚本,并且UI自动化测试脚本运行并不稳定。另外,大部分的APP是to C的,to C的产品相对to B产品而言,更注重用户体验,而用户体验的部分,UI自动化是很难测试到的,比如:动画现比较平滑、页面流畅不卡顿等等。
这个朋友问了我另外一个问题: 我们是to C的APP,当服务端更新时,我们需要保证用户手机上的各种旧版本APP能够正常运行,怎么办?
我说,这是一个非常典型的场景,但这个问题的解决方式不是做APP的UI自动化,而是做服务端的接口自动化。每当服务端更新,只要确保服务端提供给APP调用的接口行为不变,确定的输入有确定的输出,而旧版本APP没有更新,完全不用测试。举个例子,登录接口,使用用户名admin、密码123456时,服务端返回如下响应:
无论服务端怎么变化,我每次使用相同用户名和密码登录时,服务器都给我返回同样的响应,就能确保以前所有老版本的APP登录没有问题。
至于如何做接口的自动化测试,则是另外的问题了。如有兴趣,可以找我了解。
移动端 App UI 自动化测试浅谈
很多做测试的同学对UI自动化充满着向往,但又充满畏惧,经常不知道如何入手。一方面是因为技术薄弱,觉得自动化测试比较难,另一方面可能对自动化测试持怀疑态度。那到底什么是UI自动化测试,它能给我们带来什么样的价值呢?下面我们探讨下移动端的UI自动化方法。
什么是UI自动化?
首先,我们引用来自Monkey大神对的定义:UI自动化包括界面层面(控件,元素,位置,显示等的识别)以及功能交互层面(往往是通过代码或者测试框架来模拟真实用户的操作)
从个人的理解来看,UI自动化是通过工具或者脚本语言将测试过程模拟出来,并重复执行,用以验证功能是否正确的过程。
为什么要做UI自动化测试?
对于移动app而言,很多公司都采用敏捷开发的模式,因此测试也必须敏捷测试,每个迭代的周期非常短,经常要对原有功能进行回归测试,增加大量重复人力成本。引入UI自动化测试可以用来快速回归测试app原有功能,测试人员只需要关注新功能的测试。
移动端App的测试用例大部分是功能验证相关的用例,通过UI操作即可验证,这就为UI自动化提供了便利条件。
测试重复度高,执行效率低,通过UI自动化可以快速重复执行,达到提高测试效率的目的。
常用UI自动化测试工具
这几年,移动端技术发展非常迅速,测试手段也同样发展迅速,出现了大量用于对移动端app进行自动化测试的工具,下面简单列举下:
Monkey 是 Google 开发的UI/应用测试工具,也是命令行工具,主要针对压力测试。你可以在任意的模拟器示例或者设备上运行。Monkey 发送一个用户事件的 pseudo-random 流给系统,作为你开发应用的压力测试。
IOS UI Automation,基于IOS instrument。
MonkeyTalk 通过在App中加入client自动化为 iOS 和 Android 应用进行真实的,功能性交互测试。有成熟的集成开发环境,有API支持和持续集成解决方案,且方便二次开发,目前不开源,属于功能强大但没有被很好推广的测试框架。
Robolectric 是一款Android单元测试框架,使用 Android SDK jar,所以你可以使用测试驱动开发 Android 应用。
Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。
uiautomator 测试框架提高用户界面(UI)的测试效率,通过自动创建功能 UI 测试示例,可以在一个或者多个设备上运行你的应用。
Selendroid 使用 Selenium 2 客户端 API 编写。可以在模拟器和实际设备上使用,也可以集成网格节点作为缩放和并行测试。
Appium是一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动App,支持iOS、Android和FirefoxOS平台。
Calabash是一款适用于iOS和Android平台的跨平台应用测试框架,支持Cucumber,开源且免费,隶属于Xamarin公司。
套用网上一位测试朋友的话,“自动化测试听起来很神秘,学起来很简单,用起来很麻烦”。UI自动化的优点很多,但要考虑适用场景,否则适得其反。同样,我们也要选好一个适合的自动化框架,这样才能提高效率。总而言之,想搞好自动化测试,还需要测试人员不断地提高测试理解力,分析能力和代码水平。
以上是关于APP UI自动化测试是鸡肋吗?的主要内容,如果未能解决你的问题,请参考以下文章