解放双手——移动端UI自动化测试框架对比,总有一款适合你!

2023-06-05 0 379

随著Android和IOS三大网络平台的稳步加码,那时市售的终端端作业控制系统已被Android和IOS攻占,当中Android的交易额着实在80%以内。因此直面市售数不胜数的智能化试验架构和辅助工具,对终端端智能化试验该怎样优先选择呢?

解放双手——移动端UI自动化测试框架对比,总有一款适合你!

一、非主流架构对照

上直面照了市售非主流的六大架构:

解放双手——移动端UI自动化测试框架对比,总有一款适合你!

二、数十家架构优劣表明

1、Monkey是Android SDK便携式的试验辅助工具,在试验过程中常向控制系统推送伪乱数的使用者该事件流,如按钮输入、触屏输入、表情符号输入等),同时实现对已经开始合作开发的插件展开阻力试验,也有笔记输入。事实上该辅助工具根本无法做流程做许多阻力试验,虽然试验该事件和统计数据都是乱数的,无法自订,所以有非常大的不足之处。

2、MonkeyRunner也是Android SDK提供更多的试验辅助工具。严苛象征意义上而言MonkeyRunner只不过是两个Api辅助软件包,比Monkey强悍,能撰写试验JAVA源自订统计数据、该事件。优点是JAVA用Python来写,对试验人员而言明确要求较低,有较为大的自学生产成本。

3、Instrumentation是晚期Google提供更多的Android智能化试验辅助工具类,虽然在那时候JUnit也能对Android展开试验,但是Instrumentation允许你对插件做更为复杂的试验,甚至是架构层面的。通过Instrumentation你能模拟按钮按下、抬起、屏幕点击、滚动等该事件。Instrumentation是通过将主流程和试验流程运行在同两个进程来同时实现这些功能,你能把Instrumentation看成两个类似Activity或者Service并且不带界面的组件,在流程运行期间监控你的主流程。优点是对试验人员而言撰写代码能力明确要求较低,需要对Android相关知识有一定了解,还需要配置AndroidManifest.xml文件,无法跨多个App。

4、UiAutomator也是Android提供更多的智能化试验架构,基本上支持所有的Android该事件操作,对照Instrumentation它不需要试验人员了解代码同时实现细节(能用UiAutomatorviewer抓去App页面上的控件属性而不看源码)。基于Java,试验代码结构简单、撰写容易、自学生产成本,一次编译,所有设备或模拟器都能运行试验,能跨App(比如:很多App有优先选择相册、打开相机拍照,这就是跨App试验)。优点是只支持SDK 16(Android 4.1)及以内,不支持Hybird App、WebApp。

5、Espresso是Google的开源智能化试验架构。相对Robotium和UIAutomator,它的特点是规模更小、更简洁,API更加精确,撰写试验代码简单,容易快速上手。因为是基于Instrumentation的,因此无法跨App。

6、Selendroid:也是基于Instrumentation的试验架构,能试验Native App、Hybird App、Web App,但是网上资料较少,社区活跃度也不大。

7、Robotium也是基于Instrumentation的试验架构,目前国内外用的较为多,资料较为多,社区也较为活跃。优点是对试验人员而言要有一定的Java基础,了解Android基本组件,无法跨App。

8、Athrun是淘宝出的两个终端试验架构/网络平台,同时支持iOS和Android。Android部分也是基于Instrumentation,在Android原有的ActivityInstrumentationTestCase2类基础上展开了扩展,提供更多一整套面向对象的API。

9、Appium是最近较为热门的架构,社区也很活跃。这个架构应该是是功能最强悍的:

a.它的优点:

开源;

支持Native App、Hybird App、Web App;

支持Android、iOS、Firefox OS;

Server也是跨网络平台的,你能使用Mac OS X、Windows或者Linux;

b.它的哲理是:

用Appium智能化试验不需要重新编译App;

支持很多语言来撰写试验JAVA,Java、Javascript、PHP、Python、C#、Ruby等非主流语言;

不需要为了智能化试验来重造轮子,因为扩展了WebDriver。(WebDriver是试验WebApps的一种简单、快速的智能化试验架构,因此有Web智能化试验经验的试验人员能直接上手);

终端端智能化试验应该是开源的;

c.它的设计理念:

Client/Server架构,运行的时候Server端会监听Client端发过来的命令,翻译这些命令发送给终端设备或模拟器,然后终端设备或模拟器做出响应的反应。正是因为这种架构,因此Client能使用Appium client libraries多种语言的试验JAVA,而且Server端完全能部署在服务器上,甚至云服务器。

Session,每个Client连接到Server以后都会有两个Session ID,而且Client推送命令到Server端都需要这个Session ID,因为这个seesion id代表了你所打开的浏览器或者是终端设备的模拟器。因此你甚至能打开N个Session,同时试验不同的设备或模拟器。

Desired Capabilities,只不过就是两个键值对,设置许多试验的相关信息来告诉Server端,我们需要试验iOS、还是Android,或者换是WebApp等信息。

Appium Server是Node.js写的,因此能直接用NPM来展开安装。

Appium Clients,Mac OS和Win下提供更多GUI,不需要装Node.js,方便试验人员操作。

d.相关限制:

如果你在Windows使用Appium,你没法使用预编译专用于OS X的.app文件,因为Appium依赖OS X专用的库来支持iOS试验,因此在Windows网络平台你无法试验iOS Apps。这意味着你根本无法通过在Mac上来运行iOS试验。

三、总结

从方面的对照和优劣分析不难看出。对需要支持跨网络平台和需要支持WebView的应用,Appium的优势就较为明显了,因为Appium拥有了以内六大架构的所有优点:跨App,支持Native App、Hybird App、Web App,还支持N种语言来撰写你的试验JAVA。如果是只针对Android网络平台的应用,我还是较为推荐UiAutomator,特别是后面推出的UiAutomator2.0,此外,这两年,Google又推出了Espresso,它也应该是两个很优秀的架构,但是个人认为适宜编程基础一般或刚入门同学(反正我是有点用不太习惯)。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务