iOS自动化测试:实践和框架分析(一)

作者:ios自动化测试   发布时间:2021-09-17

介绍

iOS 自动化测试涉及测试仅适用于 iOS 设备的应用程序。通常,测试应用程序需要测试人员了解应用程序的目的、技术要求和性能指标,以比较预期行为与实际行为。iOS 系列是一个封闭环境,仅被许可在 Apple 设备上运行。这使得在整个设备范围内测试应用程序变得更容易,而不是可以部署到更大范围的设备中的 Android 应用程序。


iOS 应用程序需要手动和使用自动化脚本进行测试。尽管经过深思熟虑的设计,但在任何应用程序中,错误都是不可避免的。无论是在 iOS 还是 Android 平台上,iOS 自动化测试都与测试任何应用程序一样重要。质量保证活动必须从应用程序生命周期的一开始就执行。在 iOS 应用中,由于设备是已知的,并且操作系统更新有周密的计划,因此在这些设备上进行测试更方便。iOS 应用程序的自动化测试有很多好处。运行自动化测试脚本有助于节省时间和精力,因为它允许一个测试在多个设备上并行运行。

iOS自动化测试是如何实现的?

iOS 应用程序不仅需要测试其功能,还需要测试其 UI/UX 设计。测试用例必须应用于各种 iDevices - viz、iPhone、iPad、iPad mini、iPad Pro、Apple Watch、Apple TV、iMac(各种屏幕尺寸)、iPod Touch、Macbooks 等 - 以确保 UI/ UX 正在各种分辨率的设备上按预期实施。除了在将部署应用程序的设备阵列上进行测试之外,作为测试人员,您还需要从各个角度测试应用程序。其他一些必不可少的测试类型包括单元测试、功能测试、可视化 UI 测试以及端到端测试。让我们花点时间来看看每种类型的测试:

1,单元测试


单元测试通常由开发人员自己进行。执行单元测试以确认任何特定部分的源代码是否按照要求独立运行。此测试是在开发人员将其工作合并到应用程序的源代码后开发的一段代码上单独完成的。执行单元测试常见的框架是 Apple 的 XCTest,它在 XCode 开发环境中可用,它也提供 iOS 自动化测试功能。

2,功能测试


在不了解源代码的情况下彻底测试所有功能的过程称为功能测试。在 iOS 设备上,我们需要了解触觉功能,例如软触摸、3D 触摸、敲击、摇晃和旋转等。 在各种兼容设备上对 iOS 应用程序进行功能测试时需要考虑这些输入. 这些测试用例可以手动编写,然后自动写入自动化测试脚本,以便可以在应用程序的每个版本发布中测试功能,也可以作为回归测试的一部分。KIF (Keep It Functional)、XCode UI Test、EarlGrey 和 Calabash 是 Apple 支持的一些用于功能测试的 iOS 自动化测试工具。我们将在文章中进一步了解这些工具。

3,UI/UX 测试


iOS 测试中重要的部分之一是用户界面和体验。执行以下操作时,应用程序的用户界面必须按预期运行。我们可以将 UI 测试的不同方面分类为:


输入:输入包括软触摸、滚动、长触摸/3D 触摸和按钮。这些输入中的每一个都将执行需要仔细测试的特定功能。屏幕上的按钮的大小、位置、颜色和字体可能不同。


屏幕:必须在其兼容设备上测试应用程序的屏幕方向。屏幕 UI 测试还必须包括根据设备的屏幕分辨率变化和适应性。


软键盘:隐藏或使用包含表情符号和符号选项卡的键盘的选项对于包含和测试很重要。


硬键:一些应用程序还与物理按钮相关联,例如电源、主页和音量按钮。这些硬键在 UI/UX 测试中发挥着重要作用,因为它们为用户提供了可访问性和舒适度。

4,列表:与安卓系统不同,iOS 处理弹出窗口的方式不同。在 iOS 应用程序中,需要选择选项而不是弹出窗口时会显示列表。


测试 iOS UI/UX与测试 Android 应用程序中的UI/UX有很大不同。由于 Apple 的封闭生态系统,其设备的行为和期望是有限的,这使得测试过程可预测。


可以通过使用 XCUITest 来为 iOS 应用程序自动进行 UI/UX 测试,XCUITest 直接嵌入 Xcode 和 IDE 环境中,并且仅限于 Objective C 或 Swift 语言,或者利用 Appium 自动化框架允许灵活地使用编程语言和其他工具您认为适合您的 iOS 自动化测试。 

5,回归和端到端测试


iOS 应用程序经历了多次更改、错误修复和版本发布。在应用程序的整个生命周期中,引入到应用程序的更改可能会影响应用程序的现有功能。出于这个原因,测试人员必须执行回归测试,以确保现有功能按预期工作,尽管进行了更改。必须在应用程序的每个版本发布期间执行回归测试。一般来说,由于这些测试场景的重复性,QA 团队更愿意自动化这些测试场景。自动化它们可以节省 QA 团队、时间和精力,使他们能够专注于编写和自动化测试用例,以应对将成为下一版本回归测试套件一部分的新更改。


另一方面,我们有端到端的测试,从头到尾对应用程序堆栈进行完整的测试。在这里,我们模拟了从前端 UI/UX 到后端服务器功能和其他网络相关方面的整个用户体验。它是集成测试的一部分,我们可以在其中测试所有功能是否如预期的那样相互协同工作。在此类情况下,如果在实际设备或所有兼容设备上进行测试不可行,则使用模拟器来自动化端到端测试场景。但是,不错的做法是在真实设备上执行回归和端到端测试,因为它提高了测试的信心,就好像设备在用户手中一样。通过利用上面提到的 iOS 自动化测试框

iOS自动化测试面临的挑战

在开发 iOS 应用程序时,发布时间紧迫并不少见。这让 QA 团队有更少的时间来集成应用程序执行的众多功能或创建新的测试脚本。

随着人脸 ID 和指纹认证方法的引入,大多数测试用例的自动化变得更加困难。在这种情况下,人工干预被认为是必要的。需要专业知识的动态运营商网络条件和相关后台流程的环境自动化可能很困难。

自动化 iOS 应用程序测试面临的其他一些挑战包括由于时间不足而对测试代码进行故障排除和调试。缺乏足够的移动测试实验室也很困难。

重要的是,与为 Web 应用程序提供的各种框架和解决方案相比,用于 iOS 自动化测试和一般移动应用程序测试的自动化框架解决方案是少的。 



推荐阅读:

真机兼容测试

真机调试

掌上真机

多机联动

标准兼容性测试



本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-60725088-8054),我们将立即处理,马上删除。



沪ICP备07036474号-4 |

沪公网安备 31010702003220号

2015-2023 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.