首页

文章

如何选择Android自动化框架的几点拙见

发布网友 发布时间:2022-03-25 03:18

我来回答

1个回答

热心网友 时间:2022-03-25 04:47

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

根据你的要求,应该不会考虑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架构框架图整理》http://blog.csdn.net/zhutian/article/details/39453505),导致框架有点复杂,当问题出现的时候调试起来比较难以定位,不知道哪个模块出错了。但是说道调试,总比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不说,如果你又要考虑的话就需要你根据我之前说的再总结下了^_^)。
出师表高锰酸钾有画面了吗 2021年幼儿园新学期致家长一封信 电脑屏幕一条黑线怎么办? 销售代理商销售代理商的特点 商业代理商业代理的特征 如何看微信有没有开通微众银行 为什么微众没有开户 微众银行怎么开户 微众银行APP开户流程是什么? 唐古拉山海拔唐古拉山海拔是多少 怎么看待取消跳广场舞的人的退休金 如何选购新鲜的蓝田水柿? 恭城水柿柿树作用 创维洗衣机使用教程 创维全自动洗衣机怎么使用 自动开门器 狗羊属相婚姻相配吗 3岁的小孩不会说话怎么办 3岁孩子不会说话,应该挂什么科? 3岁小孩不会说话正常吗 鹿茸炖乌鸡怎么做? 新型冠状肺炎吃什么药可以预防 冰箱上电后一直响 食品生产许可证编号开头为“ G”。 库存过期香精 猎狐点卡平台经营范围 电影代理靠谱吗 兄弟三人,有什么好的QQ网名 租赁合同书范本简单版 简单房屋出租协议书模板 简单明了租房合同范本 租房合同书免费下载(实用6篇) 出租房屋合同 简洁的房屋租赁合同范本 阳光人寿保险是骗人吗? 三胎政策有那些配套措施有哪些 ...法院也立案了,可被没有可执行的财产怎么办,我的工资还能要回来吗... 离婚后析产案法院强制执行,对方说没有钱,我该怎么办 澳门为什么叫澳门? 新能源老年代步车锂电池 如何为职务侵占罪进行辩护 职务侵占如何辩护 职务侵占罪有效辩护点有哪些 miui11开发者选项在哪_小米miui11开发者选项在哪 查询考研成绩需要什么 考研查分前要做什么 考研查询需要什么证件 研究生什么专业好 什么专业的研究生最好 考研究生什么专业好 研究生学什么专业 宝石花的养殖方法介绍 宝石花怎么养才长得好 自动化测试工程师是属于自动化专业就业方向吗? 软件测试需要学习那些基础知识啊? 谁用selenium和appium同时开发了 Android 手机自动化测试工具有哪几种 selenium和robotframework哪个更适合做自动化测试 selenium和webdriver的区别 Selenium 各个版本之间有什么区别? selenium可以做app自动化测试吗 appium和robotframework的区别 AppiumDriver<MobileElement>和 AndroidDriver 之间的区别 谁能对比下几款常用的自动化测试工具的优缺点啊? 比如Selenium、QTP、TestWriter等等~ selenium中有8中定位方法,为什么appium和它很像? appium的webdriver和selenium有什么区别? selenium 和 appium 区别是什么?具体一点谢谢 微信冻结了要过几个小时才能解冻 微信被冻结要多久才会自动解冻? 微信冻结了要过几个小时才能解冻微信被紧急冻结了解冻需要多久时间_问一问 法院冻结微信钱包多久解冻? 微信的解封需要多久呢? 微信被法院冻结后多久能自动解冻 什么是软件测试,零基础应该怎么学习 Test Complete和Selenium的区别?优缺点有哪些? 哪里有比较好的自动避碰对比测试? selenium ide和selenium python的区别 公众号是什么意思? 什么是公众号? 微信公众号是什么意思! 公众号是什么意思? 公众号是什么? 公众号是什么意思 公众号到底是干什么的 你好,什么是公众号?微信公众号是啥意思?谢。 微信公众号是啥意思? 公众账号是什么意思 我的微信公众账号是什么意思? 微信里的订阅号是什么 微信公众平台商户号是什么意思? 微信公众号什么是认证公众号呢? 谁知道微信公众号开发是什么意思啊?都有哪些功能呀? 和微信公众号有什么区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com