最近在调研手机端的自动化测试工具,之前看到了Robotium这个工具也写了几个用例,后面发现了NativeDriver工具,也写了几个 例子,下面主要从官方介绍以及写例子的过程中发现的一些问题对比一下两种工具的优缺点吧,也是刚开始做自动化测试不久,暂时还没有了解工具底层的一些东 西,以下仅是自己个人观点,如果有不全面的欢迎大家评论补充讨论。现在打算使用NativeDriver工具来进行手机端UI自动测试。
NativeDriver:
官方地址:http://code.google.com/p/nativedriver/
优点:
1、跨平台,android平台的源代码已经公开,IOS的不久也将要发布,windows平台的在计划中,以后针对不同的平台都可以使用相同的语言和相同的API来写用例。
2、使用WebDriver API(selenium2.0也加入了WebDriver )进行的扩展,对于熟悉WebDriver的用户,上手会更加的快(PS:还不熟悉WebDriver,有空学习一下)
3、类似于selenium RC的方式来运行测试程序,这个可以看下面的NativeDriver架构图,测试程序通过http+json访问模拟器上的server,然后进行相应的模拟操作
4、元素查找可以直接使用通过hierarchyviewer工具识别出来了资源ID来进行元素查找定位
5、支持WebView控件
缺点:
1、被测程序需要加入工具提供的server-standalone.jar,以及修改AndroidManifest.xml文件后专门打build用于测试,具体见:
http://code.google.com/p/nativedriver/wiki/AndroidMakeAnAppTestable
2、现在NativeDriver提供的API还是有些少,不过可以自己扩展一下。
3、貌似没发现wait相关的api,需要自己来封装一下来等待响应控件的操作了。
4、这是在写测试用例的时候发现的,不知道是哪里的问题,先就算作缺点吧,比如对文本框输入文字,如果当前文本框没有获取焦点,是输入不了文字的,sendKeys输入之前需要click一下获取到焦点。
WebElement passWord = driver.findElement(By.id("PassWord"));//找到资源id为PassWord的控件
passWord.clear();//清除控件文字
passWord.click();//点击选中控件,此时会获取到焦点
passWord.sendKeys("123");//控件中输入内容
5、由于是刚推出来,网上的资料还是比较少的,需要自己去摸索,而且官方API也没有,还好有源代码可以看一下
Robotium:
官方地址:http://code.google.com/p/robotium/
优点:
1、提供的API相应的还是比较丰富的
2、网上相关资料稍微会多一些
缺点:
1、 测试程序也需要生产APK文件,安装到模拟器或者设备上,所以如果被测程序和测试程序签名不一样是测试不了的,这就需要测试之前我们去修改被测程序的签 名。不过按照计划,后续的版本会提供类似于selenium RC模式的,到时候可能会解决这个问题,但是还不知道什么时候发布。
2、不支持跨平台
3、API中很多使用控件的位置(index索引)来查找,这样子对以后用例的维护会有些不方便。同时API中有按照id来查找的使用的确是R.java自动生成的文件中的id,但是通过工具只能识别到资源控件id,这个还需要自己通过资源控件id去查找一下才行
最新内容请见作者的GitHub页:http://qaseven.github.io/