您的位置:首页 > 其它

mobile automation tools(未整理)

2013-12-26 23:40 260 查看
 

脚本语言易扩展易维护易校验可持续集成支持真机/模拟器平台
测试框架支持webviewstest creation tool
RubyCucumberYCucumber
most anyAgnosticYAppium.app
Mo
NYYYY
Devihere
JavaYYYY
T
 

 

                           

         calabash-android
是一个基于 Cucumber 的 Android的功能自动化测试框架。            

                           

         1.遇见的问题,client与test-server版本不一致                 

         解释:client指代的是gem包的版本,test-server指代的是calabash-android源码下/ruby-gem/test-server的版本,下载下来源码自然就是这个版本不提供更新卸载等功能,但是client端可以控制               

         2.也可以修改gitclone源码下的calabash-android源码,将version对比修改正确,但不保证兼容性                 

         3.遇到http请求无法连接到模拟器,模拟器接收不到消息,app_runing返回结果为flase,是因为gem安装包内的operations.rb文件内的server_port没有值,修改一下就好,最好也修改一下源码的http请求,添加read_timeout,以及open_timeout。              

                           

         如此解决calabash无法运行的问题了。             

                           

         Calabash-android是支持android的UI自动化测试框架,PC端使用了cucumber框架,通过http和json与模拟器和真机上安装的测试apk通信,              

         测试apk调用robotium的方法来进行UI自动化测试,支持webview操作。                

                           

         http://qa.blog.163.com/blog/static/19014700220128981312173/                
                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

                           

              ---------------------------------------------------------------             

                           

         calabash-android对于webview的支持                 

                           

         1、编写android被测应用             

         编写一个简单的webview控件的android应用程序webview.apk,里面有一个webview控件,加载的是http://m.youdao.com 有道搜索首页的内容         

         2、被测应用apk使用系统自带的key文件重签名            

2074f
         3、calabash-android gen 命令生成目录结构                

                           

         本次在windows上针对calabash-android的调研,尝试了针对webview的支持,能够实现基本的webview操作,当前还存在的问题是                  

         1、 features文件不支持中文,需要自己去扩展                

         2、 Drag操作直接通过robotium扩展过来在calabash上不能使用                 

         3、 在windows上运行的时候好多次出现了连接断开的问题等不稳定情况          

         所以现在在windows下直接使用calabash-android到生成环境有一定的风险                

                           

         Dominik Dary's Blog                 

         http://www.dary.de/2012/04/calabash-android/           
                           

         "动化测试工具_Calabash-android调研

"                

         http://blog.csdn.net/yunbin_7/article/details/13508499               
                           

         Calabash Android的主要优势有以下三点:                

         a. 对于BDD的支持               

         b. 使用Ruby实现Function Test更加的符合自然语言的习惯。使得QA也能轻松的实现Function
Test              

         利用Calabash提供的对App组件操作的API,实现启动App并登陆只需要以下短短的几行代码:          

                           

         c. 支持Android和iOS使用相同的API操作App。使得iOS和Android平台中的Feature可以重用             

         Jenkins集成Calabash Android                

         运行Calabash Android需要Ruby环境,同时也建议安装RVM。在CI
agent上安装Ruby和RVM,并为Jenkins安装RVM plugin后运行环境就准备好了。             

                           

         实现Android CI                

         http://tech.ddvip.com/2013-08/1376675456201024.html           

                           

         http://www.360doc.com/content/13/0130/17/9462341_263276037.shtml                  
         calabash-android是Robotium+cucumber实现的,最底层还是用的robotium,加入了对于WebView的支持            

         这个工具刚开源不久,社区还是挺活跃的,有问题提问的话开源的作者也会很积极的帮助你解决。             

         该工具的具体效果如果还没实践过,不过支持android和IOS,以及使用cucumber的方式来编写测试用例还是会比较感兴趣,另外还支持webview控件                  

                           

      ---------------------------------------------------------------------------                     

                           

         Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架   
                                                       

         使用Appium进行自动化测试有两个好处:                                                              

         1. Appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。                                                           

         2. Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium
WebDriver的Api。Appium支持任何一种测试框架。如果只使用Apple的UIAutomation,我们只能用javascript来编写测试用例,而且只能用Instruction来运行测试用例。同样,如果只使用Google的UIAutomation,我们就只能用java来编写测试用例。Appium实现了真正的跨平台自动化测试                                                          

         Requirements                                                        

         总体:                                                            

                                                                          

         IOS自动化测试需要Mac os操作系统                                                                 

         Mac OS X 10.7或者更高版本,推荐10.8.4版本                                                                

         Android自动化测试可以在Mac、Linux上进行。对于Windows平台的支持还在beta阶段                                                       
        

         需要安装node和npm(node版本高于0.8)                                                           

                                                                          

         IOS自动化:                                                         

                                                                          

         Mac Xcode                                                              

         Apple开发者工具(iphone模拟器sdk,及命令行工具)                                                                

         Android自动化:                                                          

         Android SDK API版本 >= 17,即android版本高于4.2                                                        

         使用appium编写测试用例                                                          

         Appium支持Selenium WebDriver json wire协议(部分支持,非全部)                                                          

                                                                          

         appium定位元素的方法也和webdriver类似,但是也仅支持webdriver中的部分方法,详细信息见这里.                         
                                    

                                                                          

         Appium也为json wire协议提供了一些拓展,来支持智能手机的手势动作,如tap(轻击)、flick,swipe,更多信息点击这里                                                                

                                                                          

         Appium也支持在混合的app中,自动化测试web views                                                         

                                                                          

         http://appium.io/zh-cn/index.html                                                        
         Appium的初衷是将使用任何开发语言、测试框架进行移动app自动化测试成为可能,同时支持测试代码拥有完全的对应用后台API和数据库的访问权限。                                                        

         编写测试程序可以使用任何开发工具,和目前支持的上面任何一种开发语言。                                                                

         (对于其他语言,只需要支持Selenium WebDriver API和该语言相关的 client libraries即可)。                                             
                  

                                                                          

         采用Appium进行自动化的功能性测试最酷的一点是,你可以使用具有最适合你的测试工具的任何一门语言来写你的测试代码。                                                                

         大家选择最多的一个测试编程语言就是Python。使用Appium和Python为iOS和Android应用编写测试代码非常容易。                                                                

                                                                          

         http://wenku.baidu.com/link?url=dFJZ8eh0WVXgqUHeDttI8JjqzhffFpXRsCvtZdDusvEfjvxcDMvNw0gwhFF30fcS8N0CVUX8FHI-9x8VmZaepP0kN2988iFWVxs-sWRXijy                                                                
                                                                          

         Appium维护情况                                                          

         由SauceLabs支持,一家业界领先的测试产品公司,                                                                 

         有成熟的企业测试解决方案                                                                

         • Saucelabs有基于appium的云产品                                                         

         •在Google举办的GATC2013大会上有过详细介绍                                                                 

                                                                          

         业界top框架综合对比                                                        

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

         Appium的优点                                                               

         •跨架构,native hybrid webview                                                                

         •跨设备,android ios firefoxos                                                           

         •跨语言, java python ruby nodejs php                                                             

         •跨app,可以在多个app之间交互                                                          

         •不依赖源代码                                                            

         •不限制测试框架和平台                                                            

                                                                          

         基于Android的测试框架                                                              

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

         Appium在Android上的架构                                                         Appium在iOS上的架构

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

                                                                          

         Appium架构                                                          

         • Appium在4.1以上使用uiautomator                                                               

         • 4.1以下使用selendroid                                                            

         • Android上使用了instrumentation和                                                               

         uiautomator两套技术                                                          

         • iOS使用uiautomation                                                                

         •同时还支持firefox,并可扩展其他平台                                                         

                                                                          

         Appium设计理念                                                          

         •使用webdriver协议与用户交互                                                              

         • XPath抽象定位                                                         

         •底层调用各自平台的自动化技术                                                            

         •类似selenium的架构                                                                

                                                                          

                                                                          

         Webdriver协议                                                               

         •使用webdriver协议,成熟标准,应用广泛                                                         

         •它即将成为w3c业界标准                                                                

         •跨语言,不限制测试框架                                                        

         • Remote WebDriver方式支持云测和集群模式                                                                 

         • PC端运行可以支持各种runtimes,不受限手                                                                

         机环境                                                            

                                                                          

         Appium支持主流语言                                                          

                                                                          

         元素定位                                                                

         • Android和iOS的原生控件以及webview控件映射为特定的                                                                

         命名,比如把所有平台的按钮映射为button元素                                                            

         •把当前的结构树映射为html文档                                                          

         •通过xpath来选择元素                                                             

         •三种定位方式                                                            

         • Name: id,label text                                                          

         • Tag_name: component type                                                                

         • Xpath                                                           

         •定位元素建议采用PageObject模式,使用XPath                                                         

         •不要在测试用例中使用XPath                                                         

                                                                          

         Appium的灵活扩展                                                               

         • Appium对webdriver协议进行了扩充                                                             

         •通过利用execute_script执行mobie操作                                                               

         •通过自身服务增加了一些处理命令,比如安装,                                                          

         卸载,加载app                                                              

         •也扩展支持一些平台专有的指令                                                            

         • Webdriver即将成为W3C标准                                                        

         • Appium在推动webdrive增强mobile特性                                                              

                                                                          

                                                                          

         原生,混合,web                                                               

         •三种主流的app设计模式                                                                 

         •原生:                                                          

         •使用开发特定平台专用app                                                             

         •混合:                                                          

         • Phonegap百度轻应用                                                              

         • Web:                                                             

         •使用html5技术开发                                                        

         • jquery mobile, senchatouch                                                        

                                                                          

         移动测试环境规划                                                                

         •私有移动测试云环境                                                                

         •针对android ios等各个主要版本的测试环境                                                        

         •模拟器为主,应付日常测试需求                                                             

         •公共云服务                                                                

         •百度MTC Testin Saucelabs                                                                

         •真机为主,可以测试更多场景.
测试覆盖度                                                         

         高                                                            

                                                                          

         移动测试持续集成                                                                

         • Appium运行于PC端                                                        

         •支持webdriver协议和Grid模式                                                             

         •可以实现无缝的持续集成                                                                

         •与底层单元测试互补,实现分层自动化                                                        

                                                                          

                                                                          

         Appium对RF的支持                                                             

         • Appium支持webdriver协议                                                             

         •可以使用RFT来设计测试用例                                                                 

         •需要对appium目前的版本打补丁                                                          

         •已经提需求给官方,后续会更好的支持                                                        

                                                                          

         Appium应用注意事项                                                          

         • Xpath的支持有问题,并不是完全的xpath功                                                               

         能                                                            

         •一些app比如qq不允许简单的am start,需                                                                

         要提升权限,比如让appium扩展支持su                                                          

         • Appium长时间运行不太稳定,建议在执行测                                                       
        

         试前重启appium                                                           

                                                                          

         展望appium                                                           

         •目前还未到正式版,很多地方需要完善,但是代码                                                            

         清晰,而且还有saucelabs的工程师维护,代码质量                                                              

         有保证                                                            

         •架构非常优秀,扩展性很好,不会限制用户使用特                                                            

         定的语言                                                                

         •已经成为mobile自动化事实上的标准                                                           

         • Saucelabs云服务已经支持appium,MTC TESTIN后续                                                         

         也可能会跟进,使appium成为标准的云端解决方案                                                              

                                                                          

         相比其他的移动自动化测试工具,Appium测试由于调用了Selenium的client库使其可以使用任意的语言,包括Python、Ruby、Node.js,Objective,java等。                                                            

---------------------------------------------------------------------------------------------------------------------------------------------------------

        

         https://www.cloudmonkeymobile.com/monkeytalk
        

         interactive tests for native, mobile, and hybrid iOS and Android apps

         from simple "smoke tests" to sophisticated data-driven test suites.

        

         FEATURES AND BENEFITS

        

         Native, Mobile Web, and Hybrid iOS and Android Apps

         Simulators or Real Devices - no Jailbreaking required

         Robust cross-platform Recording/Playback that actually works!

         Use the simple MonkeyTalk command language or powerful JavaScript API

         Run your tests interactively or from continuous integration environments

         Free and Open Source!

        

        

        

        

        

        

        

         http://www.51testing.com/html/47/n-816947-2.html
         "MonkeyTalk软件测试工具由两部分构成:MonkeyTalk IDE和 MonkeyTalk Agents

"

         "MonkeyTalk IDE是Eclipse平台的工具,工能是:对iOS、Android程序进行录制、播放、编辑和管理功能测试,测试的目标可以是模拟器,也可以是硬件设备;

"

         "MonkeyTalk Agents是测试IOS与Android的库文件,测试时必须放到程序中作为代理使用,测试时的所有动作都由这个代理向IDE传递;(说明:
MonkeyTalk IDE与MonkeyTalk Agents是分开安装的,只有程序中安装了MonkeyTalk Agents,MonkeyTalk IDE才能发现这个程序并纪录他的操作)

"

         有些东西实现不了,比如,旋转屏幕、手动翻页等等。诸如类似非直接点击的问题,不知是因为软件本身没有这些工能,还是使用上的错误,资料很少,很难查到,只有步步摸索,愿所学有所承进

        

        

         http://huangqinqin.iteye.com/blog/1771999
         Windows平台MonkeyTalk环境搭建

        

         MonkeyTalk是款针对手机应用的自动化测试工具。

        

         特性:

         1》免费且开源。

         2》支持Android,IOS平台。

         3》MonkeyTalk主要包括:MonkeyTalk IDE、MonkeyTalk Agent、MonkeyTalk
scripts。

         4》MonkeyTalk Agent可以是真机或模拟器。

         5》无需root权限或越狱。

         6》支持录制、回放、脚本编写(支持JS)。

         7》支持回放内嵌的WebViews,但暂不支持录制。

         8》支持桌面网络浏览器 (Firefox only in Beta5),基于浏览器的移动网络。

         9》被测试app必须植入Agent,即必须修改app源码。

        

         http://www.mobileqazone.com/group/monkeytalk-android-ios-automation-tool
        

         http://www.open-open.com/doc/view/d2afd53c9a9546eb94d2612e28234f2c
        

         http://www.drdobbs.com/open-source/monkeytalk-tests-iosandroid-apps-in-the/232602236
--------------------------------------------------------------------------------------------------------------------------------------------

        

        

         NativeDriver[2] 是WebDriver接口的一种实现,使用移动客户端原生UI而不是浏览器UI(Selenium)的自动化测试工具。类似于selenium
RC的方式来运行测试程序,对于熟悉WebDriver的用户,上手会很快。从表1可以看出该工具也可以满足我们的自动化需求,但在调研初期,该工具提供的接口较少,没法满足测试需求,而今的完善程度也已经很高了。没有使用该工具可以认为是历史原因吧

        

         NativDriver现在作者已经不维护了,自己已经转向Robotium,基于Robotium进行了一些扩

        

         NativeDriver is an implementation of the WebDriver API which drives of the UI of a native application rather than a web application.

        

         We plan to make NativeDriver a multi-platform tool. We are currently working on the following versions:

        

         Android - usable and in the SVN repository.

         iOS - usable and in the SVN repository.

         Windows - Experimental and prototype phase

        

         WebDriver is used to do functional testing of web applications on many platforms and browsers. By applying WebDriver and all related technologies to native applications, we hope to bridge the gap
and alleviate the impedance mismatch between Web Applications and Native Applications.

        

         The libraries are built and stored in the nativedriver/android/build directory:

        

         server-standalone.jar - this should be linked to your Android application, and runs on the Android device (or emulator). This is the NativeDriver server, and listens for requests to automate the
application, such as “start an activity” or “click a UI element”

         client-standalone.jar - this should be linked to the test, which is the NativeDriver client. It implements a WebDriver API which communicates with the server.

        

         These two jar packages are represented by the yellow and green components below - yellow is code that is reused from Selenium WebDriver. Green is original code from NativeDriver.

        

        

         Google发布了NativeDriver,该工具是WebDriver API的一种实现,使用原生UI而不是浏览器UI(Selenium)的自动化测试框架,用于运行Android应用程序的功能测试。Google决定重用WebDriver
API 用于原生应用而不是创建全新的接口是因为两者之间有许多相似点——它们都控制相同的UI操作如点击、输入、读取文本、切换窗口,而且熟悉WebDriver的用户不需要学习另一种API就可以立即开始使用NativeDriver。

        

         该工具的主要功能:

        

         NativeDriver可用于在原生应用中执行自动化UI命令以测试应用在不同情况下的操作。

         NativeDriver允许开发人员为应用程序创建自动化的测试.

         它创建了一个"Driver",通过点击按钮,对设备进行虚拟化调整,切换视图等其它操作来控制应用程序。

         NativeDriver复制了WebDriver API,而Google
正是用WebDriver API来执行网页应用程序上的自动化测试。

         通过应用WebDriver和本地应用程序的相关技术,可以用来弥和差距,降低网页应用程序和本地应用程序之间的不匹配率。

        

         WebDriver支持在多种平台和浏览器中多功能地测试网页的应用程序。

        

         Android - 在SVN资源库中可用。

         iOS - 目前尚在开发中。

         Windows - 目前处在试验和原型阶段。

        

         1. 使用该测试工具需要对原产品进行改动

           a. 需要添加额外的package:server-standalone.jar

           b. 需要在manifest文件中添加额外的permission和instrumentation

        

         2. 该测试工具无法判断当前view的状态

           WebElement仅提供了click(), getText()等最基本的方法,但是对于enable(), visibility()等未提供相应的接口。

        

         3. 对Windows平台不友好

           很多代码都是对应linux平台的,没有考虑到在Windows平台上测试的情况

        

        

         http://wenku.baidu.com/link?url=M9phlAVIIE2eNb-VxodP3glEGZNaaXxqThhZYUfsfQ12snff5dQPnUtgVvxBRonsJcw4VVZDPgcMafYN35evEiNM-UF35WKaGEvVgzHHa-m
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

         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也没有,还好有源代码可以看一下

        

         http://wenku.baidu.com/link?url=YfOUsHdPXxZsh8RA5KY5x6gCRSSDzoQ5T9NkriiawqrKN6iMtC6bfpFxvrydWHwomq4WoFf4PeQqetXgR32WjStQj8epwQ-tu2G58rtY4pO
        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

        

         Nativedriver是google日本的团队开发的,但是团队人员已经去做其它项目,所以NativeDriver基本上已经是不更新了,社区的活跃度也已经是很低。nativedriver存在的一些bug估计也都还没有修复掉。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: