基于 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. js获取url(request)中的参数

    index.htm?参数1=数值1&参数2=数值2&参数3=数据3&参数4=数值4&...... 静态html文件js读取url参数,根据获取html的参数值控制htm ...

  2. IDEA修改Maven全局配置

    在使用过程中发现,IDEA每次新建一个Project ,这个maven配置都会初始化默认的. 这里需要设置下全局配置: File -> Other Settings -> Settings ...

  3. init container

    init container与应用容器在本质上是一样的, 但它们是仅运行一次就结束的任务, 并且必须在成功执行完成后, 系统才能继续执行下一个容器, 可以用在例如应用容器启动前做一些初始化工作,当in ...

  4. (转) Apache Shiro 使用手册(三)Shiro 授权

    解惑之处: 使用冒号分隔的权限表达式是org.apache.shiro.authz.permission.WildcardPermission 默认支持的实现方式. 这里分别代表了 资源类型:操作:资 ...

  5. Office365 PowerShell打开邮箱审计功能

    最近总公司要求Office365需要在所有的邮箱上面打开审计功能.这个功能没法通过图形界面操作,只能通过powershell脚本实现. 微软提供了一个官方的脚本,不过里面有个小bug https:// ...

  6. MySQL更新字段来自另一个表的count()值

    假设有文章post和评论comment两个表,文章表记录有评论的数量,但是这个值我们要一次更新. 如下,现在post表的comment_count都是0,我们的目标是:执行一个SQL语句,让其把统计c ...

  7. MHA介绍和基础、原理、架构、工具介绍

    一.MHA简介 软件简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebo ...

  8. MFC界面库BCGControlBar v30.1——Grid/Report控件

    亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v30.1正式发布!此版本包含themed find ...

  9. spring cache 几个注解解释

    转自https://www.cnblogs.com/fashflying/p/6908028.html 从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管 ...

  10. 爬虫相关基础技术铺垫---多线程Thread和队列Queue应用

    from queue import Queue from threading import Thread class mydownloader(Thread): def __init__(self,q ...