moon 发表于 2021-10-28 15:27:01

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

iOS应用程序测试教程:手动和自动化               
[*] 2021年8月21日
[*]                  
                                                IT赶路人
            
                                                 什么是iOS应用测试? iOS应用程序测试是在真实的苹果设备上测试iOS应用程序,以检查它是否在特定的用户操作(如安装时间、用户界面、用户体验、外观、行为、功能、加载时间、性能、App Store列表、操作系统版本支持等)上正常工作的测试过程。
为什么选择iOS应用测试? iOS App测试是必需的,因为iOS是苹果的移动应用平台,于2007年6月29日发布。iOS和iOS应用程序只能安装在Apple设备上,因此,iOS应用程序必须与iOS版本和iOS设备兼容。
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7c77736e0df911ec84c6702084085dcf.png这是开发人员创建iOS应用程序时的常见问题。 在设计和实现上投入多少时间并不重要,错误是不可避免的,错误也会出现。如下图所示。
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7c7d9f8c0df911ec9261702084085dcf.png 应用程序崩溃 最令人沮丧的问题之一是,在使用苹果设备时,是应用程序在执行期间可能频繁崩溃。很多时候,应用程序崩溃是因为有一些错误或内存应用程序中的漏洞。
应用程序不兼容 iOS应用程序可以在当前的iOS版本上完美运行,但如果升级iOS,可能会因为不兼容而无法工作问题。
安全漏洞 iOS中存在一个安全漏洞,使得黑客能够攻击iOS设备,窃取私人信息。到目前为止,严重的iPhone在不同的IOS中发现安全漏洞版本。
内存泄漏 内存泄漏是程序不再使用的已分配内存块。内存泄漏会导致iOS应用程序崩溃。它们是错误,应该始终修复。
在本教程中,将了解-

[*]为什么要进行iOS测试?
[*]iOS测试思路图
[*]iOS测试报告
[*]iOS测试策略
[*]自动化测试
[*]使用OC Unit进行单元测试
[*]使用UI自动化进行UI测试
[*]手动测试
[*]探索性测试
[*]用户测试

[*]    概念测试
[*]    可用性测试
[*]    测试版测试
[*]    A/B测试
[*]iOS测试最佳实践
[*]关于iOS测试的误区
iOS测试思路图 https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7c89b0340df911ec8b22702084085dcf.png如上图所示,iOS测试思维导图显示了测试人员在iOS上进行测试时需要考虑的所有事项。
iOS应用程序测试报告 此核对表是专门为测试iOS移动应用程序的特性而设计的。显然,它只测试通用应用程序特征,而不测试其功能。

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

[*]自动化测试可以在多个设备上运行,从而节省时间
[*]自动化测试可以针对SDK。可以在不同的SDK版本上运行测试
[*]自动化测试提高了测试效率,节省了软件开发成本
[*]有许多开源测试框架支持iOS上的自动化测试
使用OCUnit进行单元测试 当最初的iOS SDK发布时,它缺乏单元测试功能。因此,苹果在iOSSDK版本2.2中重新推出了OCUnit单元测试解决方案。 OCUnit是Mac OS中的C-Objective测试框架。OCUnit框架的最大优势是可以紧密集成到XCode开发环境中,如下所示。
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7ca0a07e0df911eca35e702084085dcf.pngOCUnit的一些优势如下图所示。
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7ca694480df911ec8c52702084085dcf.png 使用UI自动化测试 https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7cac84a80df911eca6b4702084085dcf.pngUI Automation是Apple Inc.提供的JavaScript库,可用于在真实设备和iOS模拟器上执行自动测试。使用UI Automation,不仅可以在模拟器上自动测试应用程序,还可以在真实设备上自动测试应用程序。
UI自动化带来以下优势:

[*]减少手动测试的工作量
[*]使用较少的内存来执行所有测试
[*]简化UI测试过程(只需按下一个或三个按钮,即可完全运行测试套件)
UIAutomation Instrument通过脚本工作,脚本是用JavaScript编写的。它模拟目标iOS应用程序上的用户事件。
UI自动化缺点与优点

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

https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7cb332080df911eca97b702084085dcf.png上图代表了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上的一种手动测试。此测试的目的如下图所示,显示了四种类型的用户测试
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7cb8c17a0df911ec9d13702084085dcf.png 概念测试 在向市场发布应用程序创意之前,评估用户对该应用程序创意的反应。iOS上的概念测试流程如下
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7cbfb06e0df911ec8553702084085dcf.png 可用性测试 可用性测试是对iOS应用程序易用性的测试。在iOS测试中,可用性测试可以被记录下来,以便记住或与他人分享。 有一些工具支持iOS上的可用性测试。
Magitest, 一个针对网站和应用程序的简单iOS可用性测试。
Delight.io, 此工具可以捕获iOS应用程序上的真实用户交互。
Beta测试 Beta测试是与真实数据的集成测试,以获得用户的最终反馈。要分发应用程序进行Beta测试,必须按照以下步骤操作。
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7cc4a1280df911eca9d2702084085dcf.png前提条件: 如果正在对最终候选版本进行Beta测试,确保在将应用分发给测试人员之前对其进行验证。
通过服务发现测试 :可以从测试员那里收集设备ID,并将其添加到测试中心
创建ad-hoc分发: ad-hoc分发允许测试人员在他们的设备上运行应用程序,而不需要XCode。此步骤包括2个子步骤

[*]创建分发证书
[*]创建临时调配配置文件
等待测试员反馈 :测试员进行测试,并将bug报告发送给。在应用程序发布后,可以从iTunes connect获取报告。
A/B测试 A/B测试是评估iOS应用程序有效性的最有力的方法之一。它使用两种设备A和B进行随机实验。
https://itxiaonv-1305655249.cos.ap-guangzhou.myqcloud.com/images/7ccaec140df911ec8c71702084085dcf.pngA/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..)
每个人都会在应用程序商店下载我的应用程序,因为它有很多功能。应用程序具有的功能越多,可能得到的错误就越多。如果应用程序仍然有很多缺陷,没有用户会下载它。
      
         

页: [1]
查看完整版本: iOS应用程序测试教程:手动和自动化