2007年Android开源时,Monkey、Instrumentation和MonkeyRunner这3个测试框架,是跟Android源码一起发布的,这也是最早可用的自动化测试框架,那几年大家基本都是用这些框架来开展自动化相关测试工作的。2010年,第一个第三方的测试工具Robotium(基于Instrumentation)发布了,不少测试人员就转用这个框架,Robotium社区逐步发展起来。图1-1所示为Robotium热度随时间变化的趋势。
2010年还有一个自动化测试框架Robolectric开源了,主要支持单元测试;Robolectric允许用户做大部分真实设备上可以做的事情,且可以在常规的JVM持续集成环境中运行,不需要通过模拟器,因此可以摆脱模拟器启动慢的问题。
图1-1 Robotium热度随时间变化的趋势
注:引用自 https://www.google.com/trends/explore#q=robotium
2011年新发布的Android SDK包含了chimpchat,可以通过Java来调用Monkey,也可以用Java语言实现类似MonkeyRunner功能(MonkeyRunner之前只支持Python)。
2013年则是一个Android自动化测试框架爆发年,Selendroid、Espresso、Calabash、Appium等框架都是在这一年发布或者开源的。其中,Appium整合Selendroid以及UI Automator等框架的优点,使用Selenium的WebDriver JSON协议,使WebDriver用户使用起来非常方便。自2013年以来,Appium发展非常迅速(不过基本上是印度的同学在搜索)。图1-2所示为Appium热度随时间变化的趋势。
图1-2 Appium热度随时间变化的趋势
注:引用自 https://www.google.com/trends/explore#q=Appium
按照时间线,把上面介绍的自动化测试框架梳理一下,如图1-3所示。
当然国内也有不少团队或者个人开发自动化测试框架并开源,例如百度的Café( https://github.com/BaiduQA/Cafe ),阿里巴巴的两个自动化测试框架Athrun( http://code.taobao.org/svn/athrun )、Macaca( http://macacajs.github.io/macaca/ )。腾讯内部也开发了Android自动化框架,不过暂时没有开源。相信国内其他公司也在开发相关自动化框架,有些公司基于已有的开源框架二次开发定制适合自己项目的自动化框架,可能暂时也没有开源。
图1-3 Android自动化测试框架时间线
注:上面提到的是相对有一定使用人数的自动化测试框架,除此之外,业界还有不少其他测试框架,如MonkeyTalk、RoboSpock、NativeDriver等。
上面简单介绍了Android自动化测试框架的历史(时间线展示)。Android自动化测试里面还涉及到一个签名的问题(Instrumentation的限制),我们按照重签名的维度重新划分一下,方便读者做自动化测试框架的选型。图1-4所示为Android自动化测试框架图谱,仅供参考。
图1-4 Android自动化测试框架图谱
注:Appium不需要更改被测App签名;
Hybrid:混合Android原生控件以及Webview控件;
Native:纯Android原生控件。