2017年十大移动应用开发的测试工具
- 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。
自动化测试工具介绍
自动化测试工具基本上是移动应用(Android和iOS)程序开发测试的必备工具,正确开展自动测试可以减少测试过程所需的时间以及测试执行过程中人为错误的几率。市面上有很多可用的自动化测试工具,其中一些免费,另一些收费。其中一些自动化测试工具早已有之; 而另一些工具才刚进入市场。每一种自动化测试工具都是独一无二的,都具有自己独有的特性。因此选择适合的自动化测试工具并不容易,下面推荐十款优秀的自动化测试工具。
1、Appium(iOS / Android)
Appium官网:http://appium.io/
Appium是一个开源的、支持混合应用和原生应用的跨平台自动化测试工具,它支持Android 2.3以上版本。Appium像服务器一样运行在后台,就像Selenium服务器那样。
Appium支持多种编程语言,如Java,Ruby,C#和其他WebDriver库中的编程语言。Appium利用WebDriver接口进行测试。
Appium使用UIAutomator库实现自动化测试Android,而UIAutomator库是Google提供的Android SDK中的内容。在移动设备上,它可以控制Safari和Chrome。它可以与测试框架TestNG同步。在这种情况下,UIAutomator可以生成翔实、详细的报告,类似于Ranorex生成的报告。
Appium的优点
- 由于在所有平台上使用了标准的自动化API,故开发者无需以任何方式修改或重新编译应用程序
- 开发者可以使用任何与WebDriver兼容的语言(比如Java,Objective-C,JavaScript)来编写测试用例
- 开发者可以使用任何测试框架
- 易于在不同的平台上进行设置
- 支持各种语言,如Ruby,Java,PHP,Node,Python
- 在设备上不需要安装任何东西
- 还可以使用Selenium Webdriver JSON连线协议
- 不必在不同的平台上重新编译移动应用
- 借助Java,它可以与其他工具集成
2、Robotium
Robotium官网:https://code.google.com/p/robotium/
Robotium是一个免费的Android UI测试工具,可以轻松地为Android应用程序编写强大的自动黑盒测试用例,且无需了解Android应用程序结构或实现类的相关信息。只需知道主类的名称和链接到它的路径。Robotium支持Android 1.6以上版本。Robotium中的测试使用Java编写。事实上,Robotium是一个单元测试库。
但是通过Robotium准备测试需要花费大量的精力和时间,因为必须使用程序源代码来自动化测试。该工具不太适合与系统软件交互,它无法锁定和解锁智能手机或平板电脑。Robotium中没有播放或记录功能,且不提供截图。
Robotium的优点
- 对项目基本无需了解就可以创建强大的测试用例
- 可以自动处理多个Android活动
- 创建稳固的测试用例需要的时间非常少
- 与Ant或Maven轻松同步,作为持续集成的一部分运行测试
- 可以在预安装的应用程序上运行测试用例
- 可以获得Robotium测试的代码覆盖
3、Selendroid
Selendroid官网:http://selendroid.io/
Selendroid是一个测试自动化框架,支持Android本地应用、混合应用、移动Web应用的UI自动化测试。它使用Selenium 2客户端API测试编写。
Selendroid的优点
- 完全兼容JSON线协议
- 需要对被测试应用进行更改才能自动化
- 自动化本地应用或混合应用使用了相同的概念
- 通过不同的定位器类型,可以找到UI元素
- 可以同时与多个Android设备进行交互
- Selendroid支持硬件设备的热插拔
- 通过不同的定位器类型,可以找到UI元素
- Selendroid自带了一个有用的工具,即Selenium Inspector。它允许您检查应用程序UI的当前状态。
4、MonkeyRunner
MonkeyRunner官网:http://developer.android.com/tools/help/monkeyrunner_concepts.html
MonkeyRunner工具提供了一套API,用于编写从Android代码之外控制Android设备或模拟器的程序。这个工具是在Robotium之后就性能而言的。测试用Python编写,用于创建可以使用录音工具的测试。
MonkeyRunner的不同之处在于,需要为每个设备编写脚本,并且每次当测试程序的用户界面改变时,测试都需要调整。
MonkeyRunner的优点
- 可以控制多个设备
- 为了自动化测试,开发者不必处理源代码
- 可以用于功能的自动化测试
- 也可用于回归测试
- Jython允许MonkeyRunner API与Android应用程序交互
5、Calabash
Calabash官网:https://github.com/calabash/calabash-ios
Calabash由多个库组成,这些库支持对代码以可编程的方式进行测试,且支持本地应用和混合应用。
Calabash的优点
- 提供了专门针对在触摸屏设备上运行的本地应用程序的API
- 包含了支持本地应用和混合应用的对代码以可编程的方式进行测试的库
- 支持Cucumber框架,这使得业务专家和非技术质量保证人员更容易理解
6、Frank
Frank官网:https://github.com/moredip/Frank
Frank是一个轻量级的基于UI的自动化测试工具,是一个使用Cucumber和JSON命令组合的工具。Frank可作为用于iOS版本的iOS应用程序的Selenium。
Frank的特征包括
- 有清晰的、类似CSS选择器的语法,允许相当宽容的测试
- 支持预定义的步骤,可以立即使用它们进行测试
- 由Cucumber驱动
- 包含symbiote一个活的内省工具
- 支持与CI集成
- 可以在模拟器和设备上运行测试
- 记录测试运行的视频,以显示应用程序的行动
7、KIF
KIF官网:https://github.com/kif-framework/KIF
KIF是一个基于Objective-C的框架,仅用于iOS应用的自动化测试。KIF是一个直接与XCTests集成的自动化框架。只要不涉及到修改其测试规范时,就可以使用它。
KIF的特征
- 有积极的社区和良好的支持
- 与XCTests无缝集成,KIF配有“KIFtestCase”,可以用来代替“XCTTestCase”
- KIF通过其辅助功能标签访问UI元素
- 一切都在一种语言Objective-C中,因此,纯iOS开发人员可以轻松获取
- 有令人印象深刻的命令行和CI
- 对手势有相当合理的支持
8、MonkeyTalk
MonkeyTalk官网:https://github.com/sonarme/monkeytalk
一切都是从数据驱动的测试套件到简单的“烟雾测试”,MoneyTalk可自动实现iOS和Android应用程序的真实功能的交互式测试。
MonkeyTalk的特征
- 脚本简单易懂
- MonkeyTalk IDE可以记录/播放测试脚本
- 不需任何强大的编程或脚本知识
- 支持网络设备和仿真器
- 对于Android和iPhone,可以使用相同的脚本
- 支持循环概念
- 可以使用此工具生成XML和HTML报告,它还会在发生故障时捕获截图
- 为了持续集成,MonkeyTalk支持Jenkins和Hudson。它还支持JUnit报告
9、Testdroid
Testdroid官网:http://testdroid.com/
Testdroid是一个基于云计算的移动应用程序,可帮助开发人员节省应用程序开发费用,加快产品的上市时间,降低运营成本和不可预测的成本。Testdroid是测试应用程序针对各种真正的Android和iOS设备与不同的硬件平台,屏幕分辨率和操作系统版本的最快的方式。价格范围根据需求从499−4999/月不等。它是Android和iOS游戏的稳固的手机游戏测试平台之一。在启动应用程序之前,它可以远程手动访问超过300个运行Android的真实设备。
Testdroid的优点
- 节省了应用程序的开发成本
- 最小化实际设备和敏捷测试的风险
- 降低运营成本和不可预测的成本
- 提高应用程序评级和日常活动用户
10、SeeTest by ExperiTest
SeeTest见:https://experitest.com/
SeeTest是ExperiTest提供的先进的移动测试、性能测试和监控工具。SeeTest提供了基于云的移动测试,您可以远程在真实的移动设备中运行测试。SeeTest云提供各种设备,移动操作系统和网络速度的模拟。
SeeTest可以自动化您的移动测试,并与CI/CD解决方案结合得很好,且可以并行测试。SeeTest还提供了一个可以让测试人员远程执行移动测试的Appium Enterprise。
SeeTest允许通过SeeTest Network Virtualization和Loadrunner附加组件对应用进行性能测试。
如何选择最佳自动化工具
- 确定需要自动化的测试
- 研究和分析满足自动化需求的自动化产品
- 根据您的需求和预算做取舍
- 根据要求,选择最合适的一个或多个工具
- 与其他利益相关者讨论所选择的自动化工具,解释选择并获得批准
- 继续测试自动化