移动测试 – 快速指南

移动测试 – 快速指南


移动测试 – 概述

在我们开始实际教程之前,让我们玩得开心。看看下面的列表。您可以轻松地了解我们在当今忙碌而忙碌的生活方式中不可避免地必须面对的这些基本家务 –

  • 我要付电费。

  • 我需要与我的经理沟通并紧急提交我的报告。

  • 我想给我的孩子买新衣服,但我没有时间去商店。

  • 哦……现在是晚上 10 点;我的航班要迟到了。我的出租车在哪里?

  • 我是第一次来这个城市;我应该预订哪家酒店?

现在回答你自己。您需要什么才能在几分之一秒内执行这些活动?答案是 –

  • 一部智能手机,
  • 互联网连接,以及
  • 一个移动应用程序来完成这项工作。

这让我们意识到移动应用程序在当今时代的重要性。一切都通过您的智能手机以智能方式完成。每天,我们都会了解推出新的应用程序或工具以简化我们的生活。

关于Gowalla有一个众所周知的事件数百万人喜欢这个基于位置的社交网络,该网络始于 2007 年,五年后关闭。多个问题阻止 Gowalla 获得大众吸引力。浮出水面的主要原因之一是“登记入住不是那么用户友好”。

要拥有一个成功的移动应用程序,我们需要明白开发一个好的移动应用程序并不是唯一的要求。移动应用程序需要经过彻底的测试才能获得用户的喜爱。毕竟,是用户体验使任何软件成功。

移动测试 – 平台

在开始进行移动测试之前,最好先了解移动平台的基础知识。主要包括手机的操作系统、设备的类型和手机应用程序的类型。从长远来看,对这些方面有足够的了解将有助于我们进行稳健的测试计划。

移动操作系统

下表概述了市场上一些流行的移动操作系统 –

Operating System 由开发 流行度(低、中、高) 最新可用版本
Android 谷歌公司 高的 棒棒糖,安卓 5.0-5.1
iOS 苹果公司 高的 iOS 8.X
Blackberry 黑莓有限公司 低的 黑莓 10.2.1
Windows 微软公司 中等的 视窗 10 移动版
Symbian 塞班基金会 低的 已停产

根据一些一般调查,市场上不同操作系统的使用情况可以描述如下。

移动操作系统

移动测试 – 设备类型

移动设备通常是掌上电脑。根据它们的特性,例如物理尺寸、硬件和软件功能、它们的用途等,它们有许多变体。

看看下表。它根据特性区分平板电脑、电子书阅读器和智能手机。

Device 平板电脑 电子书阅读器 智能手机
What it is 平板电脑是便携式计算机设备。与传统计算机不同的是,它们没有键盘或鼠标,但整个屏幕都是触摸敏感的。 电子书阅读器(也称为电子阅读器)类似于平板电脑,不同之处在于它们主要用于阅读电子书(数字、可下载书籍)。 智能手机是功能强大的移动电话,除了提供电话服务外,还可以运行各种应用程序。
Used for 几乎所有我们可以用传统计算机或台式机完成的工作。 阅读电子书 浏览网页、观看视频、阅读电子书和玩游戏
Example 三星平板电脑 亚马逊 Kindle、Barnes & Noble Nook。 索尼智能手机、三星智能手机、苹果 iPhone。

原生 Vs 混合 Vs Mobileweb

在进行测试计划时必须考虑的一个关键因素是检查移动应用程序类型。您将主要遇到三种类型的移动应用程序:Mobile Web、Native App 和 Hybrid App。分类基于开发工作和应用程序重新分发策略。让我们详细了解它们中的每一个。

移动网络

Web 应用程序不是真正的应用程序;它们实际上是在网络浏览器的帮助下在您的智能手机中打开的网站。在所有主要类型的应用程序中,移动网站拥有最广泛的受众。

  • 示例教程点

  • 好处

    • 容易接近。

    • Easy Development – 开发响应式设计并重组内容以在较小的屏幕/硬件上正确显示将使任何桌面网站都适合移动设备。

    • 轻松更新 – 只需在一个位置更新,所有用户都可以自动访问最新版本的网站。

    • 与本机或混合应用程序相比,无需安装。

  • 缺点

    • 移动网站无法使用某些功能。例如,网站无法访问文件系统和本地资源。

    • 许多现有网站不支持离线功能。

    • 用户的主屏幕上不会有应用程序的图标作为持续提醒。该网站只需要在网络浏览器中打开。

    • 虽然本机和混合应用程序出现在 App Store 和 Google Play 上,但网络应用程序不会。所以重新分配不是那么明智。

原生应用

本机应用程序是专门为一个平台开发的。它可以通过应用程序商店(例如 Google Play Store 或 Apple 的 App Store)安装。

  • 示例– Whatsapp、Facebook。

  • 好处

    • 本机应用程序存在于设备上,可通过设备主屏幕上的图标访问。

    • 他们可以充分利用设备的所有功能——他们可以使用相机、GPS、加速度计、指南针、联系人列表等。它们还可以包含手势(标准操作系统手势或新的和应用程序定义的手势)。

    • 本机应用程序可以使用设备的通知系统,并且可以离线工作。

    • 发布者可以利用推送通知,在每次发布新内容或需要用户注意时提醒用户。

    • Native Apps 维护每个操作系统的 UI 设计,从而提供最佳的用户体验。例如,本机应用程序在 Android 中可以有一个左对齐的标题,在 iOS 中可以有一个居中对齐的标题。

    • 重新分发很容易,因为它可以在应用程序商店中找到。

  • 缺点

    • 构建应用程序的高成本:为一个平台开发的原生应用程序不会在另一个平台上运行。为 Android 构建的应用程序不会在 iOS 上运行。我们需要为 iOS 完全构建一个不同的应用程序。因为这个原因,我们需要维护多个版本的App。

    • 即使您可能发布本机应用程序,您仍希望保持移动网站的良好维护,因为移动会带来更多流量。所以保养比较高。

混合应用

混合应用程序是一种以应用程序格式公开现有网站内容的方法。它们可以很好地描述为 Web App 和 Native App 的混合体。

  • 示例– Instagram,维基百科。

  • 好处

    • 开发混合应用程序比开发原生应用程序便宜。可以跨平台构建,即降低App开发成本。

    • 维护简单,因为要维护的版本不多。

    • 它可以利用设备中的一些可用功能。

    • 它可以在 App Store 中找到,这使得分发变得容易。

    • 它仅在应用程序中嵌入了一个浏览器。

  • 缺点

    • 与本机应用程序相比,图形不太习惯操作系统。

    • 混合应用程序比原生应用程序慢。

移动测试 – 设备与应用

设备测试

此类测试通常用于确保移动设备的质量。测试包括移动设备的硬件和软件测试。我们将在这里讨论通常在移动设备上进行的不同类型的测试。

单元测试

单元测试是测试阶段,通常由开发人员测试移动设备开发的各个部分。它可能包含硬件测试、软件测试和机械测试。

工厂测试

工厂测试是一种对移动设备的健全性检查。它是自动进行的,以验证没有制造或组装带来的缺陷。它主要包括以下测试 –

  • 移动应用测试
  • 硬件测试
  • 电池(充电)测试
  • 信号接收
  • 网络测试
  • 协议测试
  • 手机游戏测试
  • 移动软件兼容性测试

认证测试

认证测试是移动设备上市前的检查。

应用测试

移动应用程序测试是测试为手持移动设备开发的软件的应用程序的功能、可用性和一致性的过程。可以在移动设备上执行不同类型的测试。例如,

  • 功能测试
  • 实验室测试
  • 性能测试
  • 内存泄漏测试
  • 中断测试
  • 可用性测试
  • 安装测试
  • 认证测试
  • 安全测试

关键点

  • 设备测试通常用于检查移动设备本身,而移动应用程序测试涉及测试将在所选设备上运行的应用程序。

  • 当我们称之为设备测试时,硬件测试成为其中的一部分。如果是移动应用程序测试,则视情况而定,即如果被测应用程序需要硬件集成,则将涉及硬件测试。

  • 移动设备测试和移动应用程序测试都可以实现自动化。

移动测试 – 模拟器与模拟器

在移动测试的情况下,一件事是不言自明的。要执行移动测试,您需要移动设备。这是为了了解我们的产品在给定移动设备上的工作方式和外观。

假设我们正在开发一个机票预订系统的应用程序。一旦产品完全开发出来,作为移动测试的一部分,我们需要检查应用程序是否在所有主要使用的设备(如 Android 手机、iOS、黑莓手机以及其他不同类型的平板电脑和 iPad)上都按预期工作。

要进行这种检查,我们需要获取每个这样的设备,然后我们可以检查应用程序的行为是否符合预期。是的,您想对了,作为产品所有者,您会发现购买如此大量的移动设备并进行测试非常昂贵。那么有没有可用的智能替代品?

这个问题的解决方案是使用移动模拟器和移动模拟器。这些主要是旨在为智能手机的重要功能提供模拟的软件程序。它们在性质上非常相似,因此有时可以互换使用。

让我们比较在模拟器/模拟器上的测试与在真实设备上的测试有何不同 –

真机 模拟器/模拟器
Price 获得真正的设备将花费你很多。 它几乎是免费的,我们只需要下载并安装它们
Processing Speed 处理速度更快;但是网络延迟可能是正常的。 与实际设备相比,它更慢。它观察到的延迟比连接到本地网络或云中的真实设备少。
Debugging 调试不是那么容易。 它提供了应用程序的逐步调试。此外,它还提供了一种有效的截屏方式。
Web-app Testing 可以以正常方式测试 Web 应用程序。 测试 Web 应用程序要容易得多。
Reliability 在真实设备上进行测试有一个主要优势,它总是能给出准确的结果。 它不能模拟所有类型的用户交互;因此有时可能会导致错误的结果。因此,它在可靠性方面得分很低。

模拟器/模拟器不能模仿以下功能 –

  • 移动设备电池
  • 移动设备的相机
  • 难以模仿来电和短信等中断。
  • 对移动设备内存使用情况的模拟不太现实。

现在让我们更多地了解移动模拟器和移动模拟器。两者之间存在特定差异。下表列出了模拟器和仿真器之间的主要区别。

模拟器 模拟器
What it mimics

移动设备软件

移动设备硬件

移动操作系统

设备的内部行为。

它不模仿硬件。

How to get it 它通常由设备制造商提供。 它通常由设备制造商或其他公司提供。
Internal structure 它是用机器级汇编语言编写的。 它是用高级语言编写的。
Debugging 更适合调试。 它不适合用于调试目的。
Performance 模拟器真的很慢。模拟实际硬件通常会使软件的运行速度比本机运行速度慢。 比模拟器快。
Example 谷歌的 Android SDK Apple 的 iOS 模拟器

那么,移动测试的最佳选择是什么?最佳实践表明,在实际开发过程中,我们应该使用模拟器或模拟器。在最终确定产品之前,应该对所选的真实设备进行完整性检查。例如,Android 智能手机用户数量庞大,因此明智的选择是对最新的 Android 设备进行健全性检查,并且可以通过模拟器进行回归。

移动测试 – 应用

移动应用程序测试的简单定义如下:“移动应用程序测试测试为手持移动设备开发应用程序软件的功能、可用性和一致性的过程。移动应用程序测试可以是自动化或手动类型的测试。”

注意– 为了更好地理解,我们假设我们正在测试用于在线机票预订系统的移动应用程序。

功能测试

功能测试是任何应用程序的最基本测试,以确保它按照定义的要求工作。与其他基于用户界面的应用程序类似,移动应用程序需要在用户场景中进行大量人工交互。

示例测试场景 –

  • 验证是否仅在选定日期显示选定源目的地的航班可用性。

  • 确认搜索结果中不包含过去的日期。

兼容性测试

在移动应用程序测试方面,兼容性测试拥有最高的堆栈。移动应用程序兼容性测试的目的通常是确保应用程序的关键功能在特定设备上按预期运行。兼容性本身应该只需要几分钟,并且可以提前计划好。

决定应该执行哪些移动设备兼容性测试并不是一件容易的事(因为对所有可用设备进行测试是不可能的)。因此,准备一个包含所有可能组合的测试矩阵,并让客户对其进行优先排序。

示例测试场景 –

  • 验证是否使用 Android 设备成功执行航班搜索。
  • 验证是否已成功为 Apple iPad 执行航班搜索。

本地化测试

如今,大多数应用程序都是为全球使用而设计的,关注语言、时区等区域轨迹非常重要。当有人更改时区时验证应用程序的功能非常重要。必须考虑到,有时西方设计可能不适用于东方国家的观众,反之亦然。

示例测试场景 –

  • 当我们使用不同语言(或非英语语言)的移动应用程序时,确认没有 UI 或数据截断问题。

  • 验证您的移动应用程序是否已妥善处理时区更改。

实验室测试

通常由网络运营商进行的实验室测试是通过模拟完整的无线网络来完成的。执行此测试是为了找出移动应用程序使用语音和/或数据连接来执行某些功能时的任何故障。

示例测试场景 –

  • 验证客户与支持人员进行语音聊天时没有故障。

性能测试

移动性能测试涵盖客户端应用性能、服务器性能和网络性能。确保性能测试场景涵盖所有这些领域非常重要。在性能测试工具的帮助下,给定预定义的负载和事务组合,不难识别现有网络、服务器和服务器端应用程序瓶颈。

示例测试场景 –

  • 验证可用航班检查只需要合理的时间。

  • 验证在检查航班可用性时,移动设备运行正常且未挂起。

压力测试

压力测试是发现异常、挂起和死锁的必要条件,这些异常、挂起和死锁在功能和用户界面测试期间可能会被忽视。以下是压力测试的一些标准列表 –

  • 使用尽可能多的数据加载您的应用程序,以尝试达到其断点。

  • 一遍又一遍地执行相同的操作。

  • 以不同的速度执行重复操作——非常快或非常慢。

  • 让您的应用程序长时间运行,既可以与设备交互,也可以让它闲置,或者执行一些需要很长时间的自动任务,例如幻灯片。

  • 将屏幕点击和按键随机发送到您的应用程序。

  • 在您的设备上运行多个应用程序,以便您可以经常在您的应用程序和其他设备应用程序之间切换。

示例测试场景 –

  • 检查 1000 名用户正在访问移动应用程序以搜索国内航班。
  • 检查 1000 名用户正在访问移动应用程序以搜索国内航班。

安全测试

黑客攻击、身份验证和授权策略、数据安全、会话管理和其他安全标准的漏洞应作为移动应用程序安全测试的一部分进行验证。在通过网络对用户进行身份验证时,应用程序应加密用户名和密码。

测试安全相关场景的一种方法是通过代理服务器(如 OWASP Zed Attack Proxy)路由您的手机数据并查找漏洞。

示例测试场景 –

  • 验证应用程序不会在两个不同的移动设备上使用相同的用户凭据运行。

  • 如果会话保持非活动状态超过 15 分钟,请验证它是否会自动过期。

内存泄漏测试

与其他计算机相比,移动设备的内存非常有限,并且移动操作系统的默认行为是终止使用过多内存并导致用户体验不佳的应用程序。

内存测试对于移动应用程序非常重要,以确保每个应用程序在整个用户旅程中保持优化的内存使用。建议我们在实际目标设备上进行内存测试,因为系统架构从模拟器到实际设备是不同的。

示例测试场景 –

  • 做十次航班可用性检查并记下每次检查增加的内存使用量。

  • 保持应用程序运行十分钟并观察内存使用情况是否保持稳定。

功耗测试

不同的移动设备中使用了多种类型的电池(即镍镉/锂离子/镍金属混合电池)。虽然我们专注于功耗测试,但我们需要测量每个活动级别的电池状态。它将让我们更好地了解单个应用程序的功耗。

功耗测试可手动完成;此外,市场上还有一些免费工具可用,例如 Trepn Profiler、Power Tutor 和 Nokia Energy Profiler。这些应用程序可以在智能手机或平板电脑上显示实时功耗。

示例测试场景 –

  • 使用移动应用程序搜索航班可用性,并检查功耗是否保持最小。

  • 保持移动应用程序处于理想状态;当应用程序没有活动时,验证是否没有功耗。

中断测试

应用程序在运行时可能会面临多次中断,例如来电或网络覆盖中断和恢复。这可以再次区分 –

  • 传入和传出 SMS 和 MMS
  • 来电和去电
  • 传入通知
  • 电池拆卸
  • 用于数据传输的电缆插入和移除

示例测试场景 –

  • 确认航班可用性检查在接到来电后暂停并恢复。

  • 验证用户可以在使用应用程序时拒绝呼叫,然后再次恢复相同的应用程序。

可用性测试

可用性测试根据目标受众的以下三个标准评估应用程序 –

  • 效率– 指定用户在特定环境中实现指定目标的准确性和完整性。

  • 有效性– 与实现目标的准确性和完整性相关的资源消耗。

  • 满意度– 工作系统对其用户和受其使用影响的其他人的舒适度和可接受性。

从应用程序设计的早期阶段就进行可用性测试非常重要,不应仅在应用程序完成时才进行。可用性测试需要用户大量参与,输出可能会影响应用程序设计,在项目后期很难改变。

示例测试场景 –

  • 航班可用性检查应在主页上。
  • 赞助广告不应显示在内容中间。

安装测试

安装测试验证安装过程顺利进行,用户不必面对任何困难。

示例测试场景 –

  • 验证安装过程是否顺利且不会花费很长时间。
  • 通过企业应用商店验证安装是否成功。

卸载测试

卸载测试的基础可以用一句话概括为“卸载应该一口气扫出App相关数据”。

示例测试场景 –

  • 验证卸载后是否成功删除了所有与应用程序相关的文件。

  • 如果它是一个存储媒体文件的应用程序(如 Whatsapp 或 Facebook),即使在卸载应用程序后也要保留这些文件。

更新测试

我们需要对移动应用程序更新非常谨慎。人们经常抱怨应用程序在更新后无法令人满意地工作。因此,在更新测试下,我们确认该应用程序将像以前一样工作非常重要。简而言之,它不应该破坏任何东西。移动应用程序更新可以通过两种方式进行 –自动更新手动更新

示例测试场景 –

  • 验证应用程序在自动更新后成功运行。
  • 验证更新进度是否正确显示。

认证测试

要获得合规证书,每个移动设备都需要根据不同移动平台设定的准则进行测试。

示例测试场景 –

  • 验证应用程序在 iPhone 上安装时是否符合 iOS 手机的策略。

  • 验证应用程序在 Android 上安装时是否符合 Android 手机的政策。

移动测试 – 用户界面

假设我们正在使用移动应用程序,有趣的是,您遇到以下情况 –

  • 按钮对齐丢失。
  • 文本正在被修剪。
  • 日历控制正在被削减。

事实上,这对于任何用户来说都是一种不愉快的体验。为确保我们为用户提供出色的体验,强烈建议进行移动 UI 测试。

在您的测试计划中要探索的第一个领域是用户界面。作为测试人员,您的工作是确认您的应用程序满足某些期望,例如 –

  • 设备的整体配色方案/主题
  • 图标的样式和颜色
  • 页面加载时的进度指示器
  • 菜单及其调用方式及其包含的典型项目
  • 此设备上应用程序的整体响应能力

让我们更多地讨论移动 UI 测试的基础知识。

屏幕方向/分辨率

Web 内容需要在各种设备和网络条件下看起来和感觉都很棒。在常用的屏幕分辨率下测试您的网页通常是个好主意,这样您就可以确保您的网页可用。

如果您有一个多栏布局,您可能还需要检查您的栏是否正确对齐,并且在访问者的分辨率较低时仍然可见。了解标准屏幕分辨率也很重要 –

  • 640 × 480
  • 800×600
  • 1024 × 768
  • 1280×800
  • 1366 × 768
  • 1400×900
  • 1680 × 1050

可用工具

市场上有很多工具可以使移动 UI 测试更流畅、更简单。例如 –

  • 谷歌浏览器扩展
  • 萤火虫
  • 浏览器堆栈

让我们更多地了解这些工具及其用途。

谷歌浏览器扩展

这是 Google chrome 网络浏览器提供的免费功能。我们在此逐步解释了如何使用 Google Chrome 扩展程序测试移动网络 –

步骤 1 – 在“Google Chrome Web 浏览器”中打开正在测试的网站。

步骤 2 – 按 F12。它将打开 Developer tool 窗口,如下面的屏幕截图所示。

开发者工具窗口

步骤 3 – 单击移动设备图标。请参阅以下屏幕截图。

移动设备图标

步骤 4 – 选择要测试网站的移动设备。您可以选择不同的可用设备来进行 UI 验证。

用户界面验证

萤火虫

Screenfly 是一款免费且易于使用的工具。要使用它,您只需要在 Web 浏览器中输入 Quirktools您将看到以下屏幕。

萤火虫

输入被测网站并点击Go选择要在其中查看网站的移动设备。

选择流动装置

浏览器堆栈

它是另一个用于执行移动 UI 测试的好工具。它提供了美妙的结果。虽然它是一个付费工具,但您可以通过使用有效的电子邮件地址BrowserStack注册来获得免费 试用

触摸屏

多点触控与单点触控屏幕

如果您的设备和应用程序支持多点触控功能,例如 iPhone 上的双指缩放效果,那么请确保包含大量涉及同时在多个位置触摸屏幕的测试案例,尤其是在软键盘上打字时。

长按与短按

虽然在触摸屏设备上没有双击的概念(尽管可能有,如果在您的应用程序中具体实现),但一些设备,如 Android 智能手机,区分长触摸和短触摸。按住某个项目将在屏幕中间显示一个上下文菜单,而短按同一项目将自动执行该上下文菜单中的第一个操作。

按钮大小和位置

确保按钮和图标足够大且距离屏幕边缘足够远,以便大指尖轻松点击。

软键和硬键

软键盘

通常,存在对最终用户很重要的各种特殊情况和极端情况。

  • 如果用户的主要操作是输入一些文本,软键盘是否会自动出现?

  • 如果突出显示的字段用于输入电子邮件地址,软键盘的第一层是否包括快捷键“@”和“.com”?

  • 软键盘可以轻松解除重新显示吗?

  • 软键盘和硬键盘可以互换使用吗(如果设备都有的话)?

硬键

确保围绕设备的可用硬键(例如开始、主页、菜单和返回)的使用进行大量测试。这些都应该与您的应用程序交互,类似于它们如何与设备的本机应用程序交互。

轨迹球、轨道轮和触摸板

如果您的设备没有触摸屏,更重要的是验证屏幕导航对用户来说是否尽可能轻松。在这些情况下,用户可能依靠轨迹球、轨迹轮或触摸板从一个对象移动到另一个对象。

移动测试 – 规划和工具

测试手机、平板电脑和电子阅读器等移动设备需要特殊的设备和方法。由于传统的桌面屏幕捕捉软件无法充分捕捉触摸交互,可用性从业者一直在使用战略性放置的摄像头来记录这些移动设备上的可用性测试交互。

准备执行移动设备测试

促进手机、平板电脑和电子阅读器可用性测试的方法和设备不断发展。在计划移动设备测试时,您应该记住以下几点 –

  • 您的时间表和预算。充分了解时间框架和预算将帮助您确定哪些流程和设备最适合您的需求。

  • 空间的物理设置以及您将如何捕获测试。这可能包括从低保真度安排到使用专门的平台和相机设备和/或可能使用眼动追踪软件。

  • 您的目标受众和设备。使用网络分析来检查有多少移动用户访问该网站、他们使用的设备以及他们的操作系统。了解此信息将帮助您了解要测试的设备。

测试计划后要涵盖的另一个重要方面是测试设备管理在大型组织中,处理移动设备测试需要一种智能方式来保护组织的机密数据。为此,您需要一个安全软件。在下一节中,我们将更多地了解设备管理工具。

设备管理工具

移动设备管理 (MDM) 是 IT 中使用的一种安全软件,用于监控、管理和保护员工的移动设备,这些移动设备部署在多个移动服务提供商和组织中使用的多个移动操作系统之间。

MDM 通常与其他安全服务和工具(例如移动应用程序管理)结合使用,以创建完整的移动设备和安全企业移动管理解决方案。

市场上有许多工具可以完成这项工作。下表概述了一些流行的工具及其功能。

Products 黑莓 MDM 思杰 MDM 戴尔 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,黑莓 10 是的 是的 10(通过 ActiveSync)
Symbian 是的 是的
Windows OS 是的 是的 是的 8.1 实时/专业版
Mac OSX 即将推出 是的 是的 狮子,山狮 是的
Other 视窗手机 没有任何 Office 365、Gmail、莲花 没有任何 Windows Mobile、CE、嵌入式
Configure/disable WiFi 是的 是的 是的 是的 是的 是的
Device Encryption 是的 是的 是的,取决于设备类型 是的 是的 是的
Email Encryption 是的 是的 是的,取决于设备类型 是的 是的 是的
Multifactor authentication 是的 是的 是的 是的 是的
Malware detection 是的 是与合作伙伴集成 是的
Firewall 是的 是的 是与合作伙伴集成 是的
Separate User Data from Corporate Data 是的 是的 是的 是的 是的 是的

移动测试 – 硬件视角

在我们进行实际移动设备测试之前,深入了解移动设备硬件架构非常重要。当我们真正进入移动设备/移动设备应用程序测试时,这将帮助我们更好地进行测试计划。让我们来看看移动设备硬件的不同特性。

硬件部件

如果你拿任何手机,它主要由以下部分组成。

电路板

它可以被视为手机的大脑,控制着它的所有活动。

电路板

触摸屏显示

触摸屏是智能手机的重要组成部分。触摸屏会识别您在屏幕上放置手指或触控笔的位置,并将坐标相应地传达给手机 CPU。

有两种流行的触摸屏类型 –

  • 电阻式触摸屏– 它有两层(由微小的间隙隔开),在屏幕上形成覆盖层。当手指放在屏幕上的任何一点上时,两者形成接触并获得坐标。这些相对便宜,可以在大多数廉价手机上找到。缺点是需要一定的压力来记录触摸。随着时间的推移,屏幕确实会出现一定程度的损坏。

  • 电容式触摸屏– 它的整个屏幕都涂有电容性物质,可以保持一定量的电荷。当手指等导电物体放在屏幕上时,该点的电容会发生变化,从而获得坐标。电容式触摸屏在人类手指不会引起电容变化的寒冷气候下反应不佳,因此建议在此类情况下使用手写笔。然后是多点触控触摸屏,其中几乎所有手指都可以准确定位。这导致人们可以在触摸屏上执行的手势数量增加。

存储卡

存储卡有不同的尺寸和容量。它们被广泛用作数据存储设备来存储数字信息。

存储卡

电话卡

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,然后单击继续。

  • 要能够跨多个应用程序使用一个开发配置文件,请选择通配符应用程序 ID(如果可用)。

  • 选择一个或多个开发证书以包含在供应配置文件中,然后单击继续。

  • 仅列出了开发证书。

  • 选择要包含在配置文件中的一台或多台设备,然后单击继续。

  • 输入配置文件的名称,然后单击生成。

  • (可选)单击下载以下载配置文件。

如何在 AppBuilder 中添加您的配置文件?

  • 单击齿轮图标并选择选项。

  • 选择 iOS → 配置文件。

  • 单击导入。

  • 浏览到存储您的配置文件的移动配置文件的位置,选择它并确认导入。

设备选项和首选项

您可以为任何文字、动态搜索、图片或展示广告指定设备首选项(移动或全部)。

如果一个广告组同时包含首选移动设备广告和常规广告,则只有首选移动设备的广告会在移动设备上投放,而只会在电脑和平板电脑上投放常规广告。

在类型列表中,选择广告和附加信息,然后选择您要更新的广告类型。选择一个或多个广告。在编辑面板上的“设备首选项”下,选择“移动”或“全部”。

移动设备测试 – 类型

让我们来看看我们可以在移动设备上执行的不同类型测试的详细信息。

网络连接

下表提供了可以为移动设备执行的网络连接测试清单。

Sr.No. 描述
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 卡与手机交互的首映功能的清单。

Sr.No. 描述
1 该应用程序可以安装在设备上吗?
2

如果有来电,应用程序的行为是否符合设计/预期?

3 如果有短信传入,应用程序的行为是否符合设计/预期?
4 如果连接了充电器,应用程序的行为是否符合设计/预期?
5 如果充电器断开连接,应用程序是否按设计/预期运行?
6 如果设备进入睡眠模式,应用程序的行为是否符合设计/期望
7 如果设备从睡眠模式恢复,应用程序的行为是否符合设计/预期
8 如果设备从锁定屏幕恢复,应用程序的行为是否符合设计/预期?
9 如果设备倾斜,应用程序的行为是否符合设计/预期?
10 如果设备晃动,应用程序的行为是否符合设计/预期?
11 如果本地消息来自另一个应用程序(想想:日历提醒、待办事项等),应用程序的行为是否符合设计/期望?
12 如果推送消息来自另一个应用程序(想想:twitter 提及、Whatsapp 消息、wordfeud 邀请等),该应用程序的行为是否符合设计/预期。
13 应用程序是否与 GPS 传感器正确交互(打开/关闭、检索 GPS 数据)?
14 设备上所有按钮或按键的功能是否都为此应用程序定义?
15 验证未定义功能的按钮或键在激活时在应用程序上没有意外行为。
16 如果设备上有一个真正的“后退”按钮,“后退”按钮是否会将用户带到上一个屏幕?
17 如果设备上有一个真正的“菜单”按钮,菜单按钮是否显示应用程序的菜单?
18 如果设备上有一个真正的“主页”按钮,主页按钮是否能让用户返回设备的主屏幕?
19 如果设备上有一个真正的“搜索”按钮,这是否会让用户在应用程序中进行某种形式的搜索?
20 如果推送“电池电量低”消息,应用程序的行为是否符合设计/预期
21 如果设备上的声音被关闭,应用程序的行为是否符合设计/预期?
22 如果设备处于飞行模式,应用程序的行为是否符合设计/预期?
23 可以从设备上卸载该应用程序吗?
24 重新安装后应用程序是否按预期运行?
25 可以在应用商店中找到该应用吗?(上线后查看)
26 应用程序是否可以按照设计/期望通过多任务处理切换到设备上的不同应用程序?
27 使用屏幕保护膜时,所有触摸屏位置(按钮)是否都能正常工作。

蓝牙测试

蓝牙设备只能在 10 米范围内进行通信。此类设备可以是键盘、鼠标、无线耳机等。下表提供了可以执行的蓝牙测试清单 –

Sr.No. 描述
1 用户可以搜索范围内的所有可用设备。
2 数据和语音传输都可以通过使用短距离网络发送。
3 数据和语音传输都可以通过使用短距离网络来接收。
4 用户可以随时断开连接。
5 关闭蓝牙时要求断开当前连接。
6 蓝牙最大范围为 10 米。
7 通过手机,您可以发送图片、视频、交换名片,也可以将文件传输到您的PC。
8 (设备已配对)这是用于确认用户已成功配对两个蓝牙设备的消息。
9 不可发现模式,一种不会响应发现请求的设备。
10 不可发现模式,一种不会响应发现请求的设备。
11 不可配对模式,不接受配对的设备被称为处于不可配对模式。
12 密码,密码是用户定义的密码,需要从任何其他设备连接到设备。强烈建议尽可能使用密码,以避免未经授权访问您的蓝牙设备。
13 身份验证 – 验证通信链路另一端身份的过程。在蓝牙技术中,这是通过基于密钥和配对的身份验证过程实现的。
14 未找到设备,这是一条错误消息,如果搜索范围内的其他设备未找到任何内容,则可能会出现此错误消息。
15 空闲模式,当设备没有与其他设备建立链接时,设备处于空闲模式。在这种模式下,设备可能会发现其他设备。
16 已知设备测试,其他设备已知的设备。设备过去已配对或存储了已知设备的某些信息。

Wi-Fi 测试

测试您的手机 WiFi 连接是确保您的 Internet 以服务提供商承诺的速度运行的好方法,但您不仅限于在台式计算机上运行这些测试。手机WiFi测试是测试您家中或办公室各处WiFi信号功率的完美方式。下面给出的是移动设备的 Wifi 测试清单。

Sr.No. 描述
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 平台的应用程序。要使用这些,请下载所需的应用程序。然后按照说明运行测试并保存结果。

执行速度测试的工具

速度测试 SpeedSmart WiFi 和移动网络速度测试– 它与 Apple iPhone 和 iPad 兼容。这是一个付费应用程序。SpeedSmart 是一款终极 iOS 速度测试实用程序,用于评估您所有 iOS 设备上的蜂窝网络(3G、4G 和 LTE)和 Wi-Fi 连接。全球服务器网络和智能速度测试方法确保结果准确。

Wifi速度测试

WiFi 速度测试– 它与 Android 手机兼容。它是付费工具。使用此工具,您可以测试本地 (LAN) 网络的速度。测试可以在无线 (WiFi) 或有线网络上完成。

本地化和全球化

请参阅下面的清单,以了解有关移动设备本地化和全球化测试的信息。

Sr.No. 描述
1 文字已翻译。
2 翻译在语法和术语的准确性方面符合母语人士的标准。
3 根据用户界面语言的规则,对话框被正确调整大小并且对话框文本被连字符连接。
4 翻译后的对话框、状态栏、工具栏和菜单以不同的分辨率显示在屏幕上。它们不会包裹,也不会被切断。
5 菜单和对话加速器是独一无二的。
6 视觉布局与原生版的布局一致。例如,对话框元素按正确的 Tab 键顺序排列。

数据库测试

您可以通过多种方式在移动应用程序中存储数据。对于 Android,您可以选择通过服务器、共享首选项或 SQLite 存储数据。

SQLite是一种轻量级数据库,也常用于 Android 和其他操作系统。为了在 SQLite 中查看数据,您可能需要 root 设备或者您可以使用模拟器进行测试。Android Playstore 中有一些工具可以帮助您从此数据库中提取数据。

以下类型的测试应构成您的移动数据库测试的一部分 –

  • 数据库验证测试。
  • 数据库集成测试。
  • 数据库性能测试。
  • 程序和功能测试。
  • 触发测试。
  • CRUD(创建/读取/更新/删除)操作测试以确保它们可以在数据库上工作。
  • 测试数据库更改是否正确显示在应用程序的 UI 上。
  • 搜索和索引功能测试。

恢复测试

恢复测试用于确保在灾难发生后可以继续操作。恢复测试不仅验证恢复过程,而且验证该过程组成部分的有效性。

恢复测试是测试应用程序从崩溃、硬件故障和其他类似问题中恢复的能力的活动。下面给出的是可恢复性测试的清单。

Sr.No 描述
1 保留了足够的备份数据。
2 备份数据存储在安全位置。
3 记录恢复程序。
4 所有媒体文件已从还原点恢复
5 已恢复所有联系人
6 已成功恢复所有应用程序

并发测试

我们通常借助并发测试来确保多个用户可以同时并发访问一个程序。在为移动设备应用并发测试时,将只有单个用户。因此,它消除了对移动设备进行并发测试的需要。

可用性测试

通常,您会得到一个可以调整手机和网络摄像头以记录可用性评估会话的设备。

可用性测试

有像Applause这样的工具可用他们提供了一个有针对性的调查参与者群体,他们被精心挑选来测试您的应用程序。Applause 与其他此类服务的不同之处在于,您可以与 Applause 的专家进行咨询,然后他会根据咨询选择理想的参与者。

下面给出的是 GUI 测试的一般检查表。

Sr.No. 描述
1 该应用程序可以安装在设备上吗?
2 如果有来电,应用程序的行为是否符合设计/预期?
3 如果有短信传入,应用程序的行为是否符合设计/预期?
4 如果连接了充电器,应用程序的行为是否符合设计/预期?
5 如果充电器断开连接,应用程序是否按设计/预期运行?
6 如果设备进入睡眠模式,应用程序的行为是否符合设计/预期。
7 如果设备从睡眠模式恢复,应用程序的行为是否符合设计/预期。
8 如果设备从锁定屏幕恢复,应用程序的行为是否符合设计/预期?
9 如果设备倾斜,应用程序的行为是否符合设计/预期?
10 如果设备晃动,应用程序的行为是否符合设计/预期?
11 如果本地消息来自另一个应用程序(想想:日历提醒、待办事项等),应用程序的行为是否符合设计/期望。
12 如果推送消息来自另一个应用程序(想想:twitter 提及、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 是一个开源测试框架,用于开发功能、系统和验收测试场景。它与硒非常相似。

  • UIAutomator – UIAutomator 是 Google 的一个测试框架,它提供对原生 Android 应用程序和游戏的高级 UI 测试。它有一个包含 API 的 Java 库来创建功能性 UI 测试,还有一个执行引擎来运行测试。

  • 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 自动化– 对于更典型的功能测试(或黑盒测试),您将在其中编写模拟最终用户导航您的应用程序的代码,有 UI 自动化。UI 自动化由 Apple 提供,是 Apple 认可的执行 iOS 功能测试的方式。

  • FRANK – 适用于 iOS 的 BDD – 如果您想在 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 技术网下载 JDK 和 JRE

  • 接受许可协议。

  • 安装 JDK 和 JRE。

  • 设置环境变量,如下面的屏幕截图所示。

环境变量

第 2 步– 从Android Studio下载Android Studio

  • 双击 exe 并运行安装程序。
  • 继续使用所有默认选项。
  • 设置 ANDROID_HOME。

第 3 步– 安装 Android 图像和工具。

  • 单击 SDK 管理器 –

SDK管理器

  • 选择必要的包。例如,如果我们正在为 Android 4.4.2 构建应用程序,请确保在“工具”部分下检查以下包 –

    • Android SDK 工具修订版 22.6.3
    • Android 平台工具修订版 19.0.1
    • Android SDK 构建工具修订版 19.1

第 4 步– 创建 Android 虚拟设备。

  • 打开 Android Studio 并单击工具栏中的 AVD Manager。AVD 允许我们测试和运行我们的 Android 应用程序。

AVD经理

  • 对 Nexus5 AVD 使用以下设置 –

    • 设备 – Nexus 5 (4.95, 1080 x 1920; xxhdpi)
    • 目标 – Google APIs x86 (Google Inc.) – API 级别 19
    • (确保选择名称中包含 Google API 的目标。)
    • CPU – 英特尔凌动 (x86)
    • 选中使用主机 GPU 框
    • 单击确定
  • 您现在应该会在 AVD 管理器中看到您创建的 AVD,您可以在其中启动、删除它或创建另一个!

第 5 步– Robotium Jar 文件从RobotiumTech下载 Robotium Jar 文件

使用 Robotium 测试应用程序

要使用 Robotium 测试应用程序,请按照以下步骤操作 –

步骤 1 – 在 Android Studio 中创建一个名为“RobotiumTest”的测试项目。

机器人测试

选择所有默认选项,直到您到达主页。

第 2 步– 将 Robotium jar 文件复制到项目的 Lib 文件夹中。

机器人 Jar 文件

第 3 步– 在src文件夹下的 build.gradle 文件中添加依赖项

androidTestCompile ‘com.jayway.android.robotium:robotium-solo-5.5.3’

第 4 步– 同步 Gradle。

同步 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 Framework

Selendroid 是一个测试自动化框架,用于测试 Android 原生和混合应用程序。Selendroid 测试是使用 Selenium Webdriver 客户端 API 编写的。

Selendroid 的好处

  • 与 JSON Wire Protocol/Selenium 3 Ready 完全兼容。

  • 无需修改被测应用程序即可使其自动化。

  • 使用内置的 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 测试应用程序

要使用 Selendroid 测试应用程序,请按照以下步骤操作 –

步骤 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 浏览器并导航到:http://localhost:4444/wd/hub/status

第 8 步– 创建一个 Java 项目;在构建路径中添加 Selendroid 独立库、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("[email protected]"); 
      
      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 规范中,所以应该是面向未来的。

  • 它支持安卓和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 管理器 –

SDK管理器

  • 选择必要的包。例如,如果我们正在为 Android 4.4.2 构建应用程序,请确保在“工具”部分下检查以下包 –

    • Android SDK 工具修订版 22.6.3
    • Android 平台工具修订版 19.0.1
    • Android SDK 构建工具修订版 19.1

第 4 步– 创建 Android 虚拟设备 –

  • 打开 Android Studio 并单击工具栏中的 AVD Manager。AVD 允许我们测试和运行我们的 Android 应用程序。

AVD经理

  • 对 Nexus5 AVD 使用以下设置 –

    • 设备:Nexus 5(4.95、1080 x 1920;xxhdpi)

    • 目标:Google APIs x86 (Google Inc.) – API 级别 19

    • 确保选择名称中包含 Google API 的目标。

    • CPU:英特尔凌动 (x86)

    • 选中使用主机 GPU 框

    • 单击确定。

  • 您现在应该会在 AVD 管理器中看到您创建的 AVD,您可以在其中启动、删除它或创建另一个!

第 5 步– 从Appium下载 Appium jar 文件

使用 Appium 测试应用

要使用 Appium 测试应用程序,请按照以下步骤操作 –

步骤 1 – 在 Android Studio 中创建一个名为“RobotiumTest”的测试项目。

机器人测试

选择所有默认选项,直到您到达主页。

第 2 步– 将 Appium jar 添加到您的项目中。点击 Project → App → 复制 lib 中的所有 jars。选择除Selenium、Java客户端和Junit Jar之外复制的jar包,然后右键单击它并单击“添加为库”。

第 3 步– 单击应用程序中的 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 的先决条件是 XCode 4.2。此外,还需要一些命令行工具,例如 brew update && brew install imagemagick && brew install coffee-script。

如何使用西葫芦

  • gem 安装 zucchini-ios

  • Zucchini 不涉及对您的应用程序代码进行任何修改。您不妨将 Zucchini 测试保存在一个单独的项目中。

  • 从创建项目脚手架开始

  • 西葫芦生成–project /path/to/my_project

  • 为您的第一个功能创建功能脚手架

  • 西葫芦生成 –feature /path/to/my_project/features/my_feature

  • 通过修改features/my_feature/feature.zucchinifeatures/support/screens/welcome.coffee开始黑客攻击

  • 或者,查看 zucchini-demo 项目,其中包含围绕 Apple 的 CoreDataBooks 示例的易于探索的 Zucchini 设置。

在设备上运行

  • 将您的设备添加到features/support/config.yml

  • udidetect工具就派上用场了,如果你打算从时间将设备添加到时间- udidetect -z

    ZUCCHINI_DEVICE=”我的设备” zucchini run /path/to/my_feature

  • 在 iOS 模拟器上运行。我们强烈建议您在真实硬件上运行您的 Zucchini 功能。但是,如果必须,您可以在 iOS 模拟器上运行它们。

    • 首先,修改您的features/support/config.yml以包含编译应用程序的完整路径。例如,

      应用程序:/Users/vaskas/Library/Developer/Xcode/DerivedData/CoreDataBooks-ebeqiuqksrwwoscupvxuzjzrdfjz/Build/Products/Debug-iphonesimulator/CoreDataBooks.app

    • 其次,将“iOS 模拟器”条目添加到设备部分(不需要 UDID),并确保根据您的 iOS 模拟器设置提供“屏幕”的实际值 –

  • 像这样运行 –

    ZUCCHINI_DEVICE=”iOS 模拟器” zucchini run /path/to/my_feature

结果显示

结果显示

觉得文章有用?

点个广告表达一下你的爱意吧 !😁