注:本来这封信要发给Wonerfei网友的,但是因为每次只能发200字,所以干脆贴到博客上,叫Wonderfei同学到这上面来看,也算是我自己的一个临时总结吧。同时也希望大家给予Wonderfei相应的帮助,毕竟我自己的观点不一定正确和完整。

Hi Wonderfei,

你好,由于我是博客新手,所以没有留意到你给我发的私信,不好意思。

首先由于我自己也是个新手,也是在学习各种框架然后给公司项目选定相应自动化框架,研究移动自动化测试框架也就近段时间而已,所以我只能从我自己今天为止的认知角度给各个框架抒发我自己的拙见,你看是否能从中接纳一二吧(对于我自己的话还需要再花一段时间去学习各个框架才能确定哪个/些是适合我们项目的了,也许到时我会写个正式的总结)。

根据你的要求,应该不会考虑MonkeyRunner和Robotium,但我还是想跟你说下其实Robotium还是挺不错的,如果你没有考虑跨进程调用其他APP的话。至于MonkeyRunner我就不大推荐了,你可以看下我对金阳光老师的一个评论的回复《MonkenRunner通过HierarchyViewer定位控件的方法和建议》(文章最后我干脆也贴出来了)。至于Robotium,你对比下本人博客里面各个框架编写的Note的测试示例就可以看出来Robotium相对其他框架会简介很多,况且发展的比UIAutomator和Appium长久很多,所以也应该会更成熟,和Eclipse集成调试起来也很方便。比起后两者如果有不足的话我觉得就以下几点吧:

  • 1. 所有的操作抽象到一个Solo类里面,缺乏面向对象的编程思想,有时会让人不适应。如果你熟悉C语言等面向过程的语言思想的话应该没有问题。
  • 2. 获取控件的方法比较缺乏,大概就几种:通过Text,ID, ClassName,Index。没有后两者的多种多样
  • 3. 跨进程:因为底层使用Instrument框架,测试包和被测应用包打包在一起作为一个进程运行而线程间通过instrumentaiton进行通信,导致了逃不出这个进程设沙箱(sandbox)
  • 4. 做不了模拟键盘的测试(但同时这个也是Robotium非常巨大的优点,因为不像后两者那样需要调用键盘导致输入的各种各样的问题),因为Robotium输入读出其实是直接对控件的text属性进行操作没有通过键盘驱动的,你如果做过UI编程应该就明白我的意思了,因为记住你的测试代码和目标应用是打包在同一个进程中的,同一个进程中想访问另外一个线程的某个变量,运用相应的IPC(Interprocess Communication)机制当然是没有问题的了。

然后到了你问的主题UIAutomator和Appium的对比,我个人是这样看的:

  • 1. UIAutomator是亲爹(google)生的,所以可以保证后续的开发维护力量,除非google倒闭(这里我有点不懂的是为什么google对Monkeyrunner的态度这么让人摸不着头脑,具体请看以上我说的对MonkeyRunner的评论)
  • 2. Appium虽然不是亲爹生的,但是干爹实力雄厚把它武装的无所不能(android,ios,firefox,browser通杀),单单以android来说,底层用得还是UIAutomator,所以只要它能及时跟上UIAutomator的更新,功能上面我不是很担心。
  • 3. 但是也这是Appium的这种架构:UIautomator/seledroid<->Appium Server<->Selenium/AppiumDriver<->Test Case (《Appium架构框架图整理》),导致框架有点复杂,当问题出现的时候调试起来比较难以定位,不知道哪个模块出错了。但是说道调试,总比UIAutomator好,起码Appium可以直接集成到eclipse上面进行debug,UiAutomator却每次都要push到目标机器然后再去执行,怎么调试呢?到现在为止我知道的只能原始的print了。
  • 4. 向下兼容问题:Appium可以通过底层UIAutomator/Selendroid(不记得是不是这名字了)通杀;UIAutomator只能在API Level 17(包含)以上使用
  • 5.语言支持:appium基本通杀,UIAutomator用java足矣
  • 6.跨平台:如你所说的只是android两者都没有问题,如果往后需要扩展到ios,那么建议appium
  • 7.bug数量:UIAutomator有的问题Appium都会有,UIAutomator没有的问题Appium也有可能有^_^(不过我还是很看好Appium的)
  • 8. 输入问题,都有bug,具体请查看我相应blog,特别是中文输入,这就是为什么我刚才特意提出Robotum的原因之一
  • 9. WebView支持:UIAutomator据说今年年初已经开始支持,个人没有这方面要求所以没研究;Appium的框架用的Selenium本身就是PC上最流行的开源Web测试框架,所以必然支持了。注意这你你要有点android编程知识了,WebView指的不仅是WebView控件还包含如用sencha+phonegap把webview封装成一个跨平台app的情况了,具体如果不清楚请google。

其他区别我现在就没有想到了,希望能帮助到你,从我自己的角度来看,我觉得UIAutomator继续往前发展是必然的了,但是它不可能最终支持ios。至于Appium我同样有很大的信心它会继续往好的方向发展,且考虑到它的跨平台支持,基于node.js(现在非常流行哦),兼容性等,我如果是你的话我会考虑用Appium的(抛开Robotium不说,如果你又要考虑的话就需要你根据我之前说的再总结下了^_^)。

我觉得这个可以类比之前的微软和Borland的关系,API是Windows,但是IDE是Borland的,各专所长了。可惜(或者庆幸)后来微软发力一下把Borland打得满地找牙一蹶不振,不过这是题外话了,略过......

对了,我有可能会对这封邮件整理下发到博客了,也希望其他网友能评点一二给你出主意。今晚本来想看下easy_monkey的知识了,给你写这个email变成临时性总结了。^_^

给金阳光老师评论的回复如下(关于MonkeyRunner的个人观点)

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

回复haorenmin2008:首先膜拜下,金老师大驾光临蓬荜生辉啊!
对于后者,确实如此,UIAutomator需要API Level17(包含)以上。
对于前者,因为还没有MonkeyRunner的项目经验,所以是否很强大我就不敢妄加评论了,但是在我近来的tryout过程中,鄙人有以下的一些不成熟的认知:

  • 1. 感觉功能不是很稳定,之前尝试一个MonkeyDevice的getProperty方法,竟然有时成功有时失败。
  • 2. 性能不好,特别是当我们要用到hierarchyviewer的功能的时候很明显。
  • 3. 只能用MonkeyImage的sameAs做截屏的对比,虽然加上hierarchyviewer后可以用它的getText,但还是很有限。
  • 4. 控件定位方面主要是坐标点和HierarchyViewer提供的根据ID。前这儿在UI布局稍微有调整位置的话就需要跟着变动,没有像其他控件类框架那样做高层抽象除非换控件不然都不需要怎么变动;后者的话很多控件是没有id或者是有多个控件id相同的。
  • 5. 可调试性也不强(起码我摸索了这几天没有发现一个很好的调试方法,比如IDE Ecilpse等的集成调试方法)
  • 6. HierarchyViewer的稳定性也让我担忧,碰到过几次取控件信息的时候报exception的。
  • 7. 资料稀缺,不仅百度,google也一样
  • 8. Google支持让人觉得摸不着头脑,sdk给出的API和官方提供的API竟然不一致,以MonkeyDevice为例子,而sdk多出来的API竟然还不能用,google出来的信息不超过10个page,还要很多都是重复的石沉大海的网友报的问题。
  • 9. 再一个的我真心搞不懂为什么本身java写的库非要搞个jython来调用,首先我不说性能损耗(这点肯定是有的,native库当然用native语言调用效率最好嘛),我想在eclipse上对以下的"device."做自动补全是做不到的“device = MonkeyRunner.waitForConnection()\n device.",而只有直接调用个构造函数实例化的device = MonkeyDevice(xxx)才能做到,这个我不相信是我配置的问题,换了个jython标准编译器以调用标准库问题同样存在。

当然它也有它的优点了,不详谈

Best Regards
Kevin Zhu
-------------------------------------------------------------------------------------------------------------------

wonderfei : 你好,我看到你写了很多Android的自动化测试相关的文章,我最近准备在项目中实施Android的UI自动化测试,主要用来做回归测试,当前比较流行的robotium和appium,你认为哪一个更推荐使用以及未来使用?

 

作者

自主博客

微信

CSDN

天地会珠海分舵

http://techgogogo.com

服务号:TechGoGoGo

扫描码:

http://blog.csdn.net/zhubaitian

致网友Wonderfei的一封信(如何选择自动化框架的几点拙见)相关推荐

  1. Android自动化框架对比

    简介 移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的"变", 变化导致自动化用例的大量维护.从分层测试的角度,自动化测试应该逐层进行.最大量实现自动化测试的应该是 ...

  2. 致大学计算机老师的一封信,优秀书信作文:致大学老师的一封信

    优秀书信作文:致大学老师的一封信 相关内容: 亲爱的王老师:您好!我也跟了您两年了,也是您的老学生了!您很幽默,我们都很喜欢您.因为您有时的举动太好笑了.记得我刚来到这里时,我看着茫然的眼前,不禁有一 ...

  3. 《致未来老婆的一封信》

            题记:今年5月2日结婚,马上要回去了.现将我之前写过的"致未来老婆的一封信"发于此处,算是我们结婚前的一份礼物.同时,愿天下有情人终成眷属! 未来的老婆大人: 你好 ...

  4. android主流开源自动化框架(monkeyrunner,robotium,uiautomator

    2019独角兽企业重金招聘Python工程师标准>>> android自动化框架: Uiautomator: 优点:可以对所有操作进行自动化,操作简单:缺点:Android版本需要高 ...

  5. python api开发用什么框架_python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  6. Robot Framework 自动化框架 - 定制自己的library

    Robot 自动化框架内置提供了一些library,如OperatingSystem(包含一些常用的的文件操作关键字,如copy文件,创建目录),Telent,Screenshot,String,另外 ...

  7. 用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

    python接口自动化一(设计一款自己的接口自动化框架) 一.起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest.当接口数量不怎么多时还好, ...

  8. vue:无法将“vue”识别为脚本_「前端架构」React和Vue -CTO的选择正确框架的指南...

    快速总结:为项目选择正确的javascript框架或库是CTO和项目经理的基本任务.然而,选择的范围很大程度上取决于几个因素,如项目时间.学习曲线.框架性能和团队规模.这篇文章旨在指导他们选择正确的j ...

  9. python 自动化框架_学会Python+Selenium,分分钟搭建Web自动化框架!

    用python+selenium实现UI自动化测试,要有一些HTML和xpth的基础,当然python基础一定是必须要会的.笔者建议花点时间了解下相关基础知识,不至于后面发懵. 一.什么是seleni ...

最新文章

  1. 14/10/校内测试{天天考,丧心病狂}
  2. android程序设计期末试题b,《Android程序设计》期末试题B.doc
  3. 【渝粤题库】广东开放大学 网络营销基础与实践 形成性考核 (2)
  4. AngularJS----服务,表单,模块
  5. 华为Mate X国行售价曝光,5G网速实测,强悍!
  6. 寻找最优秀AI公司 | 量子位2018年度评选启幕
  7. java web mysql备份,Java Web 实现Mysql 数据库备份与还原
  8. 7-2 求最大值及其下标编程总结
  9. Java高级工程师学习要求
  10. VS2017配置opencv教程(超详细!!!)
  11. java简历专业技能,附详细答案解析
  12. ArcGIS的ArcMap的Mxd格式符号转换为Geoserver style的sld格式
  13. vscode下载C/C++手动下载 VSIX安装
  14. 跑得快,打不死!清华大学开发“小强”机器人,壮汉狂踩也挡不住前进步伐
  15. mybatis-plus过滤不查询某一字段
  16. 非共识大会 | 伍鸣博士:DApp发展需要一条高性能且安全的公链
  17. 小米温湿度计接入金桔通用蓝牙网关
  18. 数据结构的C实现_二叉树
  19. android oreo 老机型,Android Oreo 通知新特性,这坑老夫先踩了
  20. windows系统安装配置mysql8,并设置远程访问

热门文章

  1. 17 款程序员必备 Chrome扩展插件,爱了爱了
  2. Ubuntu安装宝塔部分展示
  3. 异构(XPU)计算 AI开发者的福音使用OpenVINO AUTO插件提高 AI 应用的性能和可移植性
  4. latex输出下划线
  5. 怎么快速将PDF文件转换格式?这几个方法完美解决!
  6. android:SeekBar控制系统音量(媒体音量键和通话音量键的diallog自动切换调节控制)
  7. ndows 资源管理器,Windows 资源管理器
  8. 机顶盒下周招标,直播卫星蓄势待发
  9. 您知道只需2步就可以展示健康码的方式吗
  10. 二维小波变换_小波变换-哈尔小波(Haar)