什么是iOS应用测试?
iOS应用程序测试是在真实的苹果设备上测试iOS应用程序,以检查它是否在特定的用户操作(如安装时间、用户界面、用户体验、外观、行为、功能、加载时间、性能、App Store列表、操作系统版本支持等)上正常工作的测试过程。
为什么选择iOS应用测试?
iOS App测试是必需的,因为iOS是苹果的移动应用平台,于2007年6月29日发布。iOS和iOS应用程序只能安装在Apple设备上,因此,iOS应用程序必须与iOS版本和iOS设备兼容。
这是开发人员创建iOS应用程序时的常见问题。 在设计和实现上投入多少时间并不重要,错误是不可避免的,错误也会出现。如下图所示。
应用程序崩溃
最令人沮丧的问题之一是,在使用苹果设备时,是应用程序在执行期间可能频繁崩溃。很多时候,应用程序崩溃是因为有一些错误或内存应用程序中的漏洞。
应用程序不兼容
iOS应用程序可以在当前的iOS版本上完美运行,但如果升级iOS,可能会因为不兼容而无法工作问题。
安全漏洞
iOS中存在一个安全漏洞,使得黑客能够攻击iOS设备,窃取私人信息。到目前为止,严重的iPhone在不同的IOS中发现安全漏洞版本。
内存泄漏
内存泄漏是程序不再使用的已分配内存块。内存泄漏会导致iOS应用程序崩溃。它们是错误,应该始终修复。
在本教程中,将了解-
- 为什么要进行iOS测试?
- iOS测试思路图
- iOS测试报告
- iOS测试策略
- 自动化测试
- 使用OC Unit进行单元测试
- 使用UI自动化进行UI测试
- 手动测试
- 探索性测试
-
用户测试
- 概念测试
- 可用性测试
- 测试版测试
- A/B测试
- iOS测试最佳实践
- 关于iOS测试的误区
iOS测试思路图
如上图所示,iOS测试思维导图显示了测试人员在iOS上进行测试时需要考虑的所有事项。
iOS应用程序测试报告
此核对表是专门为测试iOS移动应用程序的特性而设计的。显然,它只测试通用应用程序特征,而不测试其功能。
- 检查应用程序在设备上的安装时间。确保在可接受的时间内安装该应用程序。
- 安装应用程序后,检查应用程序是否有应用程序图标和名称。此外,确保图标和名称都是不言而喻的,以反映应用程序的核心意图。
- 启动应用程序并检查是否显示闪屏。
- 检查闪屏超时和加载主屏幕时间。HO还检查内容是如何加载到主屏幕中的。
- 应用程序的主要功能应该立即显现出来。它应该不言而喻。
- 检查应用程序是否同时支持横向和纵向。应该相应地设置应用程序的用户界面。
- 在没有互联网连接的情况下,启动应用程序。应用程序在启动时可能会崩溃,或者可能只显示一个空白屏幕。
- 如果应用程序使用位置服务,则检查是否显示位置权限告警。此告警应该只向用户提示一次。
- 如果应用发送推送通知,则检查是否显示推送通知权限预警。此告警也应该只向用户提示一次。
- 启动应用程序,退出并重新启动。检查应用程序是否按照设计/期望运行
- 通过轻触设备的主页按钮关闭应用程序,然后再次打开应用程序。检查应用程序是否按设计/期望方式工作。
- 安装后,检查该应用程序是否列在iPhone的设置应用程序中。
- 在应用程序上线后,检查是否可以在“App Store”中找到该应用程序。该应用程序将有受支持的操作系统版本。因此,确保该应用程序可以在那些受支持的操作系统版本设备的“应用程序商店”中找到。此外,应用程序不应列在不受支持的操作系统版本设备的“应用程序商店”中。
- 检查应用程序在后台运行时是否进入休眠模式,以防止电池耗尽。
- 如果应用程序性能较慢或正在加载内容,检查是否有进度状态图标(“正在加载…”)优选地,具有特定消息。
- 在设备搜索栏中使用其名称搜索应用程序。检查应用程序是否已列出
- 检查执行标准操作的按钮在APP中的外观是否没有改变(例如:刷新、组织、垃圾桶、回复、后退等)
- 检查标准按钮是否未用于正常使用的其他功能
iOS测试策略
下图介绍了一些常见类型的IOS测试策略。
自动化测试
自动化测试是iOS测试的最大优势。它实现了自动化测试的好处,如下所示:
- 自动化测试可以在多个设备上运行,从而节省时间
- 自动化测试可以针对SDK。可以在不同的SDK版本上运行测试
- 自动化测试提高了测试效率,节省了软件开发成本
- 有许多开源测试框架支持iOS上的自动化测试
使用OCUnit进行单元测试
当最初的iOS SDK发布时,它缺乏单元测试功能。因此,苹果在iOSSDK版本2.2中重新推出了OCUnit单元测试解决方案。 OCUnit是Mac OS中的C-Objective测试框架。OCUnit框架的最大优势是可以紧密集成到XCode开发环境中,如下所示。
OCUnit的一些优势如下图所示。
使用UI自动化测试
UI Automation是Apple Inc.提供的JavaScript库,可用于在真实设备和iOS模拟器上执行自动测试。使用UI Automation,不仅可以在模拟器上自动测试应用程序,还可以在真实设备上自动测试应用程序。
UI自动化带来以下优势:
- 减少手动测试的工作量
- 使用较少的内存来执行所有测试
- 简化UI测试过程(只需按下一个或三个按钮,即可完全运行测试套件)
UIAutomation Instrument通过脚本工作,脚本是用JavaScript编写的。它模拟目标iOS应用程序上的用户事件。
UI自动化缺点与优点
UI自动化 | 优点 | 缺点 |
---|---|---|
1. | 很好地支持手势和旋转 | 它不是开源的,开发人员对它的支持较少 |
2. | 可以在设备上运行UI自动化测试,而不是唯一的模拟器。 | 无法与其他工具很好地集成 |
3. | 它由JavaScript开发,是一种流行的编程语言。 |
上图代表了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上的一种手动测试。此测试的目的如下图所示,显示了四种类型的用户测试
概念测试
在向市场发布应用程序创意之前,评估用户对该应用程序创意的反应。iOS上的概念测试流程如下
可用性测试
可用性测试是对iOS应用程序易用性的测试。在iOS测试中,可用性测试可以被记录下来,以便记住或与他人分享。 有一些工具支持iOS上的可用性测试。
Magitest, 一个针对网站和应用程序的简单iOS可用性测试。
Delight.io, 此工具可以捕获iOS应用程序上的真实用户交互。
Beta测试
Beta测试是与真实数据的集成测试,以获得用户的最终反馈。要分发应用程序进行Beta测试,必须按照以下步骤操作。
前提条件: 如果正在对最终候选版本进行Beta测试,确保在将应用分发给测试人员之前对其进行验证。
通过服务发现测试 :可以从测试员那里收集设备ID,并将其添加到测试中心
创建ad-hoc分发: ad-hoc分发允许测试人员在他们的设备上运行应用程序,而不需要XCode。此步骤包括2个子步骤
- 创建分发证书
- 创建临时调配配置文件
等待测试员反馈 :测试员进行测试,并将bug报告发送给。在应用程序发布后,可以从iTunes connect获取报告。
A/B测试
A/B测试是评估iOS应用程序有效性的最有力的方法之一。它使用两种设备A和B进行随机实验。
A/B测试主要包括三个步骤
- 配置测试:准备了2个版本的iOS应用程序(A和B)和测试指标
- 测试:在设备上同时测试2个以上版本的iOS应用程序。
- 分析:测量并选择更好的版本进行发布
以下工具支持iOS上的A/B测试。
- Rise: iOS和Android的A/B测试。它可以集成到iOS应用程序中,使测试过程更快。
A/B测试的最佳实践
- 定义测试的目标。没有靶子,任何测试都是没用的。
- 观看最终用户首次使用应用程序
- 每个更新仅运行一个测试。在进行测试时可以节省时间
- 仔细监控测试。可以通过监控测试来学习经验。
iOS测试最佳实践
以下是在组织iOS应用程序测试时应该知道的一些提示
- 在真实设备上测试应用程序以了解真实的性能
- 改进测试方法,因为传统测试方法已不足以覆盖iOS测试的所有测试
- 使用控制台日志测试iOS应用程序。这是一项iOS功能,包括来自设备上每个应用程序的信息。
- 使用内置屏幕短命令记录应用程序错误。它帮助开发人员了解错误是如何发生的。
- 在测试应用程序时,崩溃报告是很有用的工具。它们可以检测崩溃并记录详细信息,因此可以轻松地调查错误。
关于iOS测试的误区
本节考察iOS测试的几个流行的神话和现实
在iOS和Android上测试应用程序是一回事。
iOS和Android是由苹果公司和谷歌开发的两个平台。等测试环境、测试框架、编程语言等。
在iOS模拟器上测试应用程序就足够了。
iOS模拟器不够强大,无法测试应用程序。因为IOS模拟器有一些限制:
- 硬件限制(摄像机、麦克风输入、传感器)
- 应用程序的UI可能看起来比在设备上运行更快、更流畅
- API限制
- 某些框架不受支持(Media Player、Store Kit、Message UI..)
每个人都会在应用程序商店下载我的应用程序,因为它有很多功能。应用程序具有的功能越多,可能得到的错误就越多。如果应用程序仍然有很多缺陷,没有用户会下载它。