近在调研手机端的自动化测试工具,之前看到了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也没有,还好有源代码可以看一下。