Calabash Android 真的不错
Android自动化测试有着茫茫多的自动化测试框架,由于本人是Ruby的fans。所以对Ruby封装的一些工具情有独钟。虽然是Ruby的fans,但是对BDD一直不太能接受。最近正好有一个机会,开始尝试着使用Calabash Android自动化测试做一些东西。
首先,还是先废话几句吧。Android的自动化测试版本太多,不能在这里一一介绍。但是,现在国内使用的框架基本上可以分为两大类:Android JUnit系列和UiAutomator系列。
Android Junit系列就包括大名鼎鼎的Robotium和今天要说的Calabash Android。这个系列除了有签名限制不能夸应用以外,都非常健壮和稳定。
UiAutomator系列最著名的当然要说是Appium。UiAutomator可以跨应用操作,整体操作完全是基于UI的操作。但是Android官方对UiAutomator的支持并不是非常好,比如输入法等。使得UiAutomator的运行稳定性相对于Android JUnit差很多。再加上Android本身的版本分裂,UiAutomator那就更会让开发者觉得头大。所以,如果没有跨应用的操作,请尽量不要选择UiAutomator系列的工具,至少现在不要。
在Android JUnit这个系列上选择一款工具做自动化测试的话,个人更倾向于选择Calabash Android](https://github.com/calabash/calabash-android)或者Selendroid。独立的QA团队更需要无源码方式的自动化测试框架。其次,简单高效稳定是任何自动化测试框架的基础。从这两点出发,选择了以上两款工具。Selendroid是使用Java开发的,一般情况下需要使用Java来编写自动化测试用例。作为Ruby的fans更应该尝试一下Calabash Android](https://github.com/calabash/calabash-android)。
Calabash的环境配置
Calabash的本身的安装相对简单,并且有官方文档。现在安装的Calabash都是0.5版本的。
安装完成之后,进行简单的配置才可以使用Calabash。
1、配置环境变量
配置环境变量最关键点
export ANDROID_HOME=/Users/<user>/adt-bundle-mac-x86_64-20140702/sdk
export PATH=$PATH:$ANDROID_HOME/tools
2、生成签名,并且知道自己签名的password和alias
生成签名可以使用一下Shell来生成。
keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
生成之后签名的位置在
~/.android/debug.keystore
password是:
android
alias是:
androiddebugkey
以上这些关键元素在配置Calabash的时候都很重要。
3、配置Calabash
Calabash的配置一般情况加只需要配置签名相关信息就好。运行命令行:
calabash-android setup 520c4f587081a6b530a03c3e86c8bfc4.apk -v
然后按照提示分别输入,签名证书的位置,密码和alias。成功之后会看到这样一句提示:
Saved your settings to .calabash_settings. You can edit the settings manually or run this setup script again
当然,你也可以手动的配置文件完成设置。配置文件的地址为:
~/.calabash_settings
4、Calabash Console
Calabash Console对于会写代码的人来说,一种非常方便调试的工具。使用命令:
calabash-android console 520c4f587081a6b530a03c3e86c8bfc4.apk
当然有时就会报错。报错有两种,一种是需要按照本文之前的内容进行Calabash配置。还有一种情况是需要对被测试应用进行重新签名。重新签名的命令:
calabash-android resign 520c4f587081a6b530a03c3e86c8bfc4.apk -v
成功进入Calabash Console之后,还需要运行两个命令行,才能开始传统意义上的自动化测试的调试:
reinstall_apps
start_test_server_in_background
经过以上两条命令,被测试程序会启动,这是可以通过一些Calabash的命令进行自动化测试了。
当然,也会有一些异常情况,例如,如果拿了网易新闻的Android客户端做这个实验,就会发现不会成功。因为网易新闻做了签名验证,当程序的签名被替换掉以后,程序无法正常启动。