- 移动测试教程
- 移动测试 - 首页
- 移动测试 - 概述
- 移动测试 - 平台
- 移动测试 - 设备类型
- 原生应用 vs 混合应用 vs 移动网页
- 移动测试 - 设备 vs 应用
- 模拟器 vs 模拟环境
- 移动测试 - 应用
- 移动测试 - UI
- 移动测试 - 计划与工具
- 硬件视角
- 移动设备测试 - 类型
- 移动测试 - 框架概述
- 移动测试 - Android 框架
- 移动测试 - IOS 框架
- Robotium 框架
- Selendroid 框架
- 移动测试 - Appium 框架
- 移动测试 - Zucchini 框架
- 移动测试有用资源
- 移动测试 - 快速指南
- 移动测试 - 有用资源
- 移动测试 - 讨论
移动测试 - 快速指南
移动测试 - 概述
在我们开始实际教程之前,让我们先来点乐趣。看看下面的列表。您可以轻松地将这些日常必须面对的重要事务与当今忙碌而紧张的生活方式联系起来:
我想支付我的电费账单。
我需要紧急与我的经理沟通并提交我的报告。
我想为我的孩子买新衣服,但我没有时间去商店。
哦……现在是晚上 10 点;我的航班要迟到了。我的出租车在哪里?
我第一次来到这座城市;我应该预订哪家酒店?
现在回答你自己。在几秒钟内执行这些活动需要什么?答案是:
- 智能手机,
- 互联网连接,以及
- 一个可以完成工作的移动应用程序。
这让我们认识到移动应用程序在当今时代的意义。一切都通过你的智能手机以一种智能的方式完成。每天,我们都会了解到有新的应用程序或工具推出,以使我们的生活更轻松。
有一个关于Gowalla的著名案例。数百万人享受了这个基于位置的社交网络,该网络于 2007 年启动,五年后关闭。多个问题阻碍了 Gowalla 达到大众吸引力。其中一个主要原因是“签到并不那么用户友好”。
要拥有一个成功的移动应用程序,我们需要了解开发一个漂亮的移动应用程序并不是唯一的需求。为了获得用户的喜爱,需要对移动应用程序进行彻底的测试。毕竟,是用户体验使任何软件都取得成功。
移动测试 - 平台
在开始进行移动测试之前,建议先了解移动平台的基础知识。它主要包括移动的操作系统、设备类型和移动应用程序类型。充分了解这些方面将有助于我们在长远规划中进行稳健的测试计划。
移动操作系统
下表概述了市场上一些流行的移动操作系统:
| 操作系统 | 开发商 | 流行度(低、中、高) | 最新可用版本 |
|---|---|---|---|
| Android | Google Inc | 高 | Lollipop,Android 5.0-5.1 |
| iOS | Apple Inc | 高 | iOS 8.X |
| Blackberry | Blackberry Ltd | 低 | Blackberry 10.2.1 |
| Windows | Microsoft Inc | 中 | Windows 10 Mobile |
| Symbian | Symbian Foundation | 低 | 已停产 |
根据一些通用调查,市场上不同操作系统的使用情况如下图所示。
移动测试 - 设备类型
移动设备通常是手持式电脑。根据其特性,如物理尺寸、硬件和软件功能、用途等,它们有许多变体。
请查看下表。它根据平板电脑、电子书阅读器和智能手机的特性对它们进行了区分。
| 设备 | 平板电脑 | 电子书阅读器 | 智能手机 |
|---|---|---|---|
| 是什么 | 平板电脑是便携式电脑设备。与传统电脑不同,它们没有键盘或鼠标,但整个屏幕都是触摸敏感的。 | 电子书阅读器(也称为电子阅读器)类似于平板电脑,但它们主要用于阅读电子书(数字、可下载的书籍)。 | 智能手机是一款功能强大的手机,除了提供电话服务外,还旨在运行各种应用程序。 |
| 用途 | 几乎所有我们可以用传统电脑或台式电脑完成的工作。 | 阅读电子书 | 网页浏览、观看视频、阅读电子书和玩游戏 |
| 示例 | 三星平板电脑 | 亚马逊 Kindle、Barnes & Noble Nook。 | 索尼智能手机、三星智能手机、苹果 iPhone。 |
原生应用 vs 混合应用 vs 移动网页
在进行测试计划时,您必须考虑的一个关键因素是检查移动应用程序类型。您主要会遇到三种类型的移动应用程序:移动网页、原生应用程序和混合应用程序。分类是基于开发工作和应用程序再分发策略。让我们详细了解一下每一种。
移动网页
网页应用程序不是真正的应用程序;它们实际上是在您的智能手机上借助网页浏览器打开的网站。在所有主要类型的应用程序中,移动网站的用户范围最广。
示例 - 教程点
优势 -
易于访问。
易于开发 - 开发响应式设计并重组内容以便在较小的屏幕/硬件上正确显示,将使任何桌面网站都对移动设备友好。
易于更新 - 只需在一个位置更新,所有用户都可以自动访问网站的最新版本。
与原生应用程序或混合应用程序相比,无需安装。
缺点 -
移动网站无法使用某些功能。例如,网站无法访问文件系统和本地资源。
许多现有的网站不支持离线功能。
用户不会在其主屏幕上将应用程序图标作为持续提醒。网站只能在网页浏览器中打开。
虽然原生应用程序和混合应用程序会出现在 App Store 和 Google Play 上,但网页应用程序不会。因此,再分发并不那么明智。
原生应用
原生应用程序是专门为一个平台开发的。它可以通过应用程序商店(例如 Google Play 商店或 Apple 的 App Store)安装。
示例 - Whatsapp、Facebook。
优势 -
原生应用程序驻留在设备上,并通过设备主屏幕上的图标访问。
它们可以充分利用所有设备功能 - 它们可以使用摄像头、GPS、加速计、指南针、联系人列表等。它们还可以整合手势(标准操作系统手势或新的应用程序定义的手势)。
原生应用程序可以使用设备的通知系统,并且可以在离线状态下工作。
发布者可以使用推送通知,在发布新内容或需要用户注意时提醒用户。
原生应用程序维护每个操作系统的 UI 设计,因此它们提供最佳的用户体验。例如,原生应用程序可以在 Android 中具有左对齐的标题,在 iOS 中具有居中对齐的标题。
易于再分发,因为它存在于应用商店中。
缺点 -
构建应用程序的成本较高:为一个平台开发的原生应用程序不会在另一个平台上运行。为 Android 构建的应用程序不会在 iOS 上运行。我们需要为 iOS 构建一个完全不同的应用程序。由于这个原因,我们需要维护应用程序的多个版本。
即使您可能发布了原生应用程序,您也希望保持移动网站的良好维护,因为移动设备带来了更多流量。因此维护成本更高。
混合应用
混合应用程序是将现有网站内容以应用程序格式呈现的一种方式。它们可以很好地描述为网页应用程序和原生应用程序的混合体。
示例 - Instagram、维基百科。
优势 -
开发混合应用程序比开发原生应用程序更便宜。它可以跨平台构建,即降低应用程序开发成本。
维护简单,因为没有太多版本需要维护。
它可以利用设备中的一些可用功能。
它可以在 App Store 中找到,这使得分发变得容易。
它仅在应用程序内嵌入了浏览器。
缺点 -
与原生应用程序相比,图形不太适应操作系统。
混合应用程序比原生应用程序慢。
移动测试 - 设备 vs 应用
设备测试
这种类型的测试通常是为了确保移动设备的质量。测试包括移动设备的硬件和软件测试。这里我们将讨论通常在移动设备上执行的不同类型的测试。
单元测试
单元测试是一个测试阶段,在此阶段测试移动设备开发的部分内容,通常由开发人员进行。它可能包含硬件测试、软件测试和机械测试。
工厂测试
工厂测试是对移动设备进行的一种健全性检查。它是自动执行的,以验证制造或组装过程中是否存在缺陷。它主要包括以下测试:
- 移动应用程序测试
- 硬件测试
- 电池(充电)测试
- 信号接收
- 网络测试
- 协议测试
- 手机游戏测试
- 移动软件兼容性测试
认证测试
认证测试是在移动设备上市前的检查。
应用测试
移动应用程序测试是一个过程,通过该过程,为手持式移动设备开发的应用程序软件对其功能、可用性和一致性进行测试。可以在移动设备上执行不同类型的测试。例如,
- 功能测试
- 实验室测试
- 性能测试
- 内存泄漏测试
- 中断测试
- 可用性测试
- 安装测试
- 认证测试
- 安全测试
要点
设备测试通常是为了检查移动设备本身,而移动应用程序测试则涉及对将在所选设备上运行的应用程序进行测试。
当我们称之为设备测试时,硬件测试就成为其中的一部分。在移动应用程序测试的情况下,这取决于具体情况,即如果被测应用程序需要硬件集成,则将涉及硬件测试。
移动设备测试和移动应用程序测试都可以实现自动化。
移动测试 - 模拟器 vs 模拟环境
在移动测试的情况下,有一件事是不言而喻的。要执行移动测试,您需要一个移动设备。这是为了了解我们的产品在给定的手机上将如何工作和显示。
假设我们正在开发一个机票预订系统的应用程序。产品完全开发完成后,作为移动测试的一部分,我们需要检查该应用程序是否按预期在所有主要使用的设备上工作,例如 Android 手机、iOS、Blackberry 手机以及其他不同类型的平板电脑和 iPad。
为了进行这种检查,我们需要获取每个此类设备,然后才能检查应用程序是否按预期运行。没错,作为产品负责人,你会发现采购如此大量的移动设备并进行测试非常昂贵。那么是否有任何更智能的替代方案呢?
解决这个问题的方法是使用移动模拟器和移动仿真器。这些主要是旨在为智能手机的重要功能提供模拟的软件程序。它们本质上非常相似,因此有时它们可以互换使用。
让我们比较一下在仿真器/模拟器上进行测试与在真实设备上进行测试的不同之处:
| 真实设备 | 仿真器/模拟器 | |
|---|---|---|
| 价格 | 获取真实设备的成本很高。 | 几乎免费,我们只需要下载并安装它们即可。 |
| 处理速度 | 它具有更快的处理速度;但是网络延迟可能是正常的。 | 与实际设备相比,它速度较慢。观察到它比连接到本地网络或云中的真实设备的延迟更低。 |
| 调试 | 调试并不容易。 | 它提供了应用程序的逐步调试。此外,它还提供了一种高效的捕获屏幕截图的方法。 |
| Web 应用测试 | Web 应用程序可以以常规方式进行测试。 | 测试 Web 应用程序要容易得多。 |
| 可靠性 | 在真实设备上进行测试的主要优势在于它始终提供准确的结果。 | 它无法模拟所有类型的用户交互;因此有时可能导致错误的结果。因此,在可靠性方面得分较低。 |
模拟器/仿真器无法模拟以下功能:
- 移动设备电池
- 移动设备的摄像头
- 难以模拟来电和短信等中断。
- 移动设备内存使用情况的模拟不太真实。
现在让我们更深入地了解移动模拟器和移动仿真器。两者之间存在一些特定的差异。下表列出了模拟器和仿真器之间的主要区别。
| 仿真器 | 模拟器 | |
|---|---|---|
| 模拟对象 |
移动设备软件 移动设备硬件 移动操作系统 |
设备的内部行为。 它不模拟硬件。 |
| 获取方式 | 通常由设备制造商提供。 | 通常由设备制造商或其他公司提供。 |
| 内部结构 | 它是用机器级汇编语言编写的。 | 它是用高级语言编写的。 |
| 调试 | 更适合于调试。 | 不适合调试目的。 |
| 性能 | 仿真器速度非常慢。模拟实际硬件通常会导致软件运行速度比原生运行慢。 | 比仿真器快。 |
| 示例 | Google 的 Android SDK | Apple 的 iOS 模拟器 |
那么,哪种选择最适合移动测试?最佳实践表明,在实际开发过程中,我们应该使用仿真器或模拟器。在最终确定产品之前,应该使用选定的真实设备进行健全性检查。例如,Android 智能手机用户数量众多,因此明智的选择是对最新的 Android 设备进行健全性检查,并在模拟器上进行回归测试。
移动测试 - 应用
移动应用程序测试的简单定义如下:“**移动应用程序测试**是一个过程,通过该过程,为手持移动设备开发的**应用程序软件**将对其功能、可用性和一致性进行测试。移动应用程序测试可以是自动化或手动类型的测试。”
**注意** - 为了更好地理解,我们将假设我们正在测试一个用于在线机票预订系统的移动应用程序。
功能测试
功能测试是任何应用程序最基本的测试,以确保它按定义的要求工作。与其他基于用户界面的应用程序类似,移动应用程序在用户场景中需要大量的用户交互。
示例测试场景:
验证仅在选定的日期显示所选出发地目的地的航班可用性。
验证搜索结果中不包含过去的日期。
兼容性测试
在移动应用程序测试中,兼容性测试占据了最高的位置。一般来说,移动应用程序兼容性测试的目的是确保应用程序的关键功能在特定设备上按预期运行。兼容性测试本身只需要几分钟,并且可以提前做好计划。
决定在哪些移动设备上执行兼容性测试并非易事(因为使用所有可用设备进行测试几乎是不可能的)。因此,请准备一个包含所有可能组合的测试矩阵,并由客户对其进行优先级排序。
示例测试场景:
- 验证使用 Android 设备是否可以成功执行航班搜索。
- 验证使用 Apple iPad 是否可以成功执行航班搜索。
本地化测试
如今,大多数应用程序都设计用于全球使用,因此关注区域差异(如语言、时区等)非常重要。当有人更改时区时,验证应用程序的功能非常重要。必须考虑到,有时西方设计可能不适合东方国家的受众,反之亦然。
示例测试场景:
验证当我们使用不同语言(或非英语语言)的移动应用程序时,是否存在 UI 或数据截断问题。
验证您的移动应用程序是否能够优雅地处理时区更改。
实验室测试
实验室测试通常由网络运营商执行,方法是模拟整个无线网络。执行此测试是为了找出移动应用程序在使用语音和/或数据连接执行某些功能时是否存在任何故障。
示例测试场景:
验证客户与支持人员进行语音聊天时是否存在任何故障。
性能测试
移动性能测试涵盖客户端应用程序性能、服务器性能和网络性能。确保性能测试场景涵盖所有这些领域非常重要。借助性能测试工具,在给定的预定义负载和事务组合下,识别现有网络、服务器和服务器端应用程序瓶颈并不困难。
示例测试场景:
验证航班可用性检查是否仅花费合理的时间。
验证在检查航班可用性期间,手机是否正常运行且不会挂起。
压力测试
压力测试是必不可少的,它可以发现功能和用户界面测试期间可能未被发现的异常、挂起和死锁。以下是压力测试的一些标准:
尽可能多地加载应用程序数据,以尝试达到其断点。
重复执行相同的操作。
以不同的速度重复执行操作 - 非常快或非常慢。
让应用程序运行很长时间,既与设备交互,又让它保持空闲状态,或者执行一些需要很长时间的自动任务,例如幻灯片。
随机向应用程序发送屏幕点击和按键。
在设备上运行多个应用程序,以便您可以经常在应用程序和其他设备应用程序之间切换。
示例测试场景:
- 检查 1000 名用户是否正在访问移动应用程序以搜索国内航班。
- 检查 1000 名用户是否正在访问移动应用程序以搜索国内航班。
安全测试
黑客攻击漏洞、身份验证和授权策略、数据安全、会话管理和其他安全标准应作为移动应用程序安全测试的一部分进行验证。应用程序在通过网络对用户进行身份验证时应加密用户名和密码。
测试与安全相关的场景的一种方法是将移动设备的数据通过像 OWASP Zed Attack Proxy 这样的代理服务器路由,并查找漏洞。
示例测试场景:
验证应用程序是否无法在两个不同的移动设备上使用相同的用户凭据进行操作。
验证如果会话在 15 分钟内保持不活动状态,是否会自动过期。
内存泄漏测试
与其他计算机相比,移动设备的内存非常有限,并且移动操作系统具有默认行为,即终止使用过量内存并导致用户体验不佳的应用程序。
内存测试对于移动应用程序来说非常重要,以确保每个应用程序在整个用户旅程中都能保持优化的内存使用情况。建议我们在实际目标设备上进行内存测试,因为系统架构从仿真器到实际设备是不同的。
示例测试场景:
执行十次航班可用性检查,并记录每次检查的内存使用情况的增加。
使应用程序运行十分钟,并观察内存使用情况是否保持稳定。
功耗测试
不同移动设备使用多种类型的电池(即镍镉/锂离子/镍金属混合动力)。当我们专注于功耗测试时,需要在每个活动级别测量电池的状态。这将使我们更好地了解单个应用程序的功耗。
功耗测试可以手动完成;市场上也有一些免费工具可用,例如 Trepn Profiler、Power Tutor 和 Nokia Energy Profiler。这些应用程序可以在智能手机或平板电脑上显示实时功耗。
示例测试场景:
使用移动应用程序搜索航班可用性,并检查功耗是否保持在最低水平。
使移动应用程序处于理想状态;验证在应用程序没有活动发生时是否存在功耗。
中断测试
应用程序在运行过程中可能会遇到一些中断,例如来电或网络覆盖中断和恢复。这可以再次区分以下情况:
- 传入和传出短信和彩信
- 传入和传出电话
- 传入通知
- 电池取出
- 数据传输的电缆插入和拔出
示例测试场景:
验证接收来电后航班可用性检查是否会暂停并恢复。
验证用户是否可以在使用应用程序时拒绝电话,并在之后恢复使用同一应用程序。
可用性测试
可用性测试根据以下三个标准评估目标受众的应用程序:
**效率** - 指定用户在特定环境中实现指定目标的准确性和完整性。
**有效性** - 与实现目标的准确性和完整性相关的资源支出。
**满意度** - 工作系统对其用户和其他受其使用影响的人员的舒适度和可接受性。
在应用程序设计的早期阶段就建立可用性测试非常重要,并且不应仅在应用程序完成后才进行。可用性测试需要大量用户的参与,其结果可能会影响应用程序的设计,而这在项目的后期阶段很难更改。
示例测试场景:
- 航班可用性检查应在主页上。
- 赞助广告不应显示在内容中间。
安装测试
安装测试验证安装过程是否顺利进行,而无需用户遇到任何困难。
示例测试场景:
- 验证安装过程是否流畅且耗时不长。
- 验证通过企业应用商店安装是否成功。
卸载测试
卸载测试的基本原理可以用一句话概括为“卸载应立即清除与应用相关的所有数据”。
示例测试场景:
验证卸载后所有与应用程序相关的文件是否已成功删除。
如果应用程序存储媒体文件(如 WhatsApp 或 Facebook),则即使在卸载应用程序后也要保留这些文件。
更新测试
我们需要注意移动应用程序更新。人们经常抱怨应用程序在更新后无法令人满意地工作。因此,在更新测试中,我们必须确保应用程序能够像以前一样工作非常重要。简而言之,它不应该破坏任何东西。移动应用程序更新可以通过两种方式进行:**自动更新**和**手动更新**。
示例测试场景:
- 验证自动更新后应用程序是否成功运行。
- 验证更新进度是否正确显示。
认证测试
要获得合规性证书,每个移动设备都需要根据不同移动平台设定的指南进行测试。
示例测试场景:
验证应用程序安装在 iPhone 上时是否符合 iOS 手机的策略。
验证应用程序安装在 Android 上时是否符合 Android 手机的策略。
移动测试 - UI
假设我们正在使用一个移动应用程序,有趣的是,您遇到了以下情况:
- 按钮对齐丢失。
- 文本被截断。
- 日历控件被裁剪。
这确实是任何用户都不愉快的体验。为了确保我们为用户提供卓越的体验,强烈建议进行移动 UI 测试。
测试计划中首先要探索的领域是用户界面。作为测试人员,您的工作是确认您的应用程序是否满足某些期望,例如:
- 设备的整体配色方案/主题
- 图标的样式和颜色
- 页面加载时的进度指示器
- 菜单及其调用方式以及它们通常包含的项目
- 此设备上应用程序的整体响应能力
让我们更深入地讨论移动 UI 测试的基础知识。
屏幕方向/分辨率
Web 内容需要在各种设备和网络条件下都能提供良好的外观和感受。通常,最好在常用屏幕分辨率下测试您的网页,以确保您的页面可用。
如果您使用多列布局,您可能还需要检查列是否正确对齐,并且在访问者分辨率较低时仍然可见。了解标准屏幕分辨率也很重要:
- 640 × 480
- 800 × 600
- 1024 × 768
- 1280 × 800
- 1366 × 768
- 1400 × 900
- 1680 × 1050
可用工具
市场上有很多工具可以使移动 UI 测试更流畅、更简单。例如:
- Google Chrome 扩展程序
- Screenfly
- BrowserStack
让我们进一步了解这些工具及其用途。
Google Chrome 扩展程序
这是 Google Chrome 网络浏览器提供的一项免费功能。我们在此提供了使用 Google Chrome 扩展程序测试移动 Web 的分步说明:
**步骤 1** - 在“Google Chrome 网络浏览器”中打开要测试的网站。
**步骤 2** - 按 F12。它将打开开发者工具窗口,如下面的屏幕截图所示。
**步骤 3** - 点击类似移动设备的图标。请参考下面的屏幕截图。
**步骤 4** - 选择要测试网站的移动设备。您可以选择不同的可用设备来进行 UI 验证。
Screenfly
Screenfly 是一款免费且易于使用的工具。要使用它,您只需在网络浏览器中输入Quirktools。您将看到以下屏幕。
输入要测试的网站并点击**Go**。选择您想查看网站的移动设备。
BrowserStack
这是另一个用于执行移动 UI 测试的强大工具。它提供极佳的结果。虽然它是一个付费工具,但您可以通过使用有效的电子邮件地址在BrowserStack上注册来获得免费试用。
触摸屏
多点触控与单点触控屏幕
如果您的设备和应用程序支持多点触控功能(例如 iPhone 上的捏合缩放效果),请确保包含大量涉及同时触摸屏幕多个位置的测试用例,尤其是在使用软键盘输入时。
长触控与短触控
虽然触摸屏设备上没有双击的概念(尽管可以实现,如果在您的应用程序中专门实现),但某些设备(如 Android 智能手机)区分长触控和短触控。按住某个项目会使其在屏幕中间显示上下文菜单,而短按同一项目将自动执行该上下文菜单中的第一个操作。
按钮大小和位置
确保按钮和图标足够大,并且离屏幕边缘足够远,以便大拇指可以轻松点击。
软键和硬键
软键盘
通常,一些特殊情况和极端情况对最终用户很重要。
如果用户的主要操作是输入一些文本,软键盘是否会自动出现?
如果突出显示的字段用于输入电子邮件地址,软键盘的第一层是否包含快捷键“@”和“.com”键?
是否可以轻松地隐藏和重新显示软键盘?
软键盘和硬键盘是否可以互换使用(如果设备同时具有两者)?
硬键
确保在使用设备提供的硬键(如开始、主页、菜单和返回)时进行大量测试。它们都应该与您的应用程序交互,就像它们与设备的原生应用程序交互一样。
轨迹球、滚轮和触控板
如果您的设备没有触摸屏,那么验证屏幕导航对用户尽可能流畅就更加重要。在这种情况下,用户可能依靠轨迹球、滚轮或触控板在对象之间移动。
移动测试 - 计划与工具
测试手机、平板电脑和电子阅读器等移动设备需要特殊的设备和方法。由于传统的桌面屏幕截图软件无法充分捕获触摸交互,因此可用性从业人员一直使用战略性放置的摄像头来记录这些移动设备上的可用性测试交互。
准备执行移动设备测试
用于在手机、平板电脑和电子阅读器上进行可用性测试的方法和设备仍在不断发展。在计划移动设备测试时,您应牢记以下几点:
**您的时间框架和预算。** 充分了解时间框架和预算将帮助您根据您的需求确定哪些流程和设备最有效。
**空间的物理设置以及您将如何捕获测试。** 这可能从较低保真度的布置到使用专门的平台和摄像头设备,或者可能使用眼动追踪软件。
**您的目标受众和设备。** 使用网络分析来检查有多少移动用户访问网站、他们使用什么设备以及他们的操作系统。了解这些信息将帮助您知道要测试哪些设备。
测试计划后要涵盖的另一个重要方面是**测试设备管理**。在一个大型组织中,处理移动设备测试需要一种明智的方法来保护组织的机密数据。为此,您将需要安全软件。在下一节中,我们将进一步了解设备管理工具。
设备管理工具
移动设备管理 (MDM) 是一种 IT 中使用的安全软件,用于监控、管理和保护跨多个移动服务提供商和多个移动操作系统在组织中部署的员工的移动设备。
MDM 通常与其他安全服务和工具(如移动应用程序管理)结合使用,以创建完整的移动设备和安全企业移动管理解决方案。
市场上有许多工具可以完成这项工作。下表概述了一些流行的工具及其功能。
| 产品 | BlackBerry MDM | Citrix MDM | Dell MDM | IBM MDM | MobileIron MDM | SOTI MDM |
|---|---|---|---|---|---|---|
| Android | 2.3+ | 是 | 是 | 是 | 2.3 至当前 | 是 |
| iOS | 5.0+ | 是 | 是 | 是 | 4.0 至当前 | 是 |
| Windows Phone | BES10 否(BES12 适用于 WP 8+) | 是 | 是 | 是 | 7 至当前 | 是 |
| BlackBerry | 是,BBOS,BlackBerry 10 | 是 | 否 | 是 | 10(通过 ActiveSync) | 否 |
| Symbian | 否 | 是 | 否 | 是 | 否 | 否 |
| Windows OS | 否 | 是 | 是 | 是 | 8.1 RT/Pro | 否 |
| Mac OSX | 否 | 即将推出 | 是 | 是 | Lion、Mountain Lion | 是 |
| 其他 | 否 | Windows Mobile | 无 | Office 365、Gmail、Lotus | 无 | Windows Mobile、CE、嵌入式 |
| 配置/禁用 WiFi | 是 | 是 | 是 | 是 | 是 | 是 |
| 设备加密 | 是 | 是 | 是,取决于设备类型 | 是 | 是 | 是 |
| 电子邮件加密 | 是 | 是 | 是,取决于设备类型 | 是 | 是 | 是 |
| 多因素身份验证 | 是 | 是 | 否 | 是 | 是 | 是 |
| 恶意软件检测 | 否 | 否 | 否 | 是 | 与合作伙伴集成时是 | 是 |
| 防火墙 | 是 | 否 | 否 | 是 | 与合作伙伴集成时是 | 是 |
| 将用户数据与公司数据分开 | 是 | 是 | 是 | 是 | 是 | 是 |
移动测试 - 硬件视角
在我们继续进行实际的移动设备测试之前,深入了解移动设备硬件架构非常重要。这将有助于我们在实际进行移动设备/移动设备应用程序测试时更好地进行测试计划。让我们看一下移动设备硬件的不同特性。
硬件组件
如果您拿任何一部手机,它大多包含以下部件。
电路板
它可以被视为手机的大脑,控制着手机的所有活动。
触摸屏显示
触摸屏是智能手机的重要组成部分。触摸屏识别您在屏幕上放置手指或触控笔的位置,并将坐标相应地传达给手机 CPU。
触摸屏主要有两种类型:
电阻式触摸屏 − 它有两层(由一个微小的间隙隔开),形成屏幕上的覆盖层。当手指放置在屏幕上的任何一点时,这两层形成接触,并获得坐标。这种触摸屏相对便宜,因此在大多数预算手机上都能找到。缺点是需要一定的压力才能注册触摸。随着时间的推移,屏幕会发生一定程度的损坏。
电容式触摸屏 − 整个屏幕都涂有一层电容性物质,该物质存储一定量的电荷。当像手指这样的导电物体放置在屏幕上时,该点上的电容会发生变化,从而获得坐标。电容式触摸屏在寒冷的气候下反应不佳,因为人手指不会导致电容发生变化,因此在这种情况下建议使用触控笔。还有一些多点触控触摸屏,几乎可以精确地识别所有手指。这导致了可以在触摸屏上执行的手势数量增加。
存储卡
存储卡有不同的尺寸和容量。它们被广泛用作数据存储设备来存储数字信息。
SIM 卡
SIM 卡提供个人移动性,以便用户无论终端位置和使用特定终端与否,都可以访问所有已订阅的服务。您需要将 SIM 卡插入另一部 GSM 手机才能在该手机上接听电话、从该手机拨打电话或接收其他已订阅的服务。
电池
智能手机使用各种不同的电池,具体取决于手机的制造商、尺寸和功能。对于那些严重依赖智能手机的人来说,电池的续航时间越长越好。这样可以避免频繁充电,并且可以降低在最需要的时候没电的可能性。
iOS 设备 UDID
每个 iPhone 或 iPod Touch 都有一个唯一的设备标识符 (UDID),它是由 40 个字母和数字组成的序列,特定于您的设备。它就像序列号,但更难以猜测。它看起来像这样:2b6f0cc904d137be2e1730235f5664094b831186。
如何找到您的 UUID?
- 将您的 iOS 设备连接到您的电脑。
- 打开 iTunes。
- 在 iTunes 中,单击左侧栏“设备”下方的设备名称。
- 在窗口的主部分单击设备的序列号一次。
- 序列号应更改为设备的 UDID。
iOS 配置文件
配置文件是一组数字实体,它将开发人员和设备唯一地绑定到授权的 iPhone 开发团队,并允许设备用于测试。必须在您希望在其上运行应用程序代码的每个设备上安装开发配置文件。
如何为 iOS 创建配置文件?
运行 Google Chrome、Mozilla Firefox 或 Safari。
在 iOS 开发中心,点击证书、标识符和配置文件。
在 iOS 应用面板中,点击配置文件。
点击 +。
选择 iOS 应用开发,然后点击继续。
选择要与配置文件关联的 App ID,然后点击继续。
要能够跨多个应用使用一个开发配置文件,请选择一个通配符 App ID(如果可用)。
选择要包含在配置文件中的一个或多个开发证书,然后点击继续。
仅列出开发证书。
选择要包含在配置文件中的一个或多个设备,然后点击继续。
输入配置文件的名称,然后点击生成。
(可选)点击下载以下载配置文件。
如何在 AppBuilder 中添加您的配置文件?
点击齿轮图标,然后选择选项。
选择 iOS → 配置文件。
点击导入。
浏览到存储配置文件的移动配置文件所在的位置,选择它并确认导入。
设备选项和首选项
您可以为任何文本、动态搜索、图像或展示广告指定设备首选项(移动或全部)。
如果广告组同时包含移动优先广告和常规广告,则只有移动优先广告会在移动设备上投放,只有常规广告会在电脑和平板上投放。
在类型列表中,选择广告和扩展程序,然后选择要更新的广告类型。选择一个或多个广告。在编辑面板上的“设备首选项”下,选择移动或全部。
移动设备测试 - 类型
让我们详细了解一下可以在移动设备上执行的不同类型的测试。
网络连接
下表提供了可对移动设备执行的网络连接测试清单。
| 序号 | 描述 |
|---|---|
| 1 | 如果通过 Wi-Fi 连接到互联网,应用程序的行为是否符合规范? |
| 2 | 如果通过 3G 连接到互联网,应用程序的行为是否符合规范? |
| 3 | 如果通过 2G 连接到互联网,应用程序的行为是否符合规范? |
| 4 | 如果应用程序超出网络范围,应用程序的行为是否符合规范? |
| 5 | 当应用程序从网络范围外恢复到网络范围时,它是否恢复工作? |
| 6 | 重新建立连接后,更新交易是否正确处理。 |
| 7 | 当连接到其他设备(例如,通过网络共享)时,应用程序是否仍然可以正常工作? |
| 8 | 如果应用程序在网络之间切换(Wi-Fi、3G、2G),会发生什么情况? |
| 9 | 应用程序是否使用标准网络端口(邮件:25、143、465、993 或 995 HTTP:80 或 443 SFTP:22)连接到远程服务,因为某些提供商会阻止某些端口。 |
SD 卡交互
下表提供了检查 SD 卡与手机交互的主要功能的清单。
| 序号 | 描述 |
|---|---|
| 1 | 应用程序是否可以安装在设备上? |
| 2 | 如果有来电,应用程序的行为是否符合设计/预期? |
| 3 | 如果有短信,应用程序的行为是否符合设计/预期? |
| 4 | 如果连接充电器,应用程序的行为是否符合设计/预期? |
| 5 | 如果断开充电器,应用程序的行为是否符合设计/预期? |
| 6 | 如果设备进入睡眠模式,应用程序的行为是否符合设计/预期? |
| 7 | 如果设备从睡眠模式恢复,应用程序的行为是否符合设计/预期? |
| 8 | 如果设备从锁定屏幕恢复,应用程序的行为是否符合设计/预期? |
| 9 | 如果设备倾斜,应用程序的行为是否符合设计/预期? |
| 10 | 如果设备摇晃,应用程序的行为是否符合设计/预期? |
| 11 | 如果来自另一个应用程序的本地消息(例如:日历提醒、待办事项等),应用程序的行为是否符合设计/预期? |
| 12 | 如果来自另一个应用程序的推送消息(例如:推特提及、WhatsApp 消息、文字游戏邀请等),应用程序的行为是否符合设计/预期? |
| 13 | 应用程序是否正确地与 GPS 传感器交互(打开/关闭、检索 GPS 数据)? |
| 14 | 设备上为该应用程序定义的所有按钮或按键的功能是否正常? |
| 15 | 验证没有定义功能的按钮或按键在激活时对应用程序没有意外行为。 |
| 16 | 如果设备上有一个真正的“返回”按钮,则“返回”按钮是否将用户带到上一屏幕? |
| 17 | 如果设备上有一个真正的“菜单”按钮,则菜单按钮是否显示应用程序的菜单? |
| 18 | 如果设备上有一个真正的“主页”按钮,则主页按钮是否将用户带回设备的主屏幕? |
| 19 | 如果设备上有一个真正的“搜索”按钮,这是否会将用户带到应用程序中的某种搜索? |
| 20 | 如果推送“电池电量低”消息,应用程序的行为是否符合设计/预期? |
| 21 | 如果设备上的声音关闭,应用程序的行为是否符合设计/预期? |
| 22 | 如果设备处于飞行模式,应用程序的行为是否符合设计/预期? |
| 23 | 应用程序是否可以从设备中卸载? |
| 24 | 重新安装后,应用程序是否按预期工作? |
| 25 | 应用程序是否可以在应用商店中找到?(上线后检查) |
| 26 | 应用程序是否可以根据设计/预期通过多任务处理切换到设备上的其他应用程序? |
| 27 | 使用屏幕保护膜时,所有触摸屏位置(按钮)是否都正常工作。 |
蓝牙测试
蓝牙设备只能在 10 米半径内通信。此类设备可以是键盘、鼠标、无线耳机等。下表提供了可执行的蓝牙测试清单:
| 序号 | 描述 |
|---|---|
| 1 | 用户能够搜索范围内所有可用的设备。 |
| 2 | 可以通过使用短距离网络发送数据和语音传输。 |
| 3 | 可以通过使用短距离网络接收数据和语音传输。 |
| 4 | 用户可以随时断开连接。 |
| 5 | 关闭蓝牙时,询问是否断开当前连接。 |
| 6 | 蓝牙最大范围为 10 米。 |
| 7 | 通过手机,您可以发送图片、视频、交换名片,还可以将文件传输到您的电脑。 |
| 8 | (设备已配对)此消息用于确认用户已成功配对两个蓝牙设备。 |
| 9 | 不可发现模式,设备不会响应发现请求。 |
| 10 | 不可发现模式,设备不会响应发现请求。 |
| 11 | 不可配对模式,不接受配对的设备被称为处于不可配对模式。 |
| 12 | 密钥,密钥是用户定义的密码,需要从任何其他设备连接到设备。强烈建议尽可能使用密钥,以避免未经授权访问您的蓝牙设备。 |
| 13 | 身份验证 - 验证通信链路另一端身份的过程。在蓝牙技术中,这是通过基于密钥和配对的身份验证过程实现的。 |
| 14 | 未找到设备,如果搜索范围内其他设备未找到任何内容,则可能会出现此错误消息。 |
| 15 | 空闲模式,设备在没有与其他设备建立连接时处于空闲模式。在此模式下,设备可以发现其他设备。 |
| 16 | 已知设备测试,另一个设备已知的设备。这些设备过去可能已配对,或者已存储已知设备的一些信息。 |
Wi-Fi 测试
测试手机WiFi连接是确保您的互联网以服务提供商承诺的速度运行的好方法,但您不限于在台式电脑上运行这些测试。手机WiFi测试是测试WiFi信号在您家或办公室各个位置的强度的完美方法。下面是移动设备的WiFi测试清单。
| 序号 | 描述 |
|---|---|
| 1 | 如果通过 Wi-Fi 连接到互联网,应用程序的行为是否符合规范? |
| 2 | 如果应用程序超出网络范围,应用程序的行为是否符合规范? |
| 3 | 当应用程序从网络覆盖范围之外回到网络覆盖范围内时,它是否会恢复工作? |
| 4 | 如果应用程序在网络之间切换(Wi-Fi、3G、2G)会发生什么? |
| 5 | 应用程序是否使用标准网络端口(邮件:25、143、465、993 或 995 HTTP:80 或 443 SFTP:22)连接到远程服务,因为某些提供商会阻止某些端口。 |
如何在智能手机上运行手机WiFi速度测试
在智能手机上运行WiFi速度测试是一项简单的任务。最方便的是在智能手机的移动浏览器中运行的速度测试。只需按照简单的屏幕提示即可开始测试。如果在线测试未保存您的结果,请在测试完成后截屏以提供历史记录。
某些测试可以作为iOS和Android平台的应用程序使用。要使用它们,请下载您想要的应用程序。然后按照说明运行测试并保存您的结果。
执行速度测试的工具
Speed Test SpeedSmart WiFi & Mobile Network Speedtest - 它与苹果iPhone和iPad兼容。这是一个付费应用程序。SpeedSmart是用于评估所有iOS设备上的蜂窝(3G、4G和LTE)和Wi-Fi连接的终极iOS速度测试实用程序。全球服务器网络和智能速度测试方法确保结果准确。
WiFi Speed Test - 它与Android手机兼容。这是一个付费工具。使用此工具,您可以测试本地(LAN)网络的速度。可以在无线(WiFi)或有线网络上进行测试。
本地化和全球化
请参阅下面的清单,了解移动设备的本地化和全球化测试。
| 序号 | 描述 |
|---|---|
| 1 | 文本已翻译。 |
| 2 | 翻译在语法和术语准确性方面符合母语人士的标准。 |
| 3 | 对话框已正确调整大小,对话框文本根据用户界面语言的规则进行连字符处理。 |
| 4 | 翻译后的对话框、状态栏、工具栏和菜单在不同分辨率的屏幕上都能正常显示。它们不会换行,也不会被截断。 |
| 5 | 菜单和对话框加速键是唯一的。 |
| 6 | 视觉布局与原生版本的布局一致。例如,对话框元素按正确的选项卡顺序排列。 |
数据库测试
您可以通过多种方式在移动应用程序中存储数据。对于Android,您可以选择通过服务器、共享首选项或SQLite存储数据。
SQLite是一个轻量级数据库,通常用于Android和其他操作系统。为了查看SQLite中的数据,您可能需要root设备,或者可以使用模拟器进行测试。Android Play商店中有一些工具可以帮助您从该数据库中提取数据。
以下类型的测试应成为移动数据库测试的一部分 -
- 数据库验证测试。
- 数据库集成测试。
- 数据库性能测试。
- 过程和函数测试。
- 触发器测试。
- CRUD(创建/读取/更新/删除)操作测试,以确保它们将在数据库上运行。
- 测试数据库更改是否在应用程序的UI上正确显示。
- 搜索和索引功能测试。
恢复测试
恢复测试用于确保在灾难发生后可以继续操作。恢复测试不仅验证恢复过程,还验证该过程组成部分的有效性。
恢复测试是测试应用程序在崩溃、硬件故障和其他类似问题后恢复能力的活动。下面是可恢复性测试的清单。
| 序号 | 描述 |
|---|---|
| 1 | 保留了足够备份数据。 |
| 2 | 备份数据存储在安全的位置。 |
| 3 | 恢复程序已记录在案。 |
| 4 | 所有媒体文件都已从还原点恢复 |
| 5 | 所有联系人均已恢复 |
| 6 | 所有应用程序均已成功恢复 |
并发测试
我们通常借助并发测试来确保多个用户可以同时并发访问程序。在将并发测试应用于移动设备时,实际上只有一个用户。因此,它消除了对移动设备进行并发测试的需要。
可用性测试
通常,您会获得一个设备,其中可以调整手机和网络摄像头以记录可用性评估会话。
有一些工具可用,例如Applause。他们提供了一组目标调查参与者,这些参与者经过精心挑选来测试您的应用程序。Applause与其他此类服务的区别在于,您可以与Applause的专家进行咨询,然后根据咨询选择理想的参与者。
下面是GUI测试的一般清单。
| 序号 | 描述 |
|---|---|
| 1 | 应用程序是否可以安装在设备上? |
| 2 | 如果有来电,应用程序的行为是否符合设计/预期? |
| 3 | 如果有短信,应用程序的行为是否符合设计/预期? |
| 4 | 如果连接充电器,应用程序的行为是否符合设计/预期? |
| 5 | 如果断开充电器,应用程序的行为是否符合设计/预期? |
| 6 | 如果设备进入睡眠模式,应用程序是否按设计/预期运行。 |
| 7 | 如果设备从睡眠模式恢复,应用程序是否按设计/预期运行。 |
| 8 | 如果设备从锁定屏幕恢复,应用程序的行为是否符合设计/预期? |
| 9 | 如果设备倾斜,应用程序的行为是否符合设计/预期? |
| 10 | 如果设备摇晃,应用程序的行为是否符合设计/预期? |
| 11 | 如果来自其他应用程序的本地消息(例如:日历提醒、待办事项等),应用程序是否按设计/预期运行。 |
| 12 | 如果来自其他应用程序的推送消息(例如:推特提及、WhatsApp消息等),应用程序是否按设计/预期运行。 |
| 13 | 应用程序是否正确地与 GPS 传感器交互(打开/关闭、检索 GPS 数据)? |
| 14 | 设备上为该应用程序定义的所有按钮或按键的功能是否正常? |
| 15 | 验证没有定义功能的按钮或按键在激活时对应用程序没有意外行为。 |
| 16 | 如果设备上有一个真正的“返回”按钮,则“返回”按钮是否将用户带到上一屏幕? |
| 17 | 如果设备上有一个真正的“菜单”按钮,则菜单按钮是否显示应用程序的菜单? |
| 18 | 如果设备上有一个真正的“主页”按钮,则主页按钮是否将用户带回设备的主屏幕? |
| 19 | 如果设备上有一个真正的“搜索”按钮,这是否会将用户带到应用程序中的某种搜索? |
| 20 | 如果推送“电池电量低”消息,应用程序的行为是否符合设计/预期? |
| 21 | 如果设备上的声音关闭,应用程序的行为是否符合设计/预期? |
| 22 | 如果设备处于飞行模式,应用程序的行为是否符合设计/预期? |
| 23 | 应用程序是否可以从设备中卸载? |
| 24 | 重新安装后,应用程序是否按预期工作? |
| 25 | 应用程序是否可以在应用商店中找到?(上线后检查) |
| 26 | 应用程序是否可以根据设计/预期通过多任务处理切换到设备上的其他应用程序? |
| 27 | 使用屏幕保护膜时,所有触摸屏位置(按钮)是否都正常工作。 |
移动测试 - 框架概述
测试框架或更具体地说是测试自动化框架是执行自动化测试的执行环境。它是自动化测试的整体系统。它被定义为构成工作平台或自动化测试支持的一组假设、概念和实践。
测试框架负责 -
- 定义表达期望的格式
- 创建挂钩或驱动被测应用程序的机制
- 执行测试并报告结果
框架架构
测试框架的一般架构如下 -
对于移动测试自动化,我们需要一个良好的移动自动化测试框架。在此框架之上,我们可以构建我们的测试用例。移动自动化测试框架可以根据移动设备的操作系统进行区分。在接下来的章节中,我们将讨论两种类型的移动测试框架:Android测试框架和iOS测试框架。
移动测试 - Android 框架
市场上有许多Android测试框架可用。让我们来看看堆栈中的前5名。
Robotium - Robotium是一个开源测试框架,用于开发功能、系统和验收测试场景。它与Selenium非常相似。
UIAutomator - UIAutomator是Google提供的测试框架,提供原生Android应用程序和游戏的UI高级测试。它具有一个包含用于创建功能性UI测试的API的Java库,以及一个用于运行测试的执行引擎。
Appium - Appium是一个开源测试自动化框架,用于测试原生和混合应用程序以及移动Web应用程序。框架内的Appium库函数会调用后台运行的Appium服务器,该服务器操作连接的设备。
Calabash - Calabash是一个功能测试框架,可用于iOS和Android功能测试。从理论上讲,它一定是最易于使用的框架之一,即使是非开发人员也应该能够使用它创建功能测试。
Selendroid - Selendroid是该领域的新成员,可用于功能测试您的Android应用程序。显然,如果您习惯使用Selenium,则Selendroid应该是使用您的知识为Android创建功能测试的简便方法。
移动测试 - IOS 框架
与Android测试框架类似,市场上也有许多iOS测试框架可用。在这里,我们将讨论一些流行的框架。
Appium - Appium是一个开源测试自动化框架,用于测试原生和混合应用程序以及移动Web应用程序。框架内的Appium库函数会调用后台运行的Appium服务器,该服务器操作连接的设备。
Calabash - Calabash是一个功能测试框架,可用于iOS和Android功能测试。从理论上讲,它一定是最易于使用的框架之一,即使是非开发人员也应该能够使用它创建功能测试。
Zucchini - Zucchini是一个基于Apple UIAutomation的iOS应用程序的开源视觉功能测试框架。
UI Automation - 对于您更典型的功能测试(或黑盒测试),您将在其中编写代码来模拟最终用户浏览您的应用程序,可以使用UI Automation。UI Automation由Apple提供,是执行iOS功能测试的Apple认可的方式。
FRANK – BDD for iOS - 如果您想在iOS中进行端到端测试,并希望可以使用BDD和Cucumber,不用担心 - 有一个名为Frank的工具可以让您使用Cucumber创建验收测试和需求。
不同测试框架之间的比较
移动测试 - Robotium框架
Robotium是一个开源测试框架,用于为Android应用程序编写自动灰盒测试用例。在Robotium的支持下,测试用例开发人员可以编写功能、系统和验收测试场景,涵盖多个Android活动。
Robotium可用于测试有源代码的应用程序和只有APK文件的应用程序。
Robotium的优势
易于编写,代码更简洁。编写可靠的测试用例所需的时间最少。
您可以开发强大的测试用例,只需具备最少的被测应用程序知识。
该框架自动处理多个Android活动。与标准仪器测试相比,测试用例的可读性大大提高。
自动计时和延迟。
自动跟踪当前活动。
自动查找视图。
自动做出自己的决策(例如:何时滚动等)。
无需修改Android平台。
测试执行速度快。
由于与GUI组件的运行时绑定,测试用例更加健壮。
与Maven或Ant无缝集成。
Robotium的缺点
Robotium无法处理Flash或Web组件。
它一次只能处理一个应用程序。
Robotium无法模拟点击软键盘(需要使用‘enterText()’方法将文本输入到EditText字段中)。
Robotium无法与状态栏通知交互,也就是说,无法下拉通知区域并点击指定的通知。
运行速度可能有点慢,尤其是在旧设备上。
如何使用Robotium
步骤1 - 使用Robotium的先决条件是Java SDK(最低版本1.6)。如果您的系统上没有安装Java,请按照以下步骤操作。
从Oracle Technology Network下载JDK和JRE
接受许可协议。
安装JDK和JRE。
设置环境变量,如下面的截图所示。
步骤2 - 从Android Studio下载Android Studio
- 双击exe文件并运行安装程序。
- 继续使用所有默认选项。
- 设置ANDROID_HOME。
步骤3 - 安装Android镜像和工具。
- 点击SDK Manager -
选择必要的包。例如,如果我们正在为Android 4.4.2构建一个App,那么请确保Tools部分中选中以下包:
- Android SDK Tools rev 22.6.3
- Android Platform-tools rev 19.0.1
- Android SDK Build-tools rev 19.1
步骤4 - 创建Android虚拟设备。
- 打开Android Studio,然后点击工具栏中的AVD Manager。AVD允许我们测试和运行我们的Android应用程序。
对于Nexus5 AVD,使用以下设置:
- 设备 - Nexus 5 (4.95, 1080 x 1920; xxhdpi)
- 目标 - Google APIs x86 (Google Inc.) - API Level 19
- (确保您选择了名称中包含Google APIs的目标。)
- CPU - Intel Atom (x86)
- 选中“使用主机GPU”复选框
- 点击确定
您现在应该在AVD Manager中看到您创建的AVD,您可以在其中启动它、删除它或创建另一个AVD!
步骤5 - Robotium Jar文件 从RobotiumTech下载Robotium Jar文件
使用Robotium测试App
要使用Robotium测试App,请按照以下步骤操作:
步骤1 - 在Android Studio中创建一个名为“RobotiumTest”的测试项目。
选择所有默认选项,直到到达主页面。
步骤2 - 将Robotium jar文件复制到项目的Lib文件夹中。
步骤3 - 在src文件夹下的build.gradle文件中添加依赖项。
androidTestCompile 'com.jayway.android.robotium:robotium-solo-5.5.3'
步骤4 - 同步Gradle。
步骤5 - 创建测试类,如下所示:
package com.example;
import com.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.EditText;
import android.widget.TextView;
public class MyTestClass extends ActivityInstrumentationTestCase2<TestActivity>{
private Solo solo;
public MyTestClass() {
super(TestActivity.class);
}
public void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
public void testCase() throws Exception {
String vResult="TestExample";
EditText vEditText = (EditText) solo.getView(R.id.edit1);
solo.clearEditText(vEditText);
solo.enterText(vEditText,"TestExample");
solo.clickOnButton("Submit");
assertTrue(solo.searchText(vResult));
TextView textField = (TextView) solo.getView(R.id.txt1);
//Assert to verify result with visible value
assertEquals(vResult, textField.getText().toString());
}
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
}
步骤6 - 保存所有更改。确保没有错误。
步骤7 - 现在,运行测试用例。如果测试用例成功,您应该会看到以下输出!
移动测试 - Selendroid框架
Selendroid是一个用于测试Android原生和混合应用程序的测试自动化框架。Selendroid测试使用Selenium Webdriver客户端API编写。
Selendroid的优势
完全兼容JSON Wire协议/Selenium 3就绪。
无需修改被测应用程序即可对其进行自动化。
使用内置的Android驱动程序webview应用程序测试移动网络。
自动化原生或混合应用程序的概念相同。
UI元素可以通过不同的定位器类型找到。
支持手势:高级用户交互API。
自动启动现有的模拟器。
Selendroid支持硬件设备的热插拔。
完全集成到Selenium Grid中,用于扩展和并行测试。
支持多个Android目标API(10到19)。
内置检查器,简化测试用例开发。
Selendroid可以在运行时扩展您自己的扩展。
Selendroid可以同时与多个Android设备(模拟器或硬件设备)交互。
Selendroid的缺点
此工具的缺点是速度相当慢,并且在某些内存小于4GB的机器上无法使用。
如何使用Selendroid
步骤1 - 使用Robotium的先决条件是Java SDK(最低版本1.6)。如果您的系统上没有安装Java,请按照以下步骤操作。
从Oracle JavaSE下载JDK和JRE
接受许可协议。
安装JDK和JRE。
设置环境变量,如下面的截图所示。
步骤2 - 从SDK Android下载Android Studio(由于文件大小,这将需要一些时间)。
- 双击exe文件并运行安装程序。
- 继续使用所有默认选项。
- 设置ANDROID_HOME。
步骤3 - 从Selendroid下载Selenium jar文件和测试应用程序
- 下载selenium jar文件和测试应用程序。
- 将其放置到任何文件夹中,例如D:\SelendroidJars。
步骤4 - 使用USB电缆连接的物理设备。
确保设备已通过USB电缆连接到工作站。
确保已启用USB调试模式(在设置→开发者选项下)。
使用Selendroid测试App
要使用Selendroid测试App,请按照以下步骤操作:
步骤1 - 安装Eclipse。
步骤2 - 创建一个Java项目。
步骤3 - 将下载的Selendroid jar文件添加到新创建的项目中。
步骤4 - 将下载的Selenium jar文件添加到新创建的项目中。
步骤5 - 在Eclipse中配置testNG。
步骤6 - 使用USB电缆将移动设备连接到系统。从设置下的开发者选项中设置USB调试模式。
步骤7 - 运行Selendroid服务器。打开命令提示符并写入以下代码,然后按Enter键:
java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app selendroid-test-app-0.17.0.apk
Selendroid-standalone将在端口4444上启动一个http服务器,并将扫描用户创建的所有Android虚拟设备(avd)(~/.android/avd/)。
打开Web浏览器并导航到:https://:4444/wd/hub/status。
步骤8 - 创建一个Java项目;在构建路径中添加Selendroid Standalone库、Selenium jar和JUnit库。
步骤9 - 在Java项目下创建包。
步骤10 - 在包下创建一个类并编写以下代码。
package selTest;
import io.selendroid.SelendroidDriver;
import io.selendroid.common.SelendroidCapabilities;
import io.selendroid.standalone.SelendroidConfiguration;
import io.selendroid.standalone.SelendroidLauncher;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
public class SelendroidTest {
private WebDriver driver ;
@BeforeSuite
public void setUp() throws Exception {
SelendroidConfiguration config = new SelendroidConfiguration();
config.addSupportedApp("selendroid-test-app-0.9.0.apk");
SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
selendroidServer.launchSelendroid();
SelendroidCapabilities caps = new
SelendroidCapabilities("io.selendroid.testapp:0.9.0");
driver = new SelendroidDriver(caps);
}
@Test
public void selendroidTest() throws Exception {
WebElement inputField = driver.findElement(By.id("my_text_field"));
Assert.assertEquals("true", inputField.getAttribute("enabled"));
inputField.sendKeys("Selendroid");
Assert.assertEquals("Selendroid", inputField.getText());
WebElement button = driver.findElement(By.id("buttonTest"));
button.click();
button = driver.findElement(By.id("button2"));
button.click();
Thread.sleep(5000);
button = driver.findElement(By.id("startUserRegistration"));
button.click();
Thread.sleep(10000);
WebElement element = driver.findElement(By.id("label_username"));
String text = element.getText();
System.out.println(text);
element = driver.findElement(By.id("inputUsername"));
element.sendKeys("bob");
element = driver.findElement(By.id("inputEmail"));
element.sendKeys("test@gmail.com");
element = driver.findElement(By.id("inputPassword"));
element.clear();
element.sendKeys("test1233");
element = driver.findElement(By.id("inputName"));
element.clear();
element.sendKeys("My Name ");
element = driver.findElement(By.id("input_preferedProgrammingLanguage"));
element.click();
element = driver.findElement(By.id("text1"));
element.click();
element = driver.findElement(By.id("input_adds"));
element.click();
element = driver.findElement(By.id("btnRegisterUser"));
element.click();
element = driver.findElement(By.id("buttonRegisterUser"));
element.click();
}
@AfterSuite
public void tearDown(){
driver.quit();
}
}
步骤11 - 使用testNG运行配置运行该类。
移动测试 - Appium 框架
Appium是一个开源的测试自动化框架,用于测试原生和混合应用程序以及移动Web应用程序。它使用WebDriver协议驱动iOS和Android应用程序。
Appium的优势
它是免费的(并且主要)开源的。
它有一个非常受支持且活跃的Google小组。
它符合Selenium 3规范,因此应该是面向未来的。
它同时支持Android和iOS。
它不需要在设备上安装任何东西 - 不需要服务器或代码更改。
Appium的缺点
- 不支持智能等待。
- 在iOS上,您每次只能在一个Mac上执行一个测试。
- 对手势的支持有限。
- 对Android < 4.1的支持有限
如何使用Appium
步骤1 - 使用Appium的先决条件是Java SDK(最低版本1.6)。如果您的系统上没有安装Java,请按照以下步骤操作。
从Oracle JavaSE下载JDK和JRE
接受许可协议。
安装JDK和JRE。
设置环境变量,如下面的截图所示。
步骤2 - 从SDK下载Android Studio(由于文件大小,这将需要一些时间)。
- 双击exe文件并运行安装程序。
- 继续使用所有默认选项。
- 设置ANDROID_HOME。
步骤3 - 安装Android镜像和工具。
- 点击SDK Manager -
选择必要的包。例如,如果我们正在为Android 4.4.2构建一个App,那么请确保Tools部分中选中以下包:
- Android SDK Tools rev 22.6.3
- Android Platform-tools rev 19.0.1
- Android SDK Build-tools rev 19.1
步骤4 - 创建Android虚拟设备 -
打开Android Studio,然后点击工具栏中的AVD Manager。AVD允许我们测试和运行我们的Android应用程序。
对于Nexus5 AVD,使用以下设置:
设备:Nexus 5 (4.95, 1080 x 1920; xxhdpi)
目标:Google APIs x86 (Google Inc.) - API Level 19
确保您选择了名称中包含Google APIs的目标。
CPU:Intel Atom (x86)
选中“使用主机GPU”复选框
点击确定。
您现在应该在AVD Manager中看到您创建的AVD,您可以在其中启动它、删除它或创建另一个AVD!
步骤5 - 从Appium下载Appium jar文件
使用Appium测试App
要使用Appium测试App,请按照以下步骤操作:
步骤1 - 在Android Studio中创建一个名为“RobotiumTest”的测试项目。
选择所有默认选项,直到到达主页面。
步骤2 - 将Appium jar添加到您的项目中。点击Project → App → 复制lib中的所有jar。选择复制的jar(Selenium、Java客户端和Junit Jar除外),然后右键单击并点击“添加为库”。
步骤3 - 点击App中的build.gradle。您将看到所有添加的库,如下面的截图所示。
步骤4 - 现在创建一个Java类,如下所示:
AppiumDriver driver;
@Before
public void testCaseSetup()throws Exception {
//service.start();
//reader.readFile();
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
cap.setCapability(MobileCapabilityType.DEVICE_NAME, "Android device");
cap.setCapability(MobileCapabilityType.NEW_COMMAND_TIMEOUT, "4000");
cap.setCapability(MobileCapabilityType.APP, "c://apk//sample.apk");
driver = new AndroidDriver<MobileElement>("http://127.0.0.1:4444/wd/hub",cap);
}
@Test
public void testcase1()throws Exception {
driver.findElementByID("Example").click();
Asser.assertTrue(driver.findElementByID("Example").isDisplayed));
}
@After
public void testCaseTearDown() {
driver.quit();
}
步骤5 - 运行测试用例。
- 点击构建变体并选择单元测试。
- 使用特定端口“4444”启动Appium服务器。
- 从此处下载适用于Windows的Appium。
- 双击.exe文件并安装Appium。
- 点击图标以启动UI。
- 如果需要,更改端口,如下所示。
- 点击播放按钮启动服务器。
- 连接设备并打开USB调试或启动模拟器。
- 右键单击测试类,然后点击“运行”。
移动测试 - Zucchini 框架
Zucchini是一个新的测试框架,它使用BDD风格的领域特定语言(DSL)。它的重点之一是简化使用Selenium编写的验收测试。
它不是JBehave或Robot Framework的替代品,您稍后会看到这一点。在这里,我们将通过逐步描述一个示例来让您一窥Zucchini的概念。
如何安装Zucchini
安装Zucchini的先决条件是XCode 4.2。此外,还需要一些命令行工具,例如brew update && brew install imagemagick && brew install coffee-script。
如何使用Zucchini
gem install zucchini-ios
首先创建一个项目脚手架
为您的第一个功能创建一个功能脚手架
通过修改features/my_feature/feature.zucchini和features/support/screens/welcome.coffee开始进行修改。
Zucchini不需要对应用程序代码进行任何修改。您也可以将Zucchini测试保存在单独的项目中。
zucchini generate --project /path/to/my_project
zucchini generate --feature /path/to/my_project/features/my_feature
或者,查看zucchini-demo项目,该项目围绕Apple的CoreDataBooks示例提供了一个易于探索的Zucchini设置。
在设备上运行
将您的设备添加到features/support/config.yml中。
在iOS模拟器上运行。我们强烈建议您在真实的硬件上运行Zucchini功能。但是,如果您必须这样做,您可以在iOS模拟器上运行它们。
首先,修改您的features/support/config.yml以包含已编译应用程序的完整路径。例如,
app:/Users/vaskas/Library/Developer/Xcode/DerivedData/CoreDataBooks-ebeqiuqksrwwoscupvxuzjzrdfjz/Build/Products/Debug-iphonesimulator/CoreDataBooks.app
其次,在devices部分添加一个“iOS Simulator”条目(不需要UDID),并确保根据您的iOS Simulator设置提供“screen”的实际值 -
像这样运行它 -
ZUCCHINI_DEVICE="iOS Simulator" zucchini run /path/to/my_feature
如果您计划不时添加设备,udidetect实用程序会派上用场 - udidetect -z。
ZUCCHINI_DEVICE="My Device" zucchini run /path/to/my_feature
结果显示