Mobile Testing 简明教程

Mobile Testing - Quick Guide

Mobile Testing - Overview

在我们开始实际教程之前,让我们来进行一些有趣的活动。看看下面的列表。你很容易从这些我们今天在忙碌和紧张生活中常常不得不面对的基本任务中找到共鸣 −

  1. 我想支付我的电费。

  2. 我需要紧急联系我的经理并提交我的报告。

  3. 我想为我的孩子买新衣服,但我没有时间去商店。

  4. 哦…​是晚上 10 点了;我的航班快迟到了。我的出租车在哪里?

  5. 我第一次来到这座城市;我应该预订哪家酒店?

现在回答你自己。你需要什么才能在几秒钟内完成这些活动?答案是 −

  1. A smartphone,

  2. Internet connectivity, and

  3. 一款可以完成工作的手机应用。

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

有一个关于 Gowalla 的众所周知的事件。数百万人享受这个始于 2007 年并于 5 年后停用的基于位置的社交网络。很多问题阻碍了 Gowalla 吸引大众用户。浮出水面的首要原因之一是“办理入住手续并不那么用户友好”。

为了拥有一个成功的移动应用,我们需要理解开发一个好的移动应用并不是唯一的要求。一款移动应用需要经过彻底的测试,以获得用户的好感。毕竟,正是用户体验让任何一款软件获得了成功。

Mobile Testing - Platforms

在开始移动测试之前,建议了解移动平台的基础知识。它主要包括移动设备的操作系统、设备类型和移动应用类型。充分了解这些知识将帮助我们在长期内执行可靠测试规划。

Mobile Operating Systems

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

Operating System

Developed by

Popularity (Low, Medium, High)

Latest available version

Android

Google Inc

High

Lollipop, Android 5.0-5.1

iOS

Apple Inc

High

iOS 8.X

Blackberry

Blackberry Ltd

Low

Blackberry 10.2.1

Windows

Microsoft Inc

Medium

Windows 10 Mobile

Symbian

Symbian Foundation

Low

Discontinued

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

mobile os

Mobile Testing - Device Types

移动设备通常都是手持计算机。根据物理尺寸、硬件和软件功能、用途等特征,移动设备具有许多变种。

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

Device

Tablets

E-book Readers

Smartphones

What it is

平板电脑是便携式计算机设备。与传统计算机不同,平板电脑没有键盘或鼠标,但整个屏幕都是触摸感应的。

电子书阅读器 - 也称为电子阅读器 - 类似于平板电脑,只是它们主要用于读取电子书(数字可下载图书)。

智能手机是一种功能强大的移动电话,它除了提供电话服务外,还被设计用来运行多种应用。

Used for

几乎所有我们可以使用传统计算机或台式机完成的工作。

Reading e-books

浏览网页、观看视频、阅读电子书和玩游戏

Example

Samsung Tablets

Amazon Kindle、Barnes & Noble Nook。

索尼智能手机、三星智能手机、苹果 iPhone。

Native Vs Hybrid Vs Mobileweb

在进行测试计划时必须考虑的一个关键因素是检查移动应用程序类型。您主要会遇到三种类型的移动应用程序:移动网络、原生应用程序和混合应用程序。此分类基于开发工作和应用程序重新分发策略。让我们详细了解每个应用程序。

Mobile Web

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

  1. ExampleTutorials Point

  2. Benefits −易于访问。易于开发 − 开发响应式设计和调整内容以在较小屏幕/硬件上正确显示,将使任何桌面网站对移动设备友好。易于更新 − 只需在一个位置更新,所有用户即可自动访问该网站的最新版本。与原生或混合应用程序相比,无需安装。

  3. Downside −移动网站无法使用某些功能。例如,网站中无法访问文件系统和本地资源。许多现有网站不支持离线功能。用户不会在其主屏幕上拥有此应用程序的图标作为持续提醒。网站只能在网络浏览器中打开。原生应用程序和混合应用程序会出现在 App Store 和 Google Play 上,而网络应用程序不会。因此,再分发并无多大的意义。

Native App

原生应用程序专门针对一个平台开发。它可以通过应用程序商店(例如 Google Play 商店或 Apple 的 App Store)进行安装。

  1. Example − Whatsapp, Facebook.

  2. Benefits −原生应用程序驻留在设备上,并通过设备主屏幕上的图标访问。它们可以充分利用所有设备功能 − 它们可以使用摄像头、GPS、加速器、指南针、联系人列表等。它们还可以合并手势(标准操作系统手势或新应用程序定义的手势)。原生应用程序可以使用设备的通知系统,并可以离线工作。发布商可以使用推送通知,在每次发布新内容或需要其注意时向用户发出提醒。原生应用程序维护每个操作系统的 UI 设计,因此,它们提供了最佳的用户体验。例如,原生应用程序在 Android 中可以具有靠左对齐的标题,在 iOS 中具有居中对齐的标题。再分发很简单,因为它可以应用商店中找到。

  3. Downside −构建应用程序的高昂成本:为一个平台开发的原生应用程序将无法在另一个平台上运行。为 Android 构建的应用程序将无法在 iOS 上运行。我们需要为 iOS 构建一个完全不同的应用程序。由于这个原因,我们需要维护应用程序的多个版本。即使你可能发布原生应用程序,但你也会希望良好地维护该移动网站,因为移动设备带来了更多的流量。因此,维护成本更高。

Hybrid App

混合应用程序是一种以应用程序格式展示现有网站内容的方法。它们可以很好地描述为 Web 应用程序和原生应用程序的混合物。

  1. Example − Instagram, Wikipedia.

  2. Benefits −开发混合应用程序比开发原生应用程序便宜。它可以构建为跨平台的,即降低应用程序开发成本。维护简单,因为没有许多版本需要维护。它可以利用设备中的一些可用功能。它可以在应用程序商店中找到,这使得分发变得简单。它仅在一个应用程序中嵌入了一个浏览器。

  3. Downside −与原生应用程序相比,图形对操作系统不太适应。混合应用程序比原生应用程序慢。

Mobile Testing - Device Vs Application

Device Testing

通常进行此类测试是为了确保移动设备的质量。测试包括对移动设备进行硬件和软件测试。我们将在本文中讨论通常在移动设备上执行的不同类型测试。

Unit Testing

单元测试是指由开发人员测试移动设备开发阶段的部分内容。它可能包括硬件测试、软件测试和机械测试。

Factory Testing

工厂测试是对移动设备进行的一种健全性检查。它是自动进行的,以验证是否存在由制造或组装引起的缺陷。它主要包括以下测试 −

  1. Mobile application testing

  2. Hardware testing

  3. Battery (charging) testing

  4. Signal receiving

  5. Network testing

  6. Protocol testing

  7. Mobile games testing

  8. Mobile software compatibility testing

Certification Testing

认证测试是在移动设备投放市场前的检查。

Application Testing

移动应用测试是一个过程,通过该过程,针对手持移动设备开发的软件应用会接受功能性、可用性和一致性的测试。有不同类型的测试可以在移动设备上执行。例如,

  1. Functional Testing

  2. Laboratory Testing

  3. Performance Testing

  4. Memory Leakage Testing

  5. Interrupt Testing

  6. Usability testing

  7. Installation testing

  8. Certification Testing

  9. Security Testing

Key Points

  1. 设备测试通常执行它自身,而移动应用程序测试涉及运行在所选设备上的应用程序。

  2. 当我们称之为设备测试时,硬件测试就成为其中的一部分。但在移动应用程序测试的情况下,它取决于被测应用程序是否需要硬件集成,在这种情况下会涉及硬件测试。

  3. 移动设备测试和移动应用程序测试都可以进行自动化。

Mobile Testing - Emulator Vs Simulator

在移动测试中有一点是不言自明的。要执行移动测试,你需要一个移动设备。这是为了了解我们的产品如何在给定的移动设备上运行和呈现。

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

为了执行这种检查,我们需要获取每一款此类设备,然后我们可以检查应用程序是否按照期望的那样执行。是的,你猜对了,作为一个产品所有者,肯定会觉得购买如此大量的移动设备并进行测试非常昂贵。那么是否有任何可行的智能替代方案?

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

让我们比较一下在仿真器/模拟器上测试与在真实设备上测试有何不同 −

Real Device

Emulator / Simulator

Price

获取真实设备将花费你很多钱。

它几乎是免费的,我们只需要下载并安装它们即可

Processing Speed

它的处理速度更快;但是网络延迟可能是正常的。

它比实际设备要慢。已经观察到,它比连接到本地网络或云中的真实设备的延迟更少。

Debugging

调试并不是那么容易。

它提供对应用程序的分步调试。此外,它还提供了一种有效的截屏方式。

Web-app Testing

网络应用程序可以按正常方式进行测试。

测试网络应用程序要容易得多。

Reliability

在真实设备上进行测试有一个主要优点,即它始终提供准确的结果。

它无法模拟所有类型的用户交互;因此,它有时可能会导致错误的结果。因此,在可靠性方面得分较低。

模拟器/仿真器无法模拟以下功能 −

  1. Mobile device battery

  2. Mobile device’s camera

  3. 难以模拟诸如来电和短信等中断。

  4. 算不上对移动设备内存使用情况的真实模拟。

接下来我们深入了解移动模拟器和移动仿真器。两者之间存在着特定的差异。下表列出了模拟器和仿真器之间的主要区别。

Emulator

Simulator

What it mimics

移动设备软件移动设备硬件移动操作系统

设备内部行为。它不会模拟硬件。

How to get it

通常由设备制造商提供。

通常由设备制造商或其他公司提供。

Internal structure

它使用机器级别的汇编语言编写。

它使用高级语言编写。

Debugging

它更适用于调试。

它不适用于调试目的。

Performance

仿真器非常慢。模拟真实硬件通常会使软件运行速度比本地运行速度慢。

Faster than emulators.

Example

Google’s Android SDK

Apple’s iOS Simulator

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

Mobile Testing - Application

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

Note - 为了更好地理解,我们假设我们正在测试一个用于在线航班订票系统的移动应用程序。

Functional Testing

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

示例测试场景 -

  1. 仅在所选日期验证是否显示所选出发地目的地的航班信息。

  2. 验证搜索结果中不包含过去日期。

Compatibility Testing

相容性测试是移动应用测试中涉及范围最广的部分。移动应用相容性测试的目的通常是为了确保应用的关键功能在特定设备上按预期运行。相容性本身只需要短短几分钟,还可以提前规划。

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

示例测试场景 -

  1. 验证在 Android 设备上成功执行航班搜索。

  2. 验证在 Apple iPad 上成功执行航班搜索。

Localization Testing

如今,大多数应用都设计为在全球范围内使用,因此非常重要的是关注区域性问题,例如语言、时区等。当用户更改时区时验证应用功能非常重要。必须考虑到,有时西方设计可能不适用于东方国家受众,反之亦然。

示例测试场景 -

  1. 验证使用不同语言(或者说,非英语语言)在移动应用中没有用户界面或数据截断问题。

  2. 验证时区更改对移动应用执行得平滑。

Laboratory Testing

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

示例测试场景 -

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

Performance Testing

移动性能测试涵盖客户端应用性能、服务器性能和网络性能。确保性能测试场景涵盖所有这些领域非常重要。借助性能测试工具,可以轻松识别现有网络、服务器和服务器端应用瓶颈(给定预定义的负载和事务组合)。

示例测试场景 -

  1. 验证航班信息查询仅耗费合理的时间。

  2. 验证在查询航班信息时,移动设备正常运行且不会挂起。

Stress Testing

压力测试是必须的,可以找出功能和用户界面测试中可能被忽视的异常、挂起和死锁。以下是压力测试的一些标准 -

  1. 尽可能向应用加载更多数据以尝试达到其断点。

  2. 重复执行相同操作。

  3. 以不同速度执行重复操作 - 非常快或非常慢。

  4. 长时间运行你的应用程序,既可以与设备交互,也可以仅仅让它处于空闲状态,或者执行一项需要很长时间的自动任务,例如幻灯片播放。

  5. 向你的应用程序随机发送屏幕点击和按键。

  6. 在你的设备上运行多个应用程序,以便你可以频繁在你的应用程序和其他设备应用程序之间切换。

示例测试场景 -

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

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

Security Testing

破解、认证和授权策略、数据安全、会话管理和其他安全标准的漏洞应作为移动应用程序安全测试的一部分来验证。应用程序应在通过网络认证用户时加密用户名和密码。

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

示例测试场景 -

  1. 验证应用程序不会在两个不同的移动设备上使用相同的用户凭据进行操作。

  2. 验证会话如果在 15 分钟以上保持不活动状态,是否会自动过期。

Memory Leakage Testing

与其他计算机相比,移动设备的内存非常有限,而且移动操作系统默认会终止使用过多内存并造成不良用户体验的应用程序。

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

示例测试场景 -

  1. 进行十次航班可用性检查,并记下每次检查的内存使用量。

  2. 使应用程序运行十分钟,并观察内存使用量是否保持稳定。

Power Consumption Testing

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

功耗测试可以通过手动进行;市场上也有一些免费工具,如 Trepn Profiler、Power Tutor 和 Nokia Energy Profiler。这些应用程序可以显示智能手机或平板电脑上的实时功耗。

示例测试场景 -

  1. 使用移动应用程序搜索航班的可用性,并检查功耗是否保持在最低限度。

  2. 保持移动应用程序处于理想状态;验证当应用程序没有活动发生时没有功耗。

Interrupt Testing

应用程序在运行时可能会遇到各种中断,如来电或网络覆盖中断和恢复。这可以再次区分为 −

  1. 收发短信和彩信

  2. Incoming and Outgoing calls

  3. Incoming Notifications

  4. Battery Removal

  5. 数据传输的电缆插入和移除

示例测试场景 -

  1. 验证航班可用性检查在收到来电后暂停,并在来电后恢复。

  2. 验证用户在使用 App 时可以拒绝来电,并在此后重新启动同一 App。

Usability Testing

可用性测试根据以下三个目标人群标准评估应用程序:

  1. Efficiency − 指定用户在特定环境中实现特定目标的准确性和完整性。

  2. Effectiveness − 所耗费的资源,与实现目标的准确性和完整性相关。

  3. Satisfaction − 工作系统让其用户和其他受其使用影响的人感到舒适并可接受。

在应用程序设计早期进行可用性测试非常重要,不要仅在应用程序完成时才进行。可用性测试需要用户的大量参与,并且输出结果可能会影响应用程序设计,而在项目的后期阶段更改起来非常困难。

示例测试场景 -

  1. 航班可用性检查应该在首页上。

  2. 赞助广告不应显示在内容中间。

Installation Testing

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

示例测试场景 -

  1. 验证安装过程顺利且不会花费很长时间。

  2. 通过企业应用商店验证安装是否成功。

Uninstallation Testing

卸载测试的基础知识可以概括为一行“卸载应该一次性清除与 App 相关的数据”。

示例测试场景 -

  1. 验证卸载后所有与应用程序相关联的文件均已成功移除。

  2. 如果这是一个存储媒体文件的 App(如 Whatsapp 或 Facebook),则即使在卸载 App 后也应保留文件。

Updates Testing

我们应密切关注移动应用程序更新。用户经常抱怨更新后应用程序无法令人满意地工作。因此,在更新测试中,我们必须明确指出该 App 将按其以前的工作方式工作,这一点非常重要。简而言之,它不应破坏任何东西。移动应用程序更新可以通过两种方式进行: Automatic updateManual update

示例测试场景 -

  1. 验证应用程序在自动更新后成功运行。

  2. 验证更新进度正确显示。

Certification Testing

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

示例测试场景 -

  1. 验证应用程序在 iphone 上安装后是否遵守 ios 手机策略。

  2. 验证应用程序在 Android 上安装后是否遵守 Android 手机策略。

Mobile Testing - UI

假设我们正在使用一个移动应用程序,你碰巧碰到以下情况:

  1. Button alignment is missing.

  2. Text is getting trimmed.

  3. 日历控件被切掉了。

的确,对于任何用户来说,这都是一种令人不快的体验。为了确保我们为用户提供良好的体验,强烈建议进行移动 UI 测试。

测试计划中要探索的第一部分是用户界面。作为测试人员,你的任务是确认你的应用程序是否满足某些期望,例如:

  1. 设备的整体配色方案/主题

  2. 图标的样式和颜色

  3. 页面加载时的进度指示器

  4. 菜单以及它们如何被调用,以及它们包含的典型项

  5. 此设备上应用程序的整体响应能力

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

Screen Orientation / Resolution

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

如果你使用的是多列布局,你可能还想检查你的列是否对齐正确,并且在你访问者分辨率较低时仍可视。了解标准屏幕分辨率也很重要:

  1. 640 × 480

  2. 800 × 600

  3. 1024 × 768

  4. 1280 × 800

  5. 1366 × 768

  6. 1400 × 900

  7. 1680 × 1050

Available Tools

市场上有不少工具可以让移动 UI 测试变得更加流畅和简单。例如:

  1. Google chrome extension

  2. Screenfly

  3. Browser Stack

让我们进一步了解这些工具及其用途。

Google chrome extension

这是 Google Chrome 网络浏览器的一个免费功能。我们在这里给出了使用 Google Chrome 扩展程序测试移动网络的分步说明:

Step 1 −在“Google Chrome 网络浏览器”中打开要测试的网站。

Step 2 - 按 F12。它将打开开发者工具窗口,如下图截图所示。

developer tool window

Step 3 - 点击移动设备图标。请参阅以下屏幕截图。

mobile device icon

Step 4 - 选择要用来测试网站的移动设备。你可以选择不同的可用设备来执行用户界面验证。

ui verification

Screenfly

Screenfly 是一款免费且易于使用的工具。要使用此工具,只需在网络浏览器中键入 Quirktools 即可。你会看到以下画面。

screenfly

输入受测网站,然后点击 Go 。选择你想在其中查看网站的移动设备。

select mobile device

BrowserStack

这是执行移动用户界面测试的另一个好工具。它提供了令人惊叹的结果。尽管这是一款付费工具,但你可以通过使用有效电子邮件地址在 BrowserStack 上注册来获得免费试用版。

Touch Screens

Multi-Touch vs. Single Touch Screens

如果你的设备和应用程序支持多点触控功能(例如 iPhone 上的捏合缩放效果),请务必制作很多测试用例,这些用例涉及同时用多个手指触摸屏幕,尤其是在软键盘上输入时。

Long Touch vs. Short Touch

虽然在触屏设备上没有双击的概念(不过如果你的应用程序中专门实现了双击,则会有这个概念),但有些设备(例如 Android 智能手机)会区分长按和短按。按住某项内容会在屏幕中间调出一个快捷菜单,而短按同一项内容会自动执行该快捷菜单中的第一个操作。

Button Size and Position

确保按钮和图标足够大,并且离屏幕边足够远,这样大拇指可以轻松点击。

Soft & Hard Keys

Soft Keyboards

通常,对于最终用户来说,有各种对他们很重要的特殊情况和边缘情况。

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

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

  3. 软键盘是否可以轻松关闭和重新显示?

  4. 软键盘和硬键盘是否可以互换使用(如果设备同时有这两个键盘)?

Hard Keys

请务必制作很多围绕设备可用硬键盘(例如开始、主页、菜单和返回)的使用进行的测试。所有这些都应与你的应用程序进行交互,类似于它们与设备的原生应用程序进行交互的方式。

Trackballs, Track wheels & Touchpads

如果你的设备没有触摸屏,那么验证用户屏幕导航尽可能省力就更加重要。在这些情况下,用户可能依靠轨迹球、滚轮或触控板在各个对象之间移动。

Mobile Testing - Planning & Tools

测试手机、平板电脑和电子阅读器之类的移动设备需要特殊的设备和方法。由于传统的桌面屏幕捕获软件不能充分捕获触摸交互,因此可用性操作人员一直使用策略性放置的摄像头来记录这些移动设备上的可用性测试交互。

Preparing to Perform Mobile Device Testing

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

  1. Your timeframe and budget. 对时间范围和预算有良好的了解将帮助您根据需要确定哪些流程和设备最适合您。

  2. The physical setup of the space and how you will capture the test. 这可能从使用低保真度方案到使用专门的平台和摄像头设备和/或使用眼动追踪软件。

  3. Your target audience and devices. 使用网络分析来检查有多少移动用户访问网站、他们使用的设备以及他们的操作系统。了解此信息将帮助您了解要测试哪些设备。

测试计划后要涵盖的另一个重要方面是 test device management 。在大组织中,处理移动设备测试需要一种明智的方法来保护组织的机密数据。要做到这一点,您将需要一个安全软件。在下一节中,我们将更深入地了解设备管理工具。

Device Management Tools

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

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

市场上有许多可以执行此操作的工具。下表概述了一些流行工具及其功能。

Products

BlackBerry MDM

Citrix MDM

Dell MDM

IBM MDM

MobileIron MDM

SOTI MDM

Android

2.3+

Yes

Yes

Yes

2.3 through current

Yes

iOS

5.0+

Yes

Yes

Yes

4.0 through current

Yes

Windows Phone

BES10 不可用(BES12 的 WP 8+)

Yes

Yes

Yes

7 through current

Yes

BlackBerry

Yes, BBOS, BlackBerry 10

Yes

No

Yes

10 (through ActiveSync)

No

Symbian

No

Yes

No

Yes

No

No

Windows OS

No

Yes

Yes

Yes

8.1 RT/Pro

No

Mac OSX

No

Coming soon

Yes

Yes

Lion, Mountain Lion

Yes

Other

No

Windows Mobile

None

Office 365, Gmail, Lotus

None

Windows Mobile, CE, Embedded

Configure/disable WiFi

Yes

Yes

Yes

Yes

Yes

Yes

Device Encryption

Yes

Yes

Yes, device type dependent

Yes

Yes

Yes

Email Encryption

Yes

Yes

Yes, device type dependent

Yes

Yes

Yes

Multifactor authentication

Yes

Yes

No

Yes

Yes

Yes

Malware detection

No

No

No

Yes

Yes with partner integration

Yes

Firewall

Yes

No

No

Yes

Yes with partner integration

Yes

将用户数据与公司数据分开

Yes

Yes

Yes

Yes

Yes

Yes

Mobile Testing - Hardware Perspective

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

Hardware Components

如果您拿任何一部手机,它大多会包含以下部件。

Circuit Board

它可以看作是控制其所有活动的手机大脑。

circuit board

Touch screen display

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

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

  1. Resistive Touchscreen − 它有两层(由微小的间隙隔开),形成屏幕上的覆盖层。当手指放在屏幕上的任何点上时,两者形成接触,并获取坐标。它们相对便宜,而且正好可以在大多数预算手机上找到。缺点是需要一定的压力才能注册触摸。随着时间的推移,屏幕确实会发生一定程度的损坏。

  2. Capacitive Touchscreen − 它有整个屏幕涂有一层电容物质,该物质保持一定量的电荷。当导电物体(如手指)放在屏幕上时,该点上的电容会发生变化,从而获得坐标。电容式触摸屏在寒冷气候中反应不佳,在这种气候中,人的手指不会导致电容发生变化,因此在这种情况下建议使用触控笔。然后还有 multi-touch touchscreens ,其中几乎可以准确地指出所有手指。这导致人们可以在触摸屏上执行的手势数量增加。

Memory Card

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

memory card

SIM Card

SIM 卡提供个人移动性,以便用户无论终端位置和使用特定终端如何,都可以访问所有已订阅的服务。您需要将 SIM 卡插入另一部 GSM 手机,才能在那部手机上接听电话、拨打电话或接收其他已订阅服务。

sim card

Battery

智能手机根据手机的制造商、尺寸和功能运行在各种不同的电池上。对于那些严重依赖智能手机的人来说,电池的续航时间尽可能长很重要。这样就可以消除频繁为其充电的需要,而且在最需要的时候不太可能用光电量。

battery

UDID for iOS

每部 iPhone 或 iPod Touch 都有一个唯一设备标识符 (UDID),这是一种针对您的设备的 40 个字母和数字序列。它就像一个序列号,但很难猜测。它看起来像这样 − 2b6f0cc904d137be2e1730235f5664094b831186。

How to find you UUID?

  1. 将您的 iOS 设备连接到您的计算机。

  2. Open iTunes.

  3. 在 iTunes 的左侧栏中,点击“设备”下的设备名称。

  4. 在窗口的主部分点击设备的序列号。

  5. 序列号应随后更改为设备的 UDID。

uuid

Provision Profile for iOS

预置文件是唯一的数字实体集合,它将开发者和设备绑定到授权的 iPhone 开发团队,并使设备可用于测试。必须在每个要运行应用程序代码的设备上安装一个开发预置文件。

How to create a provision profile for iOS?

  1. 运行 Google Chrome、Mozilla Firefox 或 Safari。

  2. 在 iOS 开发中心,点击证书、标识和配置文件。

  3. 在 iOS 应用面板中,点击预置文件。

  4. Click +.

  5. 选择 iOS 应用开发,然后点击继续。

  6. 选择一个应用 ID 以与预置文件关联,然后点击继续。

  7. 若要在多个应用中使用一个开发预置文件,请选择一个通配符应用 ID(如果可用)。

  8. 为预置文件中的开发选择一个或多个证书,然后点击继续。

  9. 仅列出开发证书。

  10. 为预置文件中的开发选择一个或多个设备,然后点击继续。

  11. 输入配置文件名称,然后点击生成。

  12. (可选)点击下载以下载预置文件。

How to add your provisioning profile in AppBuilder?

  1. 点击齿轮图标,然后选择选项。

  2. 选择 iOS → 预置文件。

  3. Click Import.

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

Device Options & Preferences

你可以为任意文本、动态搜索、图像或显示广告指定设备首选(移动或全部)。

如果一个广告组包含移动优先广告和普通广告,则移动设备上只展示移动优先广告,而电脑和平板电脑上只展示普通广告。

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

Mobile Device Testing - Types

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

Network Connections

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

Sr.No.

Description

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 Card Interactions

下表提供了检查 SD 卡与手机交互的首要功能的清单。

Sr.No.

Description

1

应用程序是否可以安装在设备上?

2

如果来电,应用程序是否按设计/期望的行为?

3

如果来短信,应用程序是否按设计/期望的行为?

4

如果连接了充电器,应用程序是否按设计/期望的行为?

5

如果断开了充电器,应用程序是否按设计/期望的行为?

6

如果设备进入睡眠模式,应用程序是否按设计/期望的行为?

7

如果设备从睡眠模式恢复,应用程序是否按设计/期望的行为?

8

如果设备从锁定屏幕恢复,应用程序是否按设计/期望的行为?

9

如果设备倾斜,应用程序是否按设计/期望的行为?

10

如果设备晃动,应用程序是否按设计/期望的行为?

11

如果来自其他应用程序的本地消息(如:日历提醒、待办事项等),应用程序是否按设计/期望的行为?

12

如果来自其他应用程序的推送消息(如:推特提及、Whatsapp 消息、Wordfeud 邀请等),应用程序是否按设计/期望的行为?

13

应用程序是否正确地与 GPS 传感器交互(开关、检索 GPS 数据)?

14

设备上所有按钮或键的功能是否已针对此应用程序定义?

15

验证没有定义的功能的按钮或键在激活应用程序时不会对应用程序产生意外行为。

16

如果设备上有一个真正的“后退”按钮,则“后退”按钮是否会将用户带到前一个屏幕?

17

如果设备上提供了真正的“菜单”按钮,此菜单按钮是否显示该应用程序的菜单?

18

如果设备上提供了真正的“主页”按钮,此主页按钮是否可以将用户带回设备的主屏幕?

19

如果设备上提供了真正的“搜索”按钮,此按钮是否可以在应用程序内获得某种形式的搜索功能?

20

如果收到“电量低”消息,应用程序是否会按设计/预期的方式运行?

21

如果关闭设备上的声音,应用程序是否会按设计/预期的方式运行?

22

如果设备处于飞行模式,应用程序是否会按设计/预期的方式运行?

23

是否可以将应用程序从设备中卸载?

24

重新安装后,应用程序是否按预期运行?

25

是否可以在应用商店中找到该应用程序?(在上线后检查)

26

如设计和预期的那样,应用程序是否可以通过多任务处理在设备上切换到不同的应用程序?

27

当使用屏幕保护膜时,所有触摸屏位置(按钮)是否有效?

Bluetooth Testing

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

Sr.No.

Description

1

用户能够搜索范围内所有可用设备。

2

数据和语音传输都可以通过使用短程网络来发送。

3

数据和语音传输都可以通过使用短程网络来接收。

4

用户能够随时断开连接。

5

关闭蓝牙时会要求断开当前连接。

6

蓝牙的最大范围为 10 米。

7

通过移动电话,您可以发送图片、视频、交换名片,还可以将文件传输到您的 PC。

8

(设备配对成功),这是一条用于确认用户已成功配对两个蓝牙设备的消息。

9

不可发现模式,设备不会响应发现请求,则称其为不可发现模式。

10

不可发现模式,设备不会响应发现请求,则称其为不可发现模式。

11

不可配对模式,设备不接受配对,则称其处于不可配对模式。

12

密码,密码是用户定义的密码,需要从任何其他设备连接到某一设备。强烈建议尽可能使用密码,以避免未经授权访问您的蓝牙设备。

13

认证 − 验证通信链路另一端的身份。在蓝牙技术中,这是通过基于密码和配对的认证过程实现的。

14

未找到设备,这是一条错误消息,当在范围内搜索其他设备时没有找到任何设备时会出现。

15

空闲模式,当设备未与其他设备建立连接时,它处于空闲模式。在此模式下,设备可以发现其他设备。

16

已知设备测试,一种设备已经为另一设备所知。或者设备以前已配对,或者存储了已知设备的信息。

Wi-Fi Testing

测试手机 WiFi 连接是一种确保互联网以服务提供商承诺的速度运行的好方法,但您不必仅在台式机上运行这些测试。手机 WiFi 测试是测试 WiFi 信号在您家或办公室各个地方的功率的理想方法。以下为您提供移动设备的 WiFi 测试清单。

Sr.No.

Description

1

如果通过 Wi-Fi 连接到互联网,应用程序是否按规格执行?

2

如果应用程序超出网络范围,应用程序是否按应用程序的规格执行?

3

当应用从网络外返回到网络范围时,它是否会恢复工作?

4

如果应用在网络(Wi-Fi、3G、2G)之间切换,会发生什么情况?

5

应用程序是否使用标准网络端口(邮件:25、143、465、993 或 995 HTTP:80 或 443 SFTP:22)连接到远程服务,因为某些提供商会阻止某些端口。

How to Run a Mobile Phone WiFi Speed Test on your Smartphone

在智能手机上运行 WiFi 速度测试是一项简单的任务。最方便的是在智能手机的移动网络浏览器中运行的速度测试。只需按照屏幕上的简单提示开始测试。如果在线测试没有保存您的结果,请在测试完成后截取屏幕截图以提供历史记录。

一些测试作为 iOS 和 Android 平台的应用提供。要使用这些应用,请下载您想要的应用。然后按照说明运行测试并保存您的结果。

Tools to Perform Speed Test

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

wifi speed test

WiFi Speed Test − 它与 Android 手机兼容。这是一个付费工具。借助此工具,您可以测试本地(LAN)网络的速度。可以在无线(WiFi)或有线网络上进行测试。

Localization & Globalization

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

Sr.No.

Description

1

Text is translated.

2

翻译符合母语人士的语法和术语准确性标准。

3

对话框经过适当调整大小,并且对话框文本根据用户界面语言的规则进行了连字连接。

4

翻译后的对话框、状态栏、工具栏和菜单在不同分辨率下都适合屏幕。它们不会换行,也不会被截断。

5

菜单和对话框加速器是独一无二的。

6

可视化布局与本机版本的布局一致。例如,对话框元素位于适当的选项卡顺序中。

Database Testing

有不同的方法可以存储数据在移动应用程序中。对于 Android,你可以选择存储你的数据在服务器之上,共享偏好或 SQLite。

SQLite 是一个轻量级数据库,它通常在 Android 和其他操作系统中使用。为了在 SQLite 中查看数据,你可能需要植入设备的 root 或者可以使用模拟器进行测试。Android Playstore 中有一些工具会帮助你从这个数据库中提取数据。

以下类型的测试应该形成你的移动数据库测试的一部分 −

  1. Database validation testing.

  2. Database integration testing.

  3. Database performance testing.

  4. Procedure and function testing.

  5. Trigger testing.

  6. CRUD(创建/读取/更新/删除)操作测试,以确保它们将在数据库上工作。

  7. 测试数据库更改在应用程序的 UI 上正确显示。

  8. 搜索和索引功能测试。

Recovery Testing

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

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

Sr.No

Description

1

保留足够的备份数据。

2

备份数据存储在安全的位置。

3

Recovery procedures are documented.

4

所有媒体文件都已从还原点恢复

5

所有联系人已恢复

6

所有应用程序已成功恢复

Concurrency Testing

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

Usability Testing

通常你会得到一个装置,其中手机和网络摄像头可以调整为记录可用性评估会话。

usability testing

有像 Applause 这样的工具。它们提供了一个有针对性的调查参与者组,他们经过精心挑选来测试你的应用程序。Applause 与其他此类服务的区别在于,你可以与 Applause 的专家进行咨询,然后根据咨询选择理想的参与者。

下面是 GUI 测试的一般清单。

Sr.No.

Description

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

当使用屏幕保护膜时,所有触摸屏位置(按钮)是否有效?

Mobile Testing - Frameworks Overview

一个 testing framework 或更确切地说,一个 testing 自动化 framework 是一个执行环境,用来执行 automated tests 。这是将自动化测试的整个系统。它被定义为构成工作平台或支持自动化测试的一组假设、概念和实践。

测试框架负责 −

  1. 定义表示期望的格式

  2. 创建机制来连接或驱动被测应用程序

  3. 执行测试并报告结果

Framework Architecture

测试框架的一般架构如下 −

framework architecture

对于移动测试自动化,我们需要一个良好的移动自动化测试框架。在该框架之上,我们可以构建我们的测试用例。移动自动化测试框架可以按移动设备的操作系统进行隔离。在后面的章节中,我们将讨论两种类型的移动测试框架:Android 测试框架和 iOS 测试框架。

Mobile Testing - Android Frameworks

市场上有很多 Android 测试框架可用。让我们来看看前 5 个。

  1. Robotium − Robotium 是一个开源测试框架,用于开发功能、系统和验收测试场景。它与 Selenium 非常相似。

  2. UIAutomator − UIAutomator 是 Google 提供的测试框架,它为 Android 原生应用和游戏提供了高级 UI 测试。它有一个包含 API 的 Java 库,用于创建功 UI 测试,还包括一个执行引擎来运行测试。

  3. Appium − Appium 是一个开源测试自动化框架,用于测试原生和混合应用以及移动 Web 应用。框架内的 Appium 库函数调用运行在后台的 Appium 服务器,该服务器操作连接的设备。

  4. Calabash - Calabash 是一款功能测试框架,可用作 iOS 和 Android 功能测试。理论上讲,它一定是最易于使用的一个框架,甚至非开发人员也应能够使用它创建功能测试。

  5. Selendroid − Selendroid 是该领域的相对新秀,可用于功能测试你的 Android 应用。显然,如果你习惯于 Selenium,Selendroid 应该是一种简单的方法,可利用你的知识为 Android 创建功能测试。

Mobile Testing - IOS Frameworks

与 Android 测试框架类似,市场上有许多 iOS 测试框架。我们将在此处讨论其中的几个流行框架。

  1. Appium - Appium 是一款针对本机应用、混合应用和移动网络应用的开源测试自动化框架。Appium 框架内部的库函数调用后台运行的 Appium 服务器,后者操作连接的设备。

  2. Calabash - Calabash 是一款功能测试框架,可用作 iOS 和 Android 功能测试。理论上讲,它一定是最易于使用的一个框架,甚至非开发人员也应能够使用它创建功能测试。

  3. Zucchini - Zucchini 是一款针对 iOS 应用程序的开源视觉功能测试框架,它是基于 Apple UIAutomation 开发的。

  4. UI Automation - 对于更加典型的功能测试(或黑盒测试),你要在此类测试中编写代码以模拟最终用户导航你的应用,UI Automation 正是这种测试。UI Automation 由 Apple 提供,是进行 iOS 功能测试的 Apple 认可方式。

  5. FRANK – BDD for iOS - 如果你希望在 iOS 中执行端到端测试,还希望使用 BDD 和 Cucumber,不用担心 - 有一款名为 Frank 的工具可以使用 Cucumber 创建验收测试和需求。

Comparison between different testing frameworks

testing frameworks

Mobile Testing - Robotium Framework

Robotium 是一个开源测试框架,用于为 Android 应用编写自动灰盒测试用例。借助 Robotium,测试用例开发者可以编写功能、系统和验收测试场景,涵盖多个 Android 活动。

Robotium 可以用于测试源代码可用的应用和仅提供 APK 文件的应用。

Benefits of Robotium

  1. 书写简单、代码更短。撰写可靠测试案例所需时间最少。

  2. 在对正在测试的应用了解最少的情况下,您都可以高效地编制出测试案例。

  3. 该框架会自动处理多个 Android 活动。与标准工具化测试相比,测试案例的可读性得到了大幅提高。

  4. Automatic timing and delays.

  5. Automatically follows current Activity.

  6. Automatically finds Views.

  7. 会自动进行决策(例如何时滚动等)。

  8. 无需修改 Android 平台。

  9. Test execution is fast.

  10. 由于在运行时绑定 GUI 组件,测试案例更加健壮。

  11. 能够与 Maven 或 Ant 平滑集成。

Drawbacks of Robotium

  1. Robotium 无法处理 Flash 或 Web 组件。

  2. 它一次只能处理一个应用程序。

  3. 它无法使用 Robotium 模拟在软键盘上单击(需要使用“enterText()”在 EditText 字段中输入文本)。

  4. Robotium 无法与状态栏通知交互,即无法下拉通知区域并单击指定的通知。

  5. 速度可能会有点慢,尤其是在较早的设备上运行时。

How to Use Robotium

Step 1 - 使用 Robotium 的前提条件是 Java SDK(最低 1.6)。如果您系统中尚未安装 Java,请按照以下步骤操作。

  1. Oracle Technology Network 下载 JDK 和 JRE

  2. Accept license agreement.

  3. Install JDK and JRE.

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

environment variable

Step 2 - 从 Android Studio 下载 Android Studio

  1. 双击 exe 并运行安装程序。

  2. 使用所有默认选项继续。

  3. Set the ANDROID_HOME.

Step 3 − 安装 Android 镜像和工具。

  1. 单击 SDK Manager −

sdk manager
  1. 选择必要的软件包。例如,如果我们正在构建一款适用于 Android 4.4.2 的应用程序,那么请确保在 Tools 小节中已选中下列软件包 −Android SDK 工具 rev 22.6.3Android 平台工具 rev 19.0.1Android SDK 构建工具 rev 19.1

Step 4 - 创建 Android 虚拟设备。

  1. 打开 Android Studio,然后单击工具栏中的 AVD Manager。AVD 允许我们测试和运行我们的 Android 应用程序。

avd manager
  1. 为 Nexus5 AVD 使用以下设置- 设备 - Nexus 5(4.95,1080 x 1920;xxhdpi)- 目标 - Google API x86(Google Inc.) - API 级别 19(确保在名称中选择了包含 Google API 的目标。)- CPU - Intel Atom (x86) - 勾选“使用主机 GPU”复选框 - 单击“确定”

  2. 你现在应该可以在 AVD Manager 中看到你创建的 AVD,在其中你可以启动它、删除它或创建另一个!

Step 5 - Robotium Jar 文件 - 从 RobotiumTech 下载 Robotium Jar 文件

Test an App with Robotium

若要使用 Robotium 测试应用,请按照以下步骤操作-

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

robotiumtest

选择所有默认选项,直至你到达主页面。

Step 2 − 将 Robotium jar 文件复制到项目的 Lib 文件夹。

robotium jar file

Step 3 − 在 src 文件夹下的 build.gradle 文件中添加依赖项。

androidTestCompile 'com.jayway.android.robotium:robotium-solo-5.5.3'

Step 4 − 同步 Gradle。

sync gradle

Step 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();
   }
}

Step 6 − 保存所有更改。确保不存在任何错误。

Step 7 − 现在,运行测试用例。如果测试用例成功,你应该看到以下输出!

display result

Mobile Testing - Selendroid Framework

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

Benefits of Selendroid

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

  2. 无需修改被测应用即可对其进行自动化。

  3. 使用内置 Android 驱动器 webview 应用测试移动网络。

  4. 用于自动化原生或混合应用的相同概念。

  5. 可以通过不同的定位器类型找到 UI 元素。

  6. 支持手势:高级用户交互 API。

  7. 现有模拟器会自动启动。

  8. Selendroid 支持硬件设备的热插拔。

  9. 作为节点完全集成到 Selenium Grid 中,用于扩展和并行测试。

  10. 支持多个 Android 目标 API(10 到 19)。

  11. 内置检查器,用于简化测试用例开发。

  12. Selendroid 可以在运行时用您自己的扩展进行扩展。

  13. Selendroid 可以同时与多个 Android 设备(模拟器或硬件设备)进行交互。

Drawbacks of Selendroid

本工具的缺点是它相当慢,在低于 4GB RAM 的某些机器上无法使用。

How to Use Selendroid

Step 1 - 使用 Robotium 的前提条件是 Java SDK(最低 1.6)。如果您系统中尚未安装 Java,请按照以下步骤操作。

  1. Oracle JavaSE 下载 JDK 和 JRE

  2. Accept license agreement.

  3. Install JDK and JRE.

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

environment variable

Step 2 − 从 SDK Android 下载 Android Studio(受文件大小影响,下载将花费一定时间)。

  1. 双击 exe 并运行安装程序。

  2. 使用所有默认选项继续。

  3. Set the ANDROID_HOME.

Step 3 − 从 Selendroid 下载 Selenium jar 文件和测试应用程序

  1. 下载 Selenium jar 文件和测试应用程序。

  2. 将其放置在任何文件夹中,如 D:\SelendroidJars。

Step 4 − 带有 USB 数据线的实体设备。

  1. 确保将设备通过 USB 数据线连接到工作站。

  2. 确保启用了 USB 调试模式(在设置 → 开发者选项中)。

Test an App with Selendroid

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

Step 1 − 安装 Eclipse。

Step 2 − 创建 Java 项目。

Step 3 − 将下载的 Selendroid jar 文件添加到新创建的项目中。

Step 4 − 将下载的 Selenium jar 文件添加到新创建的项目中。

Step 5 − 在 Eclipse 中配置 testNG。

Step 6 − 使用 USB 数据线将移动设备与系统连接起来。从设置中的开发者选项中设置 USB 调试模式。

Step 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

Step 8 − 创建 Java 项目;在构建路径中添加 Selendroid Standalone 库、Selenium jar 以及 JUnit 库。

selenium master

Step 9 − 在 Java 项目中创建包。

Step 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();
   }
}

Step 11 − 使用 testNG 运行配置运行类。

Mobile Testing - Appium Framework

Appium 是一个用于测试原生应用程序、混合应用程序和移动网络应用程序的开源测试自动化框架。它使用 WebDriver 协议驱动 iOS 和 Android 应用程序。

Advantages of Appium

  1. 它是免费且(几乎)开源的。

  2. 它有一个得到很好的支持和活跃的 Google 群组。

  3. 它包含在 Selenium 3 规格中,因此应该是面向未来的。

  4. 它支持 Android 和 iOS。

  5. 它不需要在设备上安装任何东西——不需要服务器或代码更改。

Drawbacks of Appium

  1. 不支持智能等待。

  2. 在 iOS 上,您每次只能在每台 Mac 上执行一项测试。

  3. Limited support for gestures.

  4. 对 Android < 4.1 的支持有限

How to Use Appium

Step 1 − 使用 Appium 的前提条件是 Java SDK(最低 1.6)。如果您在系统上未安装 Java,请按照下列步骤操作。

  1. Oracle JavaSE 下载 JDK 和 JRE

  2. Accept license agreement.

  3. Install JDK and JRE.

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

environment variable

Step 2 − 从 SDK 下载 Android Studio(由于文件大小,将花费一些时间)。

  1. 双击 exe 并运行安装程序。

  2. 使用所有默认选项继续。

  3. Set the ANDROID_HOME.

Step 3 − 安装 Android 镜像和工具。

  1. 单击 SDK Manager −

sdk manager
  1. 选择必要的软件包。例如,如果我们正在构建一款适用于 Android 4.4.2 的应用程序,那么请确保在 Tools 小节中已选中下列软件包 −Android SDK 工具 rev 22.6.3Android 平台工具 rev 19.0.1Android SDK 构建工具 rev 19.1

Step 4 − 创建 Android 虚拟设备 −

  1. 打开 Android Studio,然后单击工具栏中的 AVD Manager。AVD 允许我们测试和运行我们的 Android 应用程序。

avd manager
  1. 针对 Nexus5 AVD 使用以下设置 −设备:Nexus 5(4.95,1080 x 1920;xxhdpi)目标:Google API x86(Google Inc.)- API 级别 19确保在名称中选择带有 Google API 的目标。CPU:英特尔 Atom(x86)选中“使用主机 GPU”的复选框。单击确定。

  2. 你现在应该可以在 AVD Manager 中看到你创建的 AVD,在其中你可以启动它、删除它或创建另一个!

Step 5 − 从 Appium 下载 Appium jar 文件

Test an App with Appium

要使用 Appium 测试应用,请按照以下给出的步骤操作 −

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

robotiumtest

选择所有默认选项,直至你到达主页面。

Step 2 − 将 Appium jar 添加到你的项目中。单击 Project → App → 复制 lib 中的所有 jar。选择所复制的 jar,但不要选择 Selenium、Java 客户端和 Junit jar,然后右击该 jar 并单击“添加为库”。

Step 3 − 在 App 中单击 build.gradle。你将看到所有已添加的库,如以下屏幕截图所示。

build gradle

Step 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();
}

Step 5 − 运行测试用例。

  1. 单击构建版本并选择单元测试。

  2. 使用特定端口“4444”启动 Appium 服务器。从这里下载适用于 Windows 的 Appium。双击 .exe 并安装 Appium。单击该图标以弹出 UI。如果需要,请更改端口,如下图所示。单击播放按钮以启动服务器。

running test case
  1. 使用 USB 调试连接该设备或启动模拟器。

  2. 右击该测试类并单击“运行”。

Mobile Testing - Zucchini Framework

Zucchini 是一个新的测试框架,它使用 BDD 样式的特定于领域的语言 (DSL)。其一个重点领域是简化使用 Selenium 编写的验收测试。

正如你稍后会看到的,它不是 JBehave 或 Robot Framework 的替代品。在此,我们将通过逐步描述一个示例,让你了解 Zucchini 的概念。

How to install Zucchini

安装 Zucchini 的先决条件是 XCode 4.2。此外,还需要一些命令行工具,例如 brew update && brew install imagemagick && brew install coffee-script。

How to Use Zucchini

  1. gem install zucchini-ios

  2. 通过创建项目框架开始

  3. 为你的第一个功能创建功能框架

  4. 通过修改 features/my_feature/feature.zucchinifeatures/support/screens/welcome.coffee 开始破解。

Running on the device

  1. 将你的设备添加到 features/support/config.yml

  2. 在 iOS 模拟器上运行。我们强烈建议你在真实硬件上运行你的 Zucchini 功能。但是,如果你必须这样做,可以在 iOS 模拟器上运行。首先,修改 features/support/config.yml 以包含编译后的应用的完整路径。例如,应用:/Users/vaskas/Library/Developer/Xcode/DerivedData/CoreDataBooks-ebeqiuqksrwwoscupvxuzjzrdfjz/Build/Products/Debug-iphonesimulator/CoreDataBooks.app。接下来,向设备部分添加“iOS 模拟器”项(不需要 UDID),并确保根据你的 iOS 模拟器设置提供“屏幕”的实际值 −

  3. 像这样运行 − ZUCCHINI_DEVICE="iOS Simulator" zucchini run /path/to/my_feature

Result Display

result display