使用模拟器和实际设备进行自动化测试
移动测试的挑战
在看移动测试的自动化工具前,你需要对与移动应用程序面临的挑战稍作了解。
设备
移动应用程序应该在你要求的设备上工作。
移动应用程序必须在每个设备上都正常工作。
移动设备必须为应用程序的运行时间进行测试。
移动设备处理能力不同,内存有限,还必须考虑通信协议。
应用
新的操作系统版本和功能意味着开发人员建立了必须被测试的新的,更复杂的程序。
多个构建常常时间很短,因此脚本执行往往不能完成。
网络
多种网络类型,必须进行测试,如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对象 |
对象识别的复杂度 |
容易 |
容易 |
中等 |
中等 |
对象维护工作 |
高 |
高 |
容易 |
中等 |
跨设备支持 |
高 |
中等 |
容易 |
容易 |
执行中的识别速度 |
中等 |
中等 |
中等 |
高 |
结论
通过在移动应用程序测试中使用自动化测试,测试团队可以在保持质量和减少将产品推向市场时间的同时降低成本。
许多工具可用来支持移动设备自动化测试。选择正确的工具需要理解业务需求和移动测试独有的因素。
权衡手机模拟器和真实设备的优劣,企业的最佳移动测试解决方案往往不是只选择其中一个,而是选择结合这两者。