众所周知,目前市场上的手机操作系统已经被Android和IOS占据,其中Android的份额超过80%。那么面对市面上形形色色的自动化测试框架和工具,为什么说Appium在自动化测试框架上具有绝对优势呢?先来看看各大主流框架的对比和优势。 一、主流框架对比 以下是市面上几款主流框架的对比: 二、各大框架优缺点详解1、Monkey是自带的测试工具安卓开发工具包。向系统发送伪随机用户事件流,如按键输入、触屏输入、手势输入等),对正在开发的应用进行压力测试,同时也有日志输出。其实这个工具只能对程序做一些压力测试。由于测试事件和数据是随机的,不能定制,所以有很大的局限性。2、MonkeyRunner也是AndroidSDK提供的测试工具。严格来说,MonkeyRunner其实是一个Api工具包,比Monkey更强大,可以编写测试脚本自定义数据和事件。缺点是脚本是用Python写的,对测试人员要求较高,学习成本比较大。3.Espresso是Google开源的自动化测试框架。与Robotium和UIAutomator相比,其特点是规模更小,更简洁,API更精准,编写测试代码简单,易于快速上手。因为是基于Instrumentation,所以不能跨App。4.UiAutomator也是Android提供的自动化测试框架。它基本上支持所有的Android事件操作。与Instrumentation相比,它不需要测试人员去了解代码实现的细节(不用看源码就可以使用UiAutomatorviewer抓取App页面的控件属性)。基于Java,测试代码结构简单,易写,学习成本低,一次编译,所有设备或模拟器都可以运行测试,并且可以跨APP(例如:很多APP都有选择相册,转在相机上拍照,这是跨应用测试)。缺点是只支持SDK16(Android4.1)及以上版本,不支持HybridApp和WebApp。5.Instrumentation是早期Google提供的Android自动化测试工具类。虽然当时JUnit也可以测试Android,但Instrumentation允许您对应用程序进行更复杂的测试,甚至是在框架级别。通过Instrumentation,您可以模拟按钮按下、抬起、屏幕点击和滚动等事件。Instrumentation通过在同一个进程中运行主程序和测试程序来实现这些功能。你可以把Instrumentation看成是一个类似于Activity或者Service的组件,没有界面,在程序运行过程中监控你的主程序。缺点是对测试人员编写代码的能力要求较高,需要对Android相关知识有一定的了解,还需要配置AndroidManifest.xml文件,不能跨多个app。6.Athrun是淘宝开发的一款移动测试框架/平台,同时支持iOS和Android。Android部分也是基于Instrumentation,它是在Android原有的ActivityInstrumentationTestCase2类的基础上进行扩展,提供了一套完整的面向对象的API。7.Robotium也是一个基于Instrumentation的测试框架。目前在国内外广泛使用,信息量更大,社区更活跃。缺点是测试人员必须有一定的Java基础,了解Android的基本组件,不能跨App。8、Selendroid:也是一个基于Instrumentation的测试框架,可以测试NativeApp、HybridApp、WebApp,但是网上资料很少,社区也不是很活跃。9.Appium是最近很火的一个框架,社区也很活跃。这个框架应该是最强大的:如果是软件测试,接口测试,自动化测试,性能测试,LR脚本开发,面试经验交流。有兴趣的可以拨打175317069,群里会有不定期的免费资料链接。这些资料是从各个技术网站上收集整理出来的。如果大家有好的学习资料,可以私信发给我,我会注明出处,然后分享给大家。A。它的优点: 开源; 支持NativeApp,HybridApp,WebApp; 支持Android、iOS、FirefoxOS;服务器也是跨平台的,你可以使用MacOSX、Windows或Linux; b。它的理念是: 使用Appium进行自动化测试,不需要重新编译App;支持多种语言编写测试脚本,如Java、Javascript、PHP、Python、C#、Ruby等主流语言; 无需为自动化测试重新造轮子,因为扩展了WebDriver。(WebDriver是一个简单快速的WebApp自动化测试框架,有web自动化测试经验的测试人员可以直接上手); 移动自动化测试应该是开源的; 接口测试,自动化测试,性能测试,LR脚本开发,面试经验交流。有兴趣的可以拨打175317069,群里会有不定期的免费资料链接。这些资料是从各个技术网站上收集整理出来的。如果大家有好的学习资料,可以私信发给我,我会注明出处,然后分享给大家。C。其设计理念: Client/Server架构。Server在运行时会监听Client发送的命令,将这些命令翻译后发送给移动设备或模拟器,移动设备或模拟器会做出响应。正是因为这种架构,客户端可以使用Appium客户端库多种语言的测试脚本,服务端可以部署在服务器甚至云服务器上。Session,每个Client在连接到Server后都会有一个SessionID,Client向Server发送命令时需要SessionID,因为这个seesionID代表的是你打开的浏览器或者移动设备的模拟器。所以你甚至可以打开N个会话,同时测试不同的设备或模拟器。 DesiredCapabilities,其实就是一个键值对,设置一些测试相关的信息,告诉Server端,我们需要测试iOS,Android,或者WebApp等信息。 AppiumServer是Node.js写的,所以可以直接用npm安装。 Appium客户端、MacOS、Win提供GUI,无需安装Node.js,方便测试人员操作。 d。相关限制: 如果你在Windows上使用Appium,你不能使用OSX预编译的.app文件,因为Appium依赖OSX特定的库来支持iOS测试,所以在Windows上你不能测试iOSApps。这意味着您只能在Mac上运行iOS测试。 3.总结 从各方面的对比和优缺点的分析不难看出。对于需要支持跨平台和WebView的应用,Appium的优势更加明显,因为Appium具备以上各大框架的所有优势:跨App,支持NativeApp、HybridApp、WebApp,支持N种语言编写测试脚本。如果是只针对Android平台的应用,我还是推荐UiAutomator,尤其是后来推出的UiAutomator2.0。此外,谷歌在过去两年推出了Espresso。应该也是很不错的框架,不过个人觉得适合编程基础一般或者刚入门的同学(反正我用不惯)。
