Android 谈谈自动化测试

本篇文章已授权为微信公众号 code小生 发布

前言

最近,手头上的项目基本开发完成,优化也做的差不多了,本以为可以安心准备上线。然而老板却反映说测试人员发现 App 总会出现一些莫名的 bug.

bug 来了,那就解决呗。但是这 bug 又贼迷,偶尔出来一个调戏一下你,就问你服不服。所以为了让 App 中的 bug 尽可能的减少,只能暂时苦逼地转行测试。这几天花了不少时间和精力,好好研究了下 Android 平台的自动化测试,在此总结一下。

一、概述


Android 平台的自动化测试可以从两个方向入手

  • Android 端的自动化测试框架
  • 各大云测试平台
    • 腾讯优测云测试平台
    • 华为开发者联盟
    • 贯众云测试
    • Testin 云测

测试的内容包括:

  • 兼容性测试:安装、启动、卸载
  • 功能测试:手势操作、功能验证
  • 稳定性测试:app 是否容易出现闪退等现象
  • 场景测试:模拟真实网络场景,2G、3G、4G、wifi 网络的切换

上面介绍了 Android 自动化测试的两个方向以及测试的具体内容,接下来谈下他们之间的区别和优缺点。

  • Android 自动化测试框架 利用 Android 端的自动化测试框架,可以通过代码完成相应的测试用例,尽量覆盖所有使用场景,让人工的重复性操作,转换成脚本的自动化执行,解放程序猿宝贵的右手(嗯,也可能是左手)。emmmm,上面的优点是不是看起来很不错。别急,还没说缺点呢,缺点就是对测试人员来说编写代码能力要求较高,而且由于要覆盖大多数的使用场景,所以很考验测试人员对于 App 的整体理解和把握,而且一般多用于 UI 测试,而无法进行兼容性的测试,毕竟手机有限。
  • 各大云测试平台 利用云测试平台的好处还是很多的,毕竟人家是专业搞这个的,所以很多你没考虑到的东西,别人都已经帮你集成到平台里面了。而且相对于 Android 自动化测试框架,各大云测试平台还能给你提供各种各样的机型,例如华为开发者联盟就提供了大部分华为和荣耀系列的手机,手机版本从 4.4 到 7.0 都有,看着这些优点是不是觉得美滋滋。缺点嘛,其实不多,就一个「收费」。这当然也能理解,毕竟人家也是要吃饭的,如果免费给你用,那还要不要人活了。

二、自动化测试框架


2.1 Espresso

Espresso 是 Google 针对 Android 平台开源的一款 Android 自动化测试框架,主要是用于 Android App UI 自动化测试。

在这里简单说下 UI 自动化测试:我们作为 App 的使用者,要让机器模拟我们的测试过程,那么就需要针对我们肉眼看到的那些界面,那些按钮,也就是 UI 组件进行相应的操作以及对结果正确性的验证。

比如说,作为用户我们并不关心某个网络请求返回值的具体数据是否正确,我们关心的是在界面上看到我们想要看到的结果。因此,做 UI 自动化测试用例的时候,一个通用的思路就是:找到某个元素,做一些操作,检查结果,把自己当成用户,只关注我能看到的东西。

Espresso 毕竟是 Google 自己出的,优点还是很多的

  • 用 Java 来写代码,对 Android 开发者很友好
  • API 相当的小,当然也会对拓展开放的
  • Espresso 的测试跑起来那是相当的快(没有等待、睡眠)
  • Gradle 和 Android Studio 的支持

更多 Espresso 的例子请戳:https://github.com/vgrec/EspressoExamples

2.2 UI Automator

UI Automator 所运行的 JUnit 测试用例是有特殊权限的,这意味着测试用例可以 跨越不同的进程,它提供了五种不同的类给开发人员使用:

com.android.uiautomator.core.UiCollection;
com.android.uiautomator.core.UiDevice;
com.android.uiautomator.core.UiObject;
com.android.uiautomator.core.UiScrollable;
com.android.uiautomator.core.UiSelector

不过,比较遗憾的是,UI Automator 只能工作在 API 16 或更高级别的 Android 设备上,而且也没有办法直接访问 Android 对象。

2.3 Appium

Appium 是一款「移动」的自动化测试框架,牛逼的地方在于支持 iOS 和 Android 原生和混生的移动 Web 应用程序。它内部使用的 JSONWireProtocol 通过 Selenium 的 WebDriver,来与 iOS 和 Android 应用进行交互。通过 UI Automator 和 Seledroid 支持 Android,通过 UI Automation 支持 iOS。上面这些话,看看就好了,反正我也看不懂。

Appium 最大的优点在于你几乎可以用任意一种编程语言(例如,Java、Objective-C、JavaScript、PHP、Ruby)来编写 Appium 脚本而不必选择工具,兼容最重要的pigtail(Android 和 iOS)而不必安装和配置设备适应测试等等。

三、云测试平台


3.1 腾讯优测云测试平台

拥有超过1000款测试终端,机型数量庞大,机子比较全。但仅支持 Android 系统,暂时不支持 iOS 系统。

不过,该平台的收费还是蛮高的,一分钟一块钱,而且最低充值 100 元。

3.2 华为开发者联盟

优点:免费 缺点:只能测试华为的机子

测试主要包括:

  • 兼容性测试:华为这边提供所有华为手机的测试
  • 稳定性测试
    • 安装、启动、注册登录、遍历、卸载
    • Crash、ANR、UI、功能异常
    • 提供问题上下截图及异常截图

3.3 Testin

Testin 是国内较早涉足云测试领域的公司之一。Testin 在云端部署了 300 多款 1000 多部测试终端,终端种类及数量都比较全面。

该平台也是收费的,具体的收费标准,并没有在官网上显示出来,只说了有需要服务的请联系客服。


猜你喜欢


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Spark学习技巧

第5篇:数据库系统的实现

前言 前面的文章中,主要都是在围绕关系数据库理论进行研究,没有涉及到数据库系统的具体实现。 虽说数据库系统的具体实现因业务环境,RDBMS等因素而异,但总体开发...

3167
来自专栏企鹅号快讯

前后端分离实践

前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层...

4268
来自专栏企鹅号快讯

代码学习与实践:开篇-测试深入了解代码的好处及实践

1 缘起 最近在负责测试的项目,相对来说比较复杂。从业务上来看,涉及商品添加、审核、交易、支付、退款、换号、管理等多个流程,从代码逻辑上来看,划分了9个模块,还...

2088
来自专栏EAWorld

微服务模式系列之二:微服务架构

译者评论: 微服务架构大家已经耳熟能详,但是我认为这篇文章最有价值的是这段: 但这类解决方案中也存在着以下弊端: 开发者必须应对创建分布式系统所产生的额外的复杂...

3425
来自专栏零基础使用Django2.0.1打造在线教育网站

零基础使用Django2.0.1打造在线教育网站(一):项目介绍

努力与运动兼备~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

4205
来自专栏ImportSource

我所知道的那点微服务

忽然一夜春风来,人间处处微服务。这真是一个相当火的概念啊。笔者第一次知道微服务这个概念是在15年4月份,应该是。 铺垫 有一日翻到martin fowler的博...

36210
来自专栏韩伟的专栏

如何提高程序员的生产率(上)

一、硬件资源 1) 办公环境 ? 大部分开发团队都不把座椅家具视为一个非常重要的问题。拥有宽敞的桌面的环境,可以在桌上放置更多的东西:本子、笔、杯子、书本、打...

4096
来自专栏性能与架构

内容平台 Medium 的技术体系

Medium 是全球知名的内容平台,访问量惊人 据半年前的数据统计,用户在 Medium 上阅读时间的总和已经达到 2600年,每月有2500万阅读者,每周有数...

3696
来自专栏网络

资深女程序员告诉你:微服务架构如何实践?80%以上男程序员点赞

上篇文章给大家介绍了什么是微服务架构,本文将会讲到如何实践微服务。 不知道微服务架构的,可以看我上一篇文章 微服务听上去好像不错,具体怎么落地啊?这需要回答下面...

4067
来自专栏ThoughtWorks

无服务器架构下的运维 | 洞见

在介绍运维之前,大家先来快速了解一下无服务器(serverless)的概念。由于笔者的实战经验是在AWS平台上,本文中出现的无服务器均指使用AWS Lambda...

2205

扫码关注云+社区

领取腾讯云代金券