使用模拟器和实际设备进行自动化测试

 移动测试的挑战

  在看移动测试的自动化工具前,你需要对与移动应用程序面临的挑战稍作了解。

  设备

  移动应用程序应该在你要求的设备上工作。

  移动应用程序必须在每个设备上都正常工作。

  移动设备必须为应用程序的运行时间进行测试。

  移动设备处理能力不同,内存有限,还必须考虑通信协议。

  应用

  新的操作系统版本和功能意味着开发人员建立了必须被测试的新的,更复杂的程序。

  多个构建常常时间很短,因此脚本执行往往不能完成。

  网络

  多种网络类型,必须进行测试,如GSM,CDMA,GPRS和Wi-Fi。

  不同的连接速度(包括2G,3G和4G LTE)必须跨地点测试。

  世界各地有超过400多的移动网络运营商,测试必须处理各种网络。

  技术

  必须考虑大量的测试用例。

  必须处理手机特有的功能,包括触屏约定。

  必须执行API级别的测试。

  移动应用程序类型

  当制定移动测试策略时,你必须清楚了解可能需要测试的应用程序。移动应用程序可分为本地应用程序(Native App), 网络应用程序(WebApp)和混合应用程序(Hybrid App)。

  Native应用程序

  Native App是专为移动操作系统所建,并直接安装到该设备上。

  用户通常通过网上商店或市场(如App Store)获取这些应用程序。

  Native App是用本地编程语言构建的。例如:iPhone或iPad apps是用ObjectiveC构建的,Android apps是用Java构建的。Native App速度快,提供更好的用户体验和界面,并且通常可以获取目标设备的所有功能。

  Native Apps的功能包括:

  存储。二进制“可执行映像”,被明确下载并存储到移动设备的文件系统中。安装过程可以由用户,或者在某些情况下,由企业的IT部门开启。

  分布。获得Native Apps最常见的方法是去有相关特定设备的应用程序商店或市场(iTunes有iPhone或iPad的apps,安卓市场有Android Apps),或者通过企业分配机制获取。

操作。程序直接在操作系统中运行:

  由主屏幕开启。

  不需要另一个存储器应用程序来运行它。

  明确利用操作系统APIs。

  移动Web应用程序

  移动Web应用程序是专门针对移动设备的网络驱动应用程序。

  这些应用程序是通过移动设备的网页浏览器获取的(例如:iPhone上的Safari)。用户不需要在设备上直接下载和安装该应用程序。

手机模拟器 费用: 手机模拟器是作为每个新的操作系统发布的软件开发工具包的一部分来免费提供的。

简单: 模拟器下载和安装简单,即刻使用。许多模拟器能够以简单和直接的方式来运行。

快速: 比起要连接到本地网络或云的真实设备,模拟器的等待时间更短。

硬件支持: 仿真模拟里,完全的硬件支持是无法测试的。

计算资源: 根据PC运行模拟器的处理能力和被用来测试的手机和智能机的类型,模拟器上的表现比起真实设备,可能是不切实际的好或坏。
网络互用性:使用模拟器不可能测试网络相关事件的影响 (如:来电,短信),不同的关于移动应用程序行为的网络技术(如: HSPDA, WCDMA, UMTS和LTE). 由于模拟器并没有连接到移动网络,它们不支持互操作性测试。

真实设备 可信赖的: 在真实设备上进行的测试给出的是最精确的结果。
网络的互操作性:真实设备测试是在真实的网络中进行的。用户体验:通过使用真实设备, 可以把特定设备的CPU,内存或屏幕大小等元素考虑在内,准确地看到用户体验。
物流和成本: 购买不同版本操作系统的不同设备是相当昂贵的,还要浪费不少精力来购买和管理这些设备。

  表1:使用模拟器和真实设备的利弊

  移动Web应用程序功能:

  完全使用Web技术,如HTML(尤其是HTML5),CSS,Javascript代码写的。

  该代码是由浏览器执行,而不是由操作系统。

  用户可以通过多种方式启动应用程序:输入网址,单击超链接,扫描QR码,或者单击主屏幕上的快捷方式。

  安装是非强制性的。

  支持多种操作系统。

  混合应用程序

  类似本地应用,混合应用程序是使用传统的Web技术开发的。

  Hybrid applications是在每台设备上的本地应用程序存储器中运行的,但却是集中部署和维护,是跨平台的性质的。通常情况下,他们是由云服务,所以地球上任何地方的终端用户体验是一致的,跨设备的。

    使用模拟器和实际设备进行自动化测试

  模拟器是用来复制一个移动设备的内部工作的。它是用于开发和测试移动应用程序的强大工具,被用于手动和自动化测试中。

  当然,移动APP是用在真实设备,而不是模拟器上的,所以测试必须在实际设备上进行,以确保应用质量的最高水平。

  然而,让你们组织里每个移动测试团队都拥有一个实际设备是很烧钱的,所以使用模拟器是一个可以控制成本的有效方法。

  在制定移动测试策略时,你们组织应该谨慎拳皇使用模拟器或实际设备的利弊。

  移动设备自动化测试工具分类

  有三种类型的工具可以支持移动设备的自动化测试。

  本地平台工具

  本地平台工具通常是由移动平台供应商提供的软件开发工具包的一部分。这些框架通常与用户界面对象级别的应用程序进行交互。

  这些工具允许更复杂的基于对象的交互,十分成熟,还支持本地UI对象,因为它们是平台供应商支持的。

  因为这些是操作系统级别的应用程序对象,你可以通过用测试中的应用程序编译的小数据库(也被称为 “instrumentation”)洞察他们。

  基于视觉的多平台工具

  基于视觉的多平台工具最常用在移动设备自动化测试里。

  这些工具通过可视化手段与设备交互,并可以识别文本或图像,使测试人员构建基于这些认识和内置的手势的自动脚本。

  基于视觉的多平台工具的优点是它们支持多个平台,并且可跨多个设备执行测试。

  视觉对象由OCR引擎(基本上都是将扫描的手写、机打图像,或印刷文本转换成机器编码的文本智能软件引擎)识别。

  基于对象的多平台工具

  基于对象的多平台工具可以在应用程序内通过识别,拦截,并发送信息到对象,直接用和传统的测试工具一样的方式来与应用程序UI对象进行交互。

  这些工具的优势是,他们支持多种平台,并且可以跨平台上执行测试。

  对象级整合也对应用程序变化更加宽容,从而降低与自动化测试相关的整体维护成本。

  移动自动化测试的方法

  在规划您的移动自动化工作时,别忘了以下的工具评估和选择,对象技术的方法:

  工具评估和选择

  执行工具的可行性,以检查是否该工具可以在各种移动技术和平台使用。

  选择一个同时支持真机和模拟器或仿真器的工具。

  识别多种设备和版本支持。

  用实用性和可重复使用功能增加自动化测试工作的价值。

  了解如果选择的工具需要你破解或获取设备的根。

  确保该工具支持操作系统的新版本。

  对象识别

  基于图像的对象识别:把每个测试对象记录为图像,在GUI中匹配对象和可用运行时间图像。

  光学字符识别对象的对象识别:使用光学字符识别(OCR)功能获取屏幕上的控件的文本。该功能使用了通过字符读取字符文本的专门算法。

  真实对象或本地的对象标识:标识唯一对象的属性,如“ ID”,“名称”和“类” 。

  基于DOM的识别:利用DOM属性来识别web应用程序对象。

特点

图像识别

OCR对象

本地对象

DOM对象

对象识别的复杂度

容易

容易

中等

中等

对象维护工作

容易

中等

跨设备支持

中等

容易

容易

执行中的识别速度

中等

中等

中等

  结论
通过在移动应用程序测试中使用自动化测试,测试团队可以在保持质量和减少将产品推向市场时间的同时降低成本。
许多工具可用来支持移动设备自动化测试。选择正确的工具需要理解业务需求和移动测试独有的因素。
权衡手机模拟器和真实设备的优劣,企业的最佳移动测试解决方案往往不是只选择其中一个,而是选择结合这两者。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-22 18:46:48

使用模拟器和实际设备进行自动化测试的相关文章

《Android游戏编程入门经典》——4.4节对比模拟器和Android设备

4.4 对比模拟器和Android设备 Android游戏编程入门经典 模拟器允许您在不同的Android操作系统上并以不同的屏幕分辨率测试程序,但是模拟器(之前称为Android虚拟设备或AVD)存在限制.即使在高端开发PC上,模拟器也很缓慢.现在,高端机器将拥有类似6核处理器(或者是服务器主板上有两个这样的处理器)和8GB或更多RAM的配置.AVD通常配有512MB或1GB的RAM.图4.19显示了AVD配置对话框,注意Hardware(硬件)列表底部的Device RAM Size(设备R

Android自动化测试解决方案

现在,已经有大量的Android自动化测试架构或工具可供我们使用,其中包括:Activity Instrumentation,MonkeyRunner,Robotium,以及Robolectric.另外LessPainful也提供服务来进行真实设备上的自动化测试. Android自身提供了对instrumentation测试的基本支持,其中之一就是位于android.test包内的ActivityInstrumentationTestCase2类,它扩展了JUnit的TestCase类来提供An

Appium自动化测试框架构建

Appium简介 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及FirefoxOS平台测试.Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库.Android系统的UIAutomator框架. 相比其他的移动自动化测试工具,Appium测试由于调用了Selenium的client库使其可以使用任意的语言,包括Python.Ruby.Node.js.Objective-

超好用!5款开源的移动自动化测试工具

如今,移动应用在企业的地位越来越重要,消费者对移动设备的要求也越来越高.为适应这一需求,测试团队必须在移动设备推出市场之前,对其性能进行一系列的评估和测试.然而,这是一个既耗时又耗资源的工作,尤其移动设备的自动化测试还非常复杂. 在现已出现的开源移动自动化测试工具中,我总结出5款最实用的,希望它们对你有帮助(部分可同时在iOS和Android设备上使用): 1.Appium Appium是一款用于自动化本机.移动Web和混合应用程序的开源工具.可在iOS和Android上使用. 2.Calaba

Android恶意软件模拟器检测技术

前言 下面的报告来自SophosLabs实验室的Android安全专家陈宇,还有来自Android组的成员William Lee, Jagadeesh Chandraiah and Ferenc László Nagy的帮助. 随着Android恶意软件的数量的持续增长,它紧随Windows下的应用采用的用于逃脱模拟器的技术,用来防止被动态分析.在这篇文章中,我们将展示一些用于模拟器检测的技术. 模拟器是一种可以允许一台电脑(主机)模拟另外一台电脑(客户机)的硬件或软件.通常,它允许主机系统运行

无需越狱 GBA4iOS模拟器登录iOS7系统

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;       长久以来, 模拟器似乎都是要与越狱(Jailbreak)画上等号的, 但是GBA4iOS的幕后团队,已经开发出了可在iOS7及更高系统版本上运行的GameBoy Advanced模拟器--支持的设备包括i Phones. iPod Touch.以及iPad mini等.重新发布的这个版本,带来了全新且易用的友好界面,并且是可以免费下载的. 通过GBA4i

如何获得Android设备名称(ADB命令详细介绍)

豌豆荚.360手机管家等软件可以获取android设备名称,显示在界面上,如下图: 我们自己如何来获取设备名称 呢?答案如下: 在命令行中输入"adb shell"进入shell之后,再输入"cat /system/build.prop"其实,设备信息,主要是存放在"/system/build.prop"文件,通过"cat"命令就可以查看了. 下面附上ADB命令的详细介绍 adb 介绍 adb的全称为Android Debug

在树莓派上安装游戏模拟器

桌面电脑,媒体中心,计算太空计划预算--还有什么是树莓派不能干的呢? 看起来没有--因为,它开始进军游戏业了. 当然了,树莓派肯定不能支持最新的具有惊艳图形效果的高清游戏.不过,树莓派可以变成一个复古游戏中心--通过模拟器的支持,可以运行从苹果II到PS I的各种游戏. 有一个软件可以安装所有的模拟器.使用EmulationStation,你可以把你的树莓派变成"复古派",一个可以玩所有你能找到的模拟器游戏的设备.   准备工作 要建立一个"复古派",你需要有常用的

8 个最优秀的 Android Studio 插件

Android Studio是目前Google官方设计的用于原生Android应用程序开发的IDE.基于JetBrains的IntelliJ IDEA,这是Google I/O 2013第一个宣布的作为Eclipse的继承者,深受广大Android社区的欢迎.在经过漫长的测试阶段后,最终版本于去年12月发布. Android Studio是一个功能全面的开发环境,装备了为各种设备--从智能手表到汽车--开发Android应用程序所需要的所有功能.不但总是有改进的余地,Android Studio