随着消费者对移动应用使用的占比增加, 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 架构图
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 这样的工具是一个很好的开始。