基于 Perfecto mobile cloud 的移动端自动化测试实践

本文将介绍 Pefecto mobile cloud 在移动端自动化测试的应用。 Pefecto 将真实移动设备放到 cloud 端 , 并提供通过 web/Eclipse 插件的形式进行访问与测试。同时,Pefecto 开放了基于 selenium 的第三方 API:Mobile WebDriver,支持自动化测试人员通过 Eclipse 访问 Perfecto 上的真机设备,通过 Mobile WebDriver 远程识别与调用被测应用,快速实现自动化,并与 RQM 结合实现对 devops 的支持。

Perfecto Mobile 简介

移动设备上的测试需求随着移动应用的普及被越来越重视,但是,移动端应用的测试目前仍然存在着很多问题。跨平台,多设备,多型号。不同的测试环境涉及到很多复杂性,为解决这些问题,通常需要花费很多的时间与成本。而许多依赖模拟器进行的测试,因模拟器与真实设备的差异,仍然存在许多不足,而全部使用真实带来的成本又过高。为解决这一问题, Perfecto Mobile 通过远程服务的模式,为测试人员提供了全覆盖的真实移动设备,并通过浏览器 /IDE 插件等形式提供了用户对设备的快速访问。

Perfecto Mobile 主要提供的功能如下:

  1. 分布式,远程功能测试:以交互方式进行远程手动测试,保证移动应用程序功能正确性。
  2. 真实设备上的自动化测试:通过 Perfecto Mobile 提供的自动化测试 API,开发用户测试脚本,实现移动设备上的自动化测试。
  3. 移动应用程序的实时监控:在真实的设备上监控复杂用户场景。
  4. 真实设备上的性能测试:在客户端和服务器端发现及早发现性能瓶颈并优化用户体检。

Perfecto Mobile 在移动端功能测试应用简介

Perfecto Mobile 的分布式的远程功能测试通过浏览器访问实现。用户通过在浏览器输入 Perfecto Mobile 地址打开首页 , 选择测试相应的移动设备,就可以简单快速的进行测试。下文将简单介绍测试人员如何在 Perfecto 平台开始功能测试。

  1. 软件要求:浏览器:IE, Firefox,Chrome;Flash player(要求版本 11 及以上)

  2. 打开 Perfecto 首页并登录:http://mobilecloud.perfectomobile.com,账号及密码可以在网站申请注册。

    图 1. Perfecto 登录

  3. 登录后点击“Select Device”, 即可显示所有可供测试的移动设备,所有标记为 Avaliable 的设备都可供使用。

    图 2. 设备列表

  4. 选定需要测试的设备如 iPad 2,通过右下角菜单,可选择对该设备进行预定,立即锁定或者打开查看操作。预定设备时,用户需要设置起始时间,来达到在该时间段内对设备的独占使用。

    图 3. 操作菜单

图 4. 预定设备

  1. 打开后的设备如下图所示,该设备为真实的 iPad。测试人员可根据测试需求在该设备上进行测试操作。测试完成后,测试人员可选择释放该设备或延长使用时间以便进行更多的测试。

    图 5. 设备查看

  2. 左边的工具栏为用户提供了各种快捷操作。例如:用户可通过”Open URL”按钮直接在 ipad 的浏览器端打开 google 页面如下图所示。另外 Record 按钮提供用户录制测试场景,Test flow 可直接打开用户预录制或定义的测试场景。为测试人员带来极大的操作便利。

    图 6. 工具栏

Perfecto Mobile 在移动端自动化测试应用

Perfecto 对于手动功能测试,可以说只是为用户提供了测试设备,及一部分快捷操作,Perfecto 在自动化测试上的支持则是大大减少了自动化测试人员的工作量。

一般来说,目前移动端最主要的 2 大操作系统平台为:Andriod 和 iOS。对于测试人员来说,Andriod 真机测试相对简单,可以在测试人员的工作电脑上编写测试脚本,之后通过移动端自动化测试工具调用移动设备直接进行测试,而 iOS 的真机测试则有相当多的限制条件。以测试工具 appium 为例,为满足真机的自动化测试,用户需要准备如下条件:1)Mac 真机与 xcode 环境 2)被测设备 3)apple 开发者帐号 4)测试工具 appium 的在客户端和服务端的安装。以上限制都为自动化测试人员带来了相当的麻烦与工作量,尤其是在测试开始初期,由于各种设备或帐号申请的不到位,将很大程度的延迟或阻碍测试进行。

Perfecto Mobile 提供了开放的 API,测试人员只需调用这些 API,就能方便而快速的实现测试脚本的编写与运行,极大的简化了测试环境搭建与准备,提高了测试效率。

Perfecto 的 API 利用现有的自动化测试流程,通过扩展各流行的开源及商业自动化测试工具,进行移动端应用测试的支持,并且这种持续集成不需要额外的技能学习或其他成本投入。

目前 Perfecto 支持的语言和测试框架如下图:

图 7. 支持的语言和平台

介于 Perfecto 的多平台、多语言、多框架支持,本文自动化实践将只针对 Selenium +Java +Eclipse 的实现进行展开。

Perfecto Mobile 对移动端自动化的支持是基于 Selenium 扩展出了 Mobile Cloud WebDriver。Selenium 被广泛应用于 web 端自动化测试领域,作为一款功能强大、使用方便、轻量级的开源自动化测试工具,早已被很多 web 自动化测试人员所熟知。而 Web Driver 是 Selenium 在 1.0 基础上进行改进后用于 web 自动化测试的工具,相比 selenium1.0 更简单,有更丰富和利于维护的 API,可以被各种测试框架直接调用而不需要进行其他配置。Perfecto 在此基础上进行了 mobile 端的扩展,实现了主要的 Selenium 接口,整合并集成 Selenium 的概念与实践。

用户可以通过 Perfecto 提供的 Mobile Cloud For Eclipse 插件进行测试脚本的编写与执行,并通过与测试框架,如 TestNG, JUnit 等集成实现对测试的管理。

下文将阐述 Perfecto Mobile 的 Eclipse 插件如何快速建立一个自动化测试工程并开始第一个脚本的编写。

支持平台

• Windows 7

• Java: JRE 7, JRE 8

• Eclipse: Eclipse Luna, Eclipse Kepler

• Macintosh v10.9

• Java: JRE 7

• Eclipse: Eclipse Luna

安装 MobileCloud Eclipse 插件

  1. 下载安装 Eclipse Luna, 打开 Help->Install New Software

    图 8. Help->Install New Software

  2. 点击 Add

    图 9. 添加 Mobile Cloud 安装

  3. 输入以下 URL 并点击 ok:http://mobilecloud.perfectomobile.com/tools/eclipse/site

    图 10. 安装 URL

  4. 选择 Mobile Cloud 并点击下一步

    图 11. 开始安装

  5. 以下步骤全部按照默认设置,点击下一步直到完成。

  6. 安装完成后打开 Eclipse 的 Mobile Cloud 视图,在 Mobile Cloud 面板上,可以看到在 web 端已经预定的设备。测试人员可以开始在 Eclipse 端进行脚本编写。

    图 12. 安装后 dashboard

创建 MobileCloud 项目

  1. File->New->Project, 选择 MobileCloud Project.

    图 13. 新建项目

  2. 在下一步输入项目名称与路径后,输入 Mobile Cloud 注册时使用的用户名和密码登录。

    图 14. 用户登录信息

MobileCloud 项目视图

MobileCloud 项目创建完成后,将自动生成 2 个 Java 文件:MobileTest.java 和 MobileRemoteTest.java 以作为所有测试类的模板。自动化测试人员可以在该模板的基础上进行脚本编写 : 在 Main 函数写入测试步骤或调整测试类模板,再进行脚本编写。

图 15. 脚本模板

测试脚本示例

测试项目建立起来后,下面可以正式开始测试脚本编写。以浏览器打开 google 首页并搜索 perfecto 为例:

  1. 设置设备操作系统及版本,并通过 webdriver 提供的接口实例化该设备。

    图 16. 设备初始化

在输入框输入”Perfecto”并开始搜索。

打开浏览器,并输入 google 地址 :

IMobileWebDriver domDriver = device.getDOMDriver(MobileBrowserType.);
domDriver.get("http://www.google.com");

通过 API 查找输入框元素,并输入需要搜索的关键字”Perfecto”

WebElement searchElement = domDriver.findElement(By.name("searchText"));
searchElement.sendKeys("Perfecto");

点击 search 按钮

WebElement textElement = domDriver.findElement(By.linkText("Search"));
textElement.click();

验证返回结果是否正确,如果不正确则输出错误日志

 IMobileWebDriver visualDriver = device.getVisualDriver();
visualDriver.manage().timeouts().implicitlyWait(40, TimeUnit.);
try{
visualDriver.findElement(By.linkText("Perfecto"));
} catch(NoSuchElementException e) {
System..println("'Perfecto' text not found");
throwe;
}

图 17. 用例步骤

测试结束,关闭实例并退出浏览器

图 18. 用例结束

元素识别

自动化测试工具通过提供元素识别与操作实现对自动化测试的支持。Perfecto Mobile 也提供了 Object Spy 进行元素识别,点击 Open 按钮,打开 spy 工具,将工具放到相应的元素上就可以进行元素识别。

图 19. 脚本编辑工具栏

脚本录制与回放

Perfecto Mobile 对脚本的支持,除了手动编写脚本模式外,还支持直接进行脚本的录制。 点击工具栏上的录制按钮,Perfecto 开始对进行脚本录制。录制完后的脚本会生成相应的 Java 代码,用户可以根据需要进行脚本重构,增加脚本的可读性与可维护性。

图 20. 脚本录制

PerfectoMobile 相比于真机测试的优势

Perfecto Mobile 相对于真机测试拥有明显的优势。

• 它让身处世界上任何地方的开发者和测试人员只需要通过网络就能随时随地访问设备测试应用程序,而不需要购买大量设备来覆盖市场上的不同手机不同型号。

• 为自动化测试人员提供丰富的 API,极大简化了自动化人员写脚本的工作量。

• 自动化的跨平台,多语言支持。

Perfecto Mobile 结合 RQM 实现对 DevOps 的支持

自动化测试是 DevOps 持续交付实践中的一个重要部分, 本章将介绍在编写完自动化测试脚本后如何安装、管理、维护和触发这些脚本。

下图展示了 DevOps 的一个 CLM 模型,IBM RQM(Rational Quality Manager) 是一个规划测试和管理测试结果的协作式中心,自动化测试工作则主要通过与 RQM 集成来完成。每个自动化测试脚本将与 RQM 上的一个测试用例相关联,并通过 RQM 来启动整个测试集。

图 21. Perfecto DevOps

JUnit Selenium Adapter 配置

MobileCloud 可与 JUnit 进行集成,之后再通过 JunitSelenium Adapter 与 RQM 进行集成。在此之前,需要先进行 Adapter 配置,以使 RQM 能获取测试机上的脚本。

• 下载 RQMJUnitSeleniumAdapter.zip 并解压,将其中的

<...>/RQM-Extras-JUnitSeleniumAdapter/selenium.properties 文件及所有需要的 selenium jar 文件放到脚本所在机器 classpath 下。

• 打开 cmd,进入 JUnit Selenium Adapter 目录,通过 C:\start.bat -repository

https://qmserver:port/qm -user userid -password password [-adapterName adapter-name] [-projectArea project area] [-sleepTime sleep time] [-configFile configuration file] 启动 Adapter.

关联测试脚本与用例

由 Perfecto Mobile 生成的测试脚本,首先需要通过 Adapter 读取到 RQM。步骤如下,点击 RQM 的创建测试用例,选择 JUnit Selenium 类型

图 22. RQM 创建 selenium 脚本

输入正确的测试类名与路径,并点击保存。

图 23. 添加脚本路径

打开需要关联的用例,选择关联测试脚本,选择新建的测试脚本并建立关联。

图 24. 关联脚本与用例

执行测试用例并返回测试结果

依次关联所有需要关联的测试用例与脚本后,按照需求返回测试用例或测试计划页面,填写相应参数并开始执行测试用例,此时 RQM 会根据之前在测试脚本中填写的路径调用执行测试脚本并最终返回测试结果。

图 25. 执行用例

通过与 RQM 的集成,Perfecto Mobile 在测试阶段及时执行测试并返回结果,有效的实现了对 DevOps 的支持。

结束语

本文介绍了 Perfecto Mobile 通过提供远程服务方式,对移动端手动 / 自动功能测试的支持,尤其是在自动化测试方面,Perfecto Mobile 提供的测试 API 扩展自 Selenium, 测试人员无须额外的学习代价也能快速上手,简化移动端测试流程,提高测试效率。其与 RQM 通过 JUnit 的集成则能天然提供对 DevOps 支持,在移动测试领域为测试人员带来了极大的好处与受益。

Refer

https://developers.perfectomobile.com/display/PD/Release+Highlights

转自:https://www.ibm.com/developerworks/cn/mobile/mo-cn-perfecto/index.html

手机APP测试——Perfecto的更多相关文章

  1. 手机APP测试思路及测试要点

    一  手机APP测试基本思路: 测试计划--测试方案--测试用例--执行: 很多小公司都没有具体的需求,项目时间也比较紧,而且流程也不是很严谨,在这样的情况之下,作为测试的我们,该怎样去对项目进行用例 ...

  2. 手机APP测试

    注:以下内容来自网络: 一.手机APP测试类型 1.1 接口协议测试 在APP客户端开发设计时,一般服务端会提供相应的接口协议文档,接口协议文档的质量,决定了APP的开发进度.此部分的测试,应首先检测 ...

  3. 手机App测试如何获取包名的入口【两种方式】

    在进行手机APP测试的时候经常要获取包名.那么何为包名呢?简单来说其实就是手机APP的安装apk文件的名称,每个手机APP(软件)的包名都是唯一的. 那么我们怎样来获取包名以及包名的入口呢? 方法一: ...

  4. 手机APP测试技术-整体测试流程框架

    一  手机APP测试基本思路: 测试计划--测试方案--测试用例--执行: 很多小公司都没有具体的需求,项目时间也比较紧,而且流程也不是很严谨,在这样的情况之下,作为测试的我们,该怎样去对项目进行用例 ...

  5. 手机APP测试(测试点、测试流程、功能测试)

    1.功能测试 1.1 启动 APP安装完成后,是否可以正常打开,稳定运行 APP的速度是可以让人接受,切换是否流畅 网络异常时,应用是否会崩溃:在请求超时的情况下,如果程序逻辑处理的不好,就有可能发生 ...

  6. App测试如何进行?手机app测试要点

    手机APP测试,主要针对的是android和ios两大主流操作系统,主要考虑的就是功能性.兼容性.稳定性.易用性(也就是人机交互).性能. 手机APP测试前的准备: 1.使用同类型的产品,不仅仅是使用 ...

  7. 转:浅谈手机app测试注意点

    现在我们测试时,开发会先在本地机上打好测试包,自己安装,轮完一轮,开发修改好后,再打一个包.以下是功能测试时需要注意的点: 1.登录 ●登录用户名和密码错误时,界面有提示信息 ●用户主动退出登录后,下 ...

  8. Web压力测试和手机App测试

    总纲:认识测试关系和目标http://blog.csdn.net/superxgl/article/details/27189631 一.web测试和App服务端测试 软件安装 建议安装loadrun ...

  9. 手机APP测试如何进行兼容性测试?

    Android App兼容性测试是一个比较重要的App评价内容,实际上兼容性测试不仅仅和测试人员相关,在开发阶段就应当着重考虑,因为兼容性问题是除了实现App本身要求的功能后,必须要关注.而且至关重要 ...

随机推荐

  1. Django框架——基础之模型系统(ORM的介绍和字段及字段参数)

    1.ORM简介 1.1 ORM的概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM ...

  2. arcgis 地图如何转到supermap平台

    场景:客户使用arcmap配置好的地图数据,由于项目需要转换到超图平台.有如下几种思路供参考. 1. 使用arcmap生成地图缓存,supermap-iServer支持发布arcgis的地图缓存以及t ...

  3. 火焰图(Flame Graphs)的安装和基本用法

    火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析的利器,通过它可以快速定位性能瓶颈点. perf 命令(performance 的缩写)是 Linux 系统原 ...

  4. 【洛谷P1280】尼克的任务

    题目大意:一个人在时间 [1,N] 内工作,现有 M 个任务,每个任务需要在一段固定的时间区间内完成,任务之间的时间可能有重叠.若当前时间有任务要开始,且人处于空闲状态,则一定要这个人来做,否则这个人 ...

  5. :last-child的坑-CSS3选择器

    CSS3选择器之:last-child - Eric 真实经历 最近开发项目的时候发现了一个这么多年忽略的问题,和大家分享一下.项目使用的是Antd组件库,有一个搜索框是这样的: 为了保证下拉框的内容 ...

  6. 模态框 modal.js

    模态框经过了优化,更加灵活,以弹出对话框的形式出现,具有最小和最实用的功能集. 不支持模态框重叠 千万不要在一个模态框上重叠另一个模态框.要想同时支持多个模态框,需要自己写额外的代码来实现. 模态框的 ...

  7. LINUX笔记之二常用命令(权限管理命令)

    1. +增加权限:-去掉权限:=直接赋权. r(4)w(2)x(1) 重点掌握:通过数字授权,例如rxwr-xr--是754 例题:用root用户创建目录并在此目录新建文件,之后更改新文件的权限为77 ...

  8. linux运维、架构之路-K8s滚动更新及回滚

    一.滚动更新        应用程序一次只更新一小部分副本,更新成功后,再更新更多的副本,最终完成所有副本的更新. 滚动更新的优点:零停机,整个更新过程始终有副本在运行,从而保证了业务的连续性. 1. ...

  9. QT Creator有中文出现“常量中有换行符 ”的解决办法

    QT Creator有中文出现“常量中有换行符 ”的解决办法 QT Creator在QT5.9下报错“常量中有换行符 ”,我的代码中有中文,而且在Windows 10下用微软VS编译器编译.造成这个报 ...

  10. XML的树结构与语法规则

    ㈠概念 什么是 XML? ⑴XML 指可扩展标记语言(EXtensible Markup Language) ⑵XML 是一种标记语言,很类似 HTML ⑶XML 的设计宗旨是传输数据,而非显示数据 ...