51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2237|回复: 0
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-1-9 12:01:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Google Espresso:一种用于云中Android UI的快速自动化测试框架

出处:InfoQ  作/译者: Abel Avram/马德奎


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。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-16 14:22 , Processed in 0.065718 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表