写点什么

Android 自动化测试解决方案

  • 2011-10-07
  • 本文字数:2089 字

    阅读完需:约 7 分钟

现在,已经有大量的 Android 自动化测试架构或工具可供我们使用,其中包括:Activity Instrumentation, MonkeyRunner Robotium ,以及 Robolectric 。另外 LessPainful 也提供服务来进行真实设备上的自动化测试。

Android 自身提供了对 instrumentation 测试的基本支持,其中之一就是位于 android.test 包内的 ActivityInstrumentationTestCase2 类,它扩展了 JUnit 的 TestCase 类来提供 Android activities 的功能测试。在应用测试中,每一个 activity 首先会被 Instrumentation 初始化,然后再加载到 Android 模拟器或设备的 Dalvik 虚拟机中来执行。

Android SDK 自带一个测试工具 MonkeyRunner ,它提供的 API 和执行环境可以运行 Python 语言编写的测试代码。它提供 API 来连接设备,安装 / 卸载应用,运行应用,截屏,比对图片来判断特定命令执行后的屏幕是否包含预期信息,以及运行对应用的测试。MonkeyRunner 使用 ActivityInstrumentationTestCase2 ProviderTestCase ServiceTestCase SingleLaunchActivityTestCase 及其他类来定义测试用例,并使用 InstrumentationTestRunner 类来运行测试。

Robotium 是另一种通过 InstrumentationTestRunner 来完成 Android 交互式测试的架构,它横跨多个 activities,支持功能测试,系统测试和接收测试。Robotium 支持 Activities、Dialogs、Toasts、Menus、Context Menus 甚至 Honeycomb,并且它可以同 Maven 和 Ant 集成来完成持续集成测试。Robotium 被称之为针对 Android 应用的又一个“ Selenium “。

Robolectric 另辟蹊径,它并不依赖于 Android 提供的测试功能,它使用了 shadow objects 并且运行测试于普通的工作站 / 服务器 JVM,不像模拟器或设备需要 dexing(Android dex 编译器将类文件编译成 Android 设备上的 Dalvik VM 使用的格式),打包,部署和运行的过程,大大减少了测试执行的时间。Pivotal 实验室声称使用 Robolectric 可以在 28 秒内运行 1047 个测试

LessPainful 将 Android 测试又推进了一步,它提供了一个多设备平台自动化测试的服务。用户上传应用 (*.apk) 和用 Cucumber (一种业务相关的 DSL)编写的测试文件,选择测试运行需要的设备配置,最后测试将自动执行并生成测试报告。它支持的设备包括 Garmin Asus,几款 HTC,LG,Samsung Galaxy,Sony Xperia 和 Motorola Motodefy。

为了了解更多 LessPainful 提供的服务细节,我们采访了 LessPainful 公司的 CEO Jonas Maturana Larsen。下面就是这次简短的访问:

InfoQ**:在不同版本的 Android 上运行用程序,存在什么问题了保程序能正常运行,开者需要在 Android 的每一个版本上测试他的?**

JML举个例子,SAXParser 在 Android 2.2 之前有一个 bug 存在于对 ContentHandler.startElement 的回调中,它导致应用产生错误的行为。

到目前为止,我们已经在很多方面发现了不同操作系统版本间的差异性。其中一些可能在 2.1-update1 上导致崩溃,但可以正常运行于 2.1-update3 和 2.2.

InfoQ**:不同的设备对Android说 ****,有没有真正的区?你能否们举个例子,比如 Android2.2用可以运行在 HTC 但不能运行于 Samsung?(或其他各种 Android 版本和设备制造商的合)**

JML在 LG 手机,HorizontalScrollViews 有时会导致子视图上的背景图片消失。这个问题存在于我们测试的所有的 LG 手机,不管 Android 版本是多少。

如果你不自己处理这类问题,它将导致你的应用在不同设备上不尽相同。例如,Motorola 将会用红色边框来高亮一个输入域。在我曾经参与的一个项目中,我们用同样的红色边框来表示输入有误。

还有一些问题,与其说和制造商相关,不如说是和硬件相关:比如,一些手机使用了较小的 RAM 和高分辨率的摄像头,当你处理手机上的图像时就会将导致崩溃。

InfoQ**:测试是如何行的?**

JML测试就如同运行一个 ActivityInstrumentationTestCase2,主要使用 Robotium 来运行。我们对应用所做的唯一修改就是去掉已有的签名,再为它重新生成我们的签名文件。

在测试运行完成后,应用会被卸载,而手机也会被恢复到初始设置。

InfoQ**:与 MonkeyRunner,Robotium 和 Robolectric 相比,你所提供的服有什么优势呢?**

JMLLessPainful 是一种服务,而并不仅仅是一种架构。我们希望创建一种服务,不但使测试能够进行,并且比起其他任何一种架构,它能够节省我们大量测试时间,还能够帮助我们发现更多的 bug。

另外,我们相信使用 Cucumber,可以清晰地定义高层次测试描述,同时可以更好地被开发团队以外的人员共享。

以 Git 领域为例,我们更希望成为像是 GitHub 那样, 而不只是通常的 git 库。

InfoQ**:你划未来要支持更多的设备吗?**

JML是的。我们计划继续增加对更多设备的支持。如果有这样的要求提出,我们就会努力完成它。

目前,我们也在着手于对 iOS 设备的支持,希望 beta 版能在今年秋季发布。

InfoQ**:什么是 LessPainful 企版?**

JML我们将提供一个工具集,它就类似于一个 Mac Mini,但我们会非常灵活的满足顾客的需求。LessPainful 企业版目前还没有正式推出,所以敬请期待。

查 **** 看英文原文: Automated Testing Solutions for Android

2011-10-07 00:4013114

评论

发布
暂无评论
发现更多内容

工信部数据库适配验证中心项目验收通过 柏睿数据参与共建

科技热闻

全网最新架构实战文档:高并发+分布式+微服务+SpringBoot+Nginx

三十而立

Java 分布式 java面试

扒站软件:SiteSucker汉化激活

真大的脸盆

Mac Mac 软件 网站下载 下载网站工具

微前端框架single-spa子应用加载解析

京东科技开发者

生命周期 微前端 VUE 3.0 源码 企业号 3 月 PK 榜 single-spa

对前端性能优化的一些小看法

Yestodorrow

机器学习算法(八):基于BP神经网络的乳腺癌的分类预测

汀丶人工智能

数据挖掘 机器学习 BP神经网络

滴滴 一面总结

Java你猿哥

Java 滴滴 java面试 面经

Redis高频40问

程序员大彬

Java Redis redis 底层原理

Three.js 进阶之旅:全景漫游-初阶移动相机版

dragonir

JavaScript 前端 three.js

AI大模型加速升级,数据和隐私何以为安?

博文视点Broadview

OpenHarmony社区运营报告(2023年2月)

OpenHarmony开发者

OpenHarmony

Z世代新母婴人群消费洞察2023

易观分析

母婴 新消费 Z世代 消费

【共创共赢】AntDB数据库合作伙伴交流会(北京站)顺利举办

亚信AntDB数据库

数据库 AntDB AntDB数据库 企业号 3 月 PK 榜

阿里架构组分布式架构技术使用心得:全在这一份文档里面了

三十而立

Java java面试

记录丨阿里云校招生的成长经历

阿里巴巴云原生

阿里云 云原生 校招

《云原生架构容器&微服务优秀案例集》惊喜来袭

阿里巴巴云原生

阿里云 容器 微服务 云原生

Spring依赖注入Bean类型的8种情况,你学废了吗?

Java永远的神

spring 源码 程序员 后端 java面试

软件工程高效学 | 软件工程基础

TiAmo

软件工程

cookie时效无限延长方案

京东科技开发者

自动化测试 Cookie 接口自动化 UI自动化 企业号 3 月 PK 榜

解决90%面试问题!GitHub顶级"Java面试手册"了解下八股文天花板

Java你猿哥

Java 面经 校招 Java工程师 春招

聊聊前端性能指标那些事儿

京东科技开发者

性能优化 前端 性能 前端性能 企业号 3 月 PK 榜

30s 就可以掌握的 Nginx 片段

Java你猿哥

Java nginx ssm Java工程师 nginx 开源版

49天含泪苦学这些分布式技术文档,一不小心,吊打了字节跳动面试官

三十而立

Java 分布式 java面试

openEuler开源新项目,嵌入式实时虚拟机ZVM介绍

openEuler

Linux 操作系统 虚拟机 嵌入式 openEuler

博睿学院 | 本周四,博睿学院数据集成系列公开课正式开讲

博睿数据

数据中台 智能运维 博睿数据 博睿学院

Spring竟然可以创建“重复”名称的bean?—一次项目中存在多个bean名称重复问题的排查

京东科技开发者

spring bean @Bean 企业号 3 月 PK 榜

如何使用责任链默认优雅地进行参数校验?

JAVA旭阳

Java spring

CNStack 虚拟化服务:实现虚拟机和容器资源的共池管理

阿里巴巴云原生

阿里云 云原生 虚拟化 CNStack

Dubbo + ZooKeeper丨如何解决线上故障排查链路长的难题

阿里巴巴云原生

阿里云 开源 云原生 dubbo Zookeepe

GPT-4 可以开始测试了

HoneyMoose

pulsar 报错源码排查:"Not enough non-faulty bookies available"

李code

源码 pulsar 故障恢复 参数调优 白话源码

Android自动化测试解决方案_软件工程_Abel Avram_InfoQ精选文章