iOS应用程序测试教程:手动和自动化

什么是iOS应用测试?

iOS应用程序测试是在真实的苹果设备上测试iOS应用程序,以检查它是否在特定的用户操作(如安装时间、用户界面、用户体验、外观、行为、功能、加载时间、性能、App Store列表、操作系统版本支持等)上正常工作的测试过程。

为什么选择iOS应用测试?

iOS App测试是必需的,因为iOS是苹果的移动应用平台,于2007年6月29日发布。iOS和iOS应用程序只能安装在Apple设备上,因此,iOS应用程序必须与iOS版本和iOS设备兼容。

Getting started with iOS testing
Getting started with iOS testing

这是开发人员创建iOS应用程序时的常见问题。 在设计和实现上投入多少时间并不重要,错误是不可避免的,错误也会出现。如下图所示。

Getting started with iOS testing
Getting started with iOS testing

应用程序崩溃

最令人沮丧的问题之一是,在使用苹果设备时,是应用程序在执行期间可能频繁崩溃。很多时候,应用程序崩溃是因为有一些错误或内存应用程序中的漏洞。

应用程序不兼容

iOS应用程序可以在当前的iOS版本上完美运行,但如果升级iOS,可能会因为不兼容而无法工作问题。

安全漏洞

iOS中存在一个安全漏洞,使得黑客能够攻击iOS设备,窃取私人信息。到目前为止,严重的iPhone在不同的IOS中发现安全漏洞版本。

内存泄漏

内存泄漏是程序不再使用的已分配内存块。内存泄漏会导致iOS应用程序崩溃。它们是错误,应该始终修复。

在本教程中,将了解-

  • 为什么要进行iOS测试?
  • iOS测试思路图
  • iOS测试报告
  • iOS测试策略
  • 自动化测试
  • 使用OC Unit进行单元测试
  • 使用UI自动化进行UI测试
  • 手动测试
  • 探索性测试
  • 用户测试
    • 概念测试
    • 可用性测试
    • 测试版测试
    • A/B测试
  • iOS测试最佳实践
  • 关于iOS测试的误区

iOS测试思路图

Getting started with iOS testing
Getting started with iOS testing

如上图所示,iOS测试思维导图显示了测试人员在iOS上进行测试时需要考虑的所有事项。

iOS应用程序测试报告

此核对表是专门为测试iOS移动应用程序的特性而设计的。显然,它只测试通用应用程序特征,而不测试其功能。

  • 检查应用程序在设备上的安装时间。确保在可接受的时间内安装该应用程序。
  • 安装应用程序后,检查应用程序是否有应用程序图标和名称。此外,确保图标和名称都是不言而喻的,以反映应用程序的核心意图。
  • 启动应用程序并检查是否显示闪屏。
  • 检查闪屏超时和加载主屏幕时间。HO还检查内容是如何加载到主屏幕中的。
  • 应用程序的主要功能应该立即显现出来。它应该不言而喻。
  • 检查应用程序是否同时支持横向和纵向。应该相应地设置应用程序的用户界面。
  • 在没有互联网连接的情况下,启动应用程序。应用程序在启动时可能会崩溃,或者可能只显示一个空白屏幕。
  • 如果应用程序使用位置服务,则检查是否显示位置权限告警。此告警应该只向用户提示一次。
  • 如果应用发送推送通知,则检查是否显示推送通知权限预警。此告警也应该只向用户提示一次。
  • 启动应用程序,退出并重新启动。检查应用程序是否按照设计/期望运行
  • 通过轻触设备的主页按钮关闭应用程序,然后再次打开应用程序。检查应用程序是否按设计/期望方式工作。
  • 安装后,检查该应用程序是否列在iPhone的设置应用程序中。
  • 在应用程序上线后,检查是否可以在“App Store”中找到该应用程序。该应用程序将有受支持的操作系统版本。因此,确保该应用程序可以在那些受支持的操作系统版本设备的“应用程序商店”中找到。此外,应用程序不应列在不受支持的操作系统版本设备的“应用程序商店”中。
  • 检查应用程序在后台运行时是否进入休眠模式,以防止电池耗尽。
  • 如果应用程序性能较慢或正在加载内容,检查是否有进度状态图标(“正在加载…”)优选地,具有特定消息。
  • 在设备搜索栏中使用其名称搜索应用程序。检查应用程序是否已列出
  • 检查执行标准操作的按钮在APP中的外观是否没有改变(例如:刷新、组织、垃圾桶、回复、后退等)
  • 检查标准按钮是否未用于正常使用的其他功能

iOS测试策略

下图介绍了一些常见类型的IOS测试策略。

Getting started with iOS testing
Getting started with iOS testing

自动化测试

自动化测试是iOS测试的最大优势。它实现了自动化测试的好处,如下所示:

  • 自动化测试可以在多个设备上运行,从而节省时间
  • 自动化测试可以针对SDK。可以在不同的SDK版本上运行测试
  • 自动化测试提高了测试效率,节省了软件开发成本
  • 有许多开源测试框架支持iOS上的自动化测试

使用OCUnit进行单元测试

当最初的iOS SDK发布时,它缺乏单元测试功能。因此,苹果在iOSSDK版本2.2中重新推出了OCUnit单元测试解决方案。 OCUnit是Mac OS中的C-Objective测试框架。OCUnit框架的最大优势是可以紧密集成到XCode开发环境中,如下所示。

Getting started with iOS testing
Getting started with iOS testing

OCUnit的一些优势如下图所示。

Getting started with iOS testing
Getting started with iOS testing

使用UI自动化测试

Getting started with iOS testing
Getting started with iOS testing

UI Automation是Apple Inc.提供的JavaScript库,可用于在真实设备和iOS模拟器上执行自动测试。使用UI Automation,不仅可以在模拟器上自动测试应用程序,还可以在真实设备上自动测试应用程序。

UI自动化带来以下优势:

  • 减少手动测试的工作量
  • 使用较少的内存来执行所有测试
  • 简化UI测试过程(只需按下一个或三个按钮,即可完全运行测试套件)

UIAutomation Instrument通过脚本工作,脚本是用JavaScript编写的。它模拟目标iOS应用程序上的用户事件。

UI自动化缺点与优点

UI自动化 优点 缺点
1. 很好地支持手势和旋转 它不是开源的,开发人员对它的支持较少
2. 可以在设备上运行UI自动化测试,而不是唯一的模拟器。 无法与其他工具很好地集成
3. 它由JavaScript开发,是一种流行的编程语言。
Getting started with iOS testing
Getting started with iOS testing

上图代表了UIAutomation框架中的一些常见类。

  • UIAElement类是Automation上下文中所有用户界面元素的超类
  • UIATarget类表示被测系统的高级用户界面元素
  • UIALogger类提供有关检索功能的测试和错误信息
  • UIAActivityView类允许访问和控制应用程序中的活动视图。
  • UIAActionSheet类允许访问和控制应用程序中的操作表。
  • UISlider类( 用户事件操作 )
  • UIAButton类( 用户事件操作 )
  • UIAKey类 ( 用户事件操作 )
  • UIAKeyboard类 ( 用户事件操作 )

其他自动化测试框架

  • MonkeyTalk: 一个自动化测试iOS、Android、HTML5和Adobe应用程序的工具。它是用于管理和运行测试套件的集成环境
  • Frank: iPhone和iPad的自动验收测试框架
  • KIF: 是一个iOS集成测试框架。它通过利用操作系统为视力有障碍的人提供的辅助功能属性,实现iOS应用程序的轻松自动化。

手动测试

探索性测试

这是一次没有正式测试计划的测试。探索性测试是一种低成本的测试方法,但它可以忽略iOS应用程序中的潜在错误。

探索性测试优缺点对比

探索性测试 优点 缺点
1. 需要的准备工作更少,及早发现严重的错误。 对测试人员的技能要求很高
2. 不需要测试计划加速错误检测。 测试覆盖率很低。它不能保证所有需求都经过测试。
3. 大多数错误都是通过某种探索性测试及早发现的 缺少测试文档

用户测试

用户测试是iOS上的一种手动测试。此测试的目的如下图所示,显示了四种类型的用户测试

Getting started with iOS testing
Getting started with iOS testing

概念测试

在向市场发布应用程序创意之前,评估用户对该应用程序创意的反应。iOS上的概念测试流程如下

Getting started with iOS testing
Getting started with iOS testing

可用性测试

可用性测试是对iOS应用程序易用性的测试。在iOS测试中,可用性测试可以被记录下来,以便记住或与他人分享。 有一些工具支持iOS上的可用性测试。

Magitest, 一个针对网站和应用程序的简单iOS可用性测试。

Delight.io, 此工具可以捕获iOS应用程序上的真实用户交互。

Beta测试

Beta测试是与真实数据的集成测试,以获得用户的最终反馈。要分发应用程序进行Beta测试,必须按照以下步骤操作。

Getting started with iOS testing
Getting started with iOS testing

前提条件: 如果正在对最终候选版本进行Beta测试,确保在将应用分发给测试人员之前对其进行验证。

通过服务发现测试 :可以从测试员那里收集设备ID,并将其添加到测试中心

创建ad-hoc分发: ad-hoc分发允许测试人员在他们的设备上运行应用程序,而不需要XCode。此步骤包括2个子步骤

  • 创建分发证书
  • 创建临时调配配置文件

等待测试员反馈 :测试员进行测试,并将bug报告发送给。在应用程序发布后,可以从iTunes connect获取报告。

A/B测试

A/B测试是评估iOS应用程序有效性的最有力的方法之一。它使用两种设备A和B进行随机实验。

Getting started with iOS testing
Getting started with iOS testing

A/B测试主要包括三个步骤

  • 配置测试:准备了2个版本的iOS应用程序(A和B)和测试指标
  • 测试:在设备上同时测试2个以上版本的iOS应用程序。
  • 分析:测量并选择更好的版本进行发布

以下工具支持iOS上的A/B测试。

  • Rise: iOS和Android的A/B测试。它可以集成到iOS应用程序中,使测试过程更快。

A/B测试的最佳实践

  • 定义测试的目标。没有靶子,任何测试都是没用的。
  • 观看最终用户首次使用应用程序
  • 每个更新仅运行一个测试。在进行测试时可以节省时间
  • 仔细监控测试。可以通过监控测试来学习经验。

iOS测试最佳实践

以下是在组织iOS应用程序测试时应该知道的一些提示

  1. 在真实设备上测试应用程序以了解真实的性能
  2. 改进测试方法,因为传统测试方法已不足以覆盖iOS测试的所有测试
  3. 使用控制台日志测试iOS应用程序。这是一项iOS功能,包括来自设备上每个应用程序的信息。
  4. 使用内置屏幕短命令记录应用程序错误。它帮助开发人员了解错误是如何发生的。
  5. 在测试应用程序时,崩溃报告是很有用的工具。它们可以检测崩溃并记录详细信息,因此可以轻松地调查错误。

关于iOS测试的误区

本节考察iOS测试的几个流行的神话和现实

在iOS和Android上测试应用程序是一回事。

iOS和Android是由苹果公司和谷歌开发的两个平台。等测试环境、测试框架、编程语言等。

在iOS模拟器上测试应用程序就足够了。

iOS模拟器不够强大,无法测试应用程序。因为IOS模拟器有一些限制:

  • 硬件限制(摄像机、麦克风输入、传感器)
  • 应用程序的UI可能看起来比在设备上运行更快、更流畅
  • API限制
  • 某些框架不受支持(Media Player、Store Kit、Message UI..)

每个人都会在应用程序商店下载我的应用程序,因为它有很多功能。应用程序具有的功能越多,可能得到的错误就越多。如果应用程序仍然有很多缺陷,没有用户会下载它。

IT赶路人

专注IT知识分享