随着消费者对移动应用使用的占比增加, APP测试越来越被重视! 在现已出现的开源移动自动化测试工具中,总结了几个最实用的,希望对大家有帮助:

一、Calabash(适用于Android和iOS)

Calabash-android是支持android的UI自动化测试框架,PC端使用了cucumber框架,通过http和json与模拟器和真机上安装的测试apk通信,测试apk调用robotium的方法来进行UI自动化测试,支持webview操作。

Calabash-android 是支持 android 的 UI 自动化测试框架,PC 端使用了 cucumber 框架,通过 http 和 json 与模拟器和真机上安装的测试 apk 通信,测试 apk 调用 Robotium 的方法来进行 UI 自动化测试,支持 webview 操作, 依靠Ruby代码的支持.

Calabash-android 架构图

android 测试 黑科技 android开发测试机推荐_自动化


1、Features

这里的 feature 就是 cucumber 的 feature,用来描述 user stories 。

2、Step Definitions

Calabash Android 事先已经定义了一些通用的 step。你可以根据自己的需求,定义更加复杂的步骤。

3、Your app

测试之前,你不必对你的应用修改。(这里其实是有问题,后面我们会说到。)

Instrumentation Test Server —— 这是一个应用,在运行测试的时候会被安装到设备中去。这个应用是基于 Android SDK 里的 ActivityInstrumentationTestCase2。它是 Calabash Android 框架的一部分。Robotium 就集成在这个应用里.

二、Appium(Android和iOS)

1、Appium 是什么?

Appium是一个开源的,适用于原生或混合移动应用( hybrid mobile apps )的自动化测试工具,Appium应用WebDriver: JSON wire protocol驱动安卓和iOS移动应用。

2、Appium的特点:

支持多平台(Android、iOS等)

支持多语言(python、java、ruby、js、c#等)

Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。

Appium选择了Client/Server的设计模式。只要client能够发送http请求给server,client用什么语言来实现都是可以的,这就是如何做到支持多语言的原因;

Appium扩展了WebDriver的协议,没有自己重新去实现一套。这样的好处是以前的WebDriver API能够直接被继承过来,以前的Selenium(WebDriver)各种语言的binding都可以拿来就用,省去了为每种语言开发一个client的工作量。

3、Appium的哲学:

不需要重新编译或者修改应用

不被一种语言或者框架约束

不重复造轮子

开源免费

Appium测试相当于黑盒测试。这个测试框架,一般用于测试UI逻辑的正确性,不能升入测试业务逻辑流程。

三、Robotium(Android )

Robotium是Android平台上类似于selenium的开源自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。有JUnit基础的开发者,还是非常容易上手的。

Robotium结合Android官方提供的测试框架达到对应用程序进行自动化的测试。另外,Robotium 4.0版本已经支持对WebView的操作。Robotium的核心类是Solo,通过Solo可以对控件进行各种操作. Robotium 对Activity,Dialog,Toast,Menu 都是支持的。

最明显的缺点有两个:

一是必须要和被测系统签名保持一致,

二是不能做任何跨进程的操作。

robotium 是 android 自带类 Instrumentation 的一个封装,方便测试人员直接调用封装好的接口,也就是说,实际上我们直接使用Instrumentation 也能够进行自动化测试,但robotium可以简化我们的测试步骤,我们只需要调用某个robotium的API,传几个参数,就等于我们在调用一部分的Instrumentation帮我们实现测试。

四、Frank(iOS)

Frank 提供了针对iOS平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用Cucumber编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。

Frank 是 iOS 开发环境下一款实现自动测试的工具,Xcode 环境下开发完成后,通过 Frank 实现结构化的测试用例,其底层语言为 Ruby,作为一款开源的 iOS 测试工具,在国外已经有广泛的应用。但是国内相关资料却比较少。其最大的优点是允许我们用熟悉的自然语言实现实际的操作逻辑。

它提供了针对 iOS 平台的功能测试能力,可以模拟用户的操作对应用程序进行黑盒测试,并且使用 Cucumber 编写测试用例,使测试用例如同自然语言一样描述功能需求,让测试以“可执行的文档”的形式成为业务客户与交付团队之间的桥梁。

优点:

测试场景是在 Cucumber 的帮助下,用可理解的英语句子写的,还有活跃的社区支持,以及不断扩大中的库。

缺点:

对手势的支持有限,所以在设备上运行测试有点难。

五、UIAutomator(Android)

uiautomator是Android官方推出的安卓应用界面自动化测试工具,是理想的针对APK进行自动化功能回归测试的利器。能够根据文本、控件id、坐标进行点击、长按、滑动、查找等操作,实现与人一致的手动操作逻辑,根据测试用例使用python编码后根据指定命令操作,检查预期结果,进行测试。最终通过单元测试执行用例脚本生成相应报告

Android SDK提供下述工具来支持自动化的功能界面测试:

1、uiautomatorviewer:

扫描、分析待测应用的UI组件的图像工具。

2、uiautomator:

包含创建定制功能界面测试API和自动化运行测试用例的引擎的JAVA类库。

3、Uiautomator常用API了解

以下是uiautomator最基本最常用到的三个类,这里只是简单地介绍这三个类的作用,后续本人还会写相关随笔详细说明。

1)UiDevice:

用于获取设备的各种状态。

获取设备信息:屏幕分辨率、选装状态、亮灭屏…

操作:按键、坐标操作、滑动、拖拽、截图…

监听器功能

2)UiSelector:

通过组件的各种属性与节点关系定位组件。

涉及到的android基础:Android常用组件、Android组件的属性

3)UiObject:

代表一个组件对象,对象有许多模拟实际操作手机的方法和属性。

文本的编辑, 手势操作, 获取子类,判断对象是否存在

六、Katalon

KatalonStudio是一个能提供一整套功能来实现Web,API和Mobile的全自动测试解决方案的自动化测试平台。

KatalonStudio构建于开源Selenium和Appium框架之上,通过减少学习和集成这些框架以满足。

自动化测试需求所需的工作量和专业知识,使团队能够快速开始测试自动化。

Katalonstudio是一个非常好的工具,特别是对于那些有最少编程或开发背景的人。

如果你问我,在没有开发背景的情况下如何开始自动化测试。那么,使用像 Katalon studio 这样的工具是一个很好的开始。