写点什么

Google Espresso:一种用于云中 Android UI 的快速自动化测试框架

  • 2013-10-28
  • 本文字数:976 字

    阅读完需:约 3 分钟

Google 开源了 Espresso ,这是一种 Android 自动化测试框架,使测试人员可以在云中 x86 机器的多线程环境里运行测试,并解决了关于 UI 测试的并发问题。

由于 Android 设备数量和种类众多,在真实的设备上运行测试非常耗时,而且成本很高。一种解决方案是在模拟器上执行测试。模拟器是一个可控的环境,支持多种 OS 版本、屏幕尺寸和内存限制。这种方法可以捕获大部分代码 Bug,剩下的 Bug 可以留给真实设备测试和人工测试去发现。

模拟器的问题是执行速度,其中,在模拟的 ARM CPU 上运行 Android 是一个瓶颈。为了解决这个问题,Google 已经创建了可以直接在 x86 硬件上运行的 Android 版本,并使用了 VM 加速。另一个瓶颈是 Android 的启动时间。该问题已经通过抓取 OS 快照并执行快照得以解决。该方法可以在很短的时间内提供期望的 OS 和应用程序配置。早在今年 3 月份,Google 就已经使用该方法完成了 8200 万次 Android 测试。

通过比较在 Nexus 4 和模拟器上的测试发现,后者需要真实设备上测试时间的 65% 来完成测试。因此,一个好的模拟器似乎已经解决了自动化测试问题。但是,还有另一块绊脚石。自动化测试使用 Android 的 Instrumentation API,这些 API 的调用在一个与 UI 线程不同的线程中运行,因此,使用自动化方法测试用户界面会导致严重的并发问题,进而产生不一致不可靠的测试结果。Google 对这个问题的解决方案是 Espresso ,它是一个测试框架,能够使 UI 测试在多线程环境中安全地运行,并移除了关于编写测试的大部分样板代码。Espresso 可以跨各种移动设备工作,包括电话、电视、智能眼镜、汽车等。它还可以跨不同屏幕尺寸和内存大小、多个 API 版本以及不同网络工作。据 Espresso 幕后团队介绍,他们的解决方案捕获了 Android 和应用程序中 99% 的 Bug ,只给真实设备测试和人工测试留下了少数 Bug,减少了整体的测试工作量。

下面是 Espresso 中断言视图未显示的测试示例:

复制代码
onView(withId(R.id.bottom_left)).check(matches(not(isDisplayed())));

读者可以在这里找到其它测试示例。

目前,Espresso 还处于开发人员预览状态,在Google Code 上提供。但思路是,等到它足够成熟和稳定以后,将其迁移到Android SDK 中。Google 使用Espresso 测试了他们自己的超过30 个应用程序,包括G+、Maps 和Drive。

查看英文原文: Google Espresso: Fast Automated Android UI Testing in the Cloud

2013-10-28 07:066289
用户头像

发布了 256 篇内容, 共 77.2 次阅读, 收获喜欢 11 次。

关注

评论

发布
暂无评论
发现更多内容
Google Espresso:一种用于云中Android UI的快速自动化测试框架_测试_Abel Avram_InfoQ精选文章