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

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

iOS 自动化测试不错的实践

模拟器/模拟器上的真实设备:

在 UI/UX 测试方面,我们需要在所有兼容设备上测试应用程序,但在所有设备上执行测试可能会非常昂贵。这是模拟器或模拟器发挥作用的地方。除了成本之外,还有一步一步调试应用程序的问题,这在使用真实设备进行测试时并不容易发现。

相反,使用真实设备进行测试的处理速度可能比使用仿真器/模拟器工作要快。可靠性在这里也起着重要作用。与模拟器/模拟器相比,真实设备可能更可靠,因为模拟各种用户交互可能很乏味。

尽管模拟器和模拟器很容易启动,但它们无法完全捕捉设备电池或存储电量低或流量被呼叫或通知中断的情况。在这种情况下,使用真实设备进行手动测试会更令人满意。此外,如上所述,在执行回归和端到端测试以尽可能接近地模拟用户的操作时,真实设备更可取。

丰富的报告和沟通:

在应用程序测试方面,为每个步骤或操作截取屏幕截图或记录屏幕对于调试和理解应用程序的实际行为至关重要。在 iOS 设备上,可以通过在旧设备上同时按下电源和主页按钮并在新设备上按下电源和音量增大按钮来手动截取屏幕截图。录屏,我们可以使用QuickTime来录制iOS设备的屏幕,前提是它使用避雷线连接到Mac机。一些工具提供自动截图和屏幕录制,例如 fastlane,它使用 XCUITest 进行截图。此外,还有一些iOS自动化测试框架可以在您的自动化和测试工作期间提供丰富的报告和通信。

崩溃和控制台日志:

崩溃日志用于了解应用程序失败时的根本原因。在这种情况下,您需要捕获崩溃日志。可以采取以下步骤来捕获崩溃日志:

1,将 iOS 设备与 Mac 机(iMac 或 Macbook)连接。

2,按住 Option (⌥) 键打开菜单栏。
3,在菜单下,导航到 Library/Logs/CrashReporter/MobileDevice

4,您将在此处找到 iOS 设备的名称。单击文件夹。

5,您可以在此处找到以您的 AUT(被测应用程序)的名称开头的日志。

另一方面,控制台日志显示 iOS 设备上 AUT(被测应用程序)的完整信息。要查看控制台日志,您需要使用 iTools 应用程序。下载应用程序后,将设备连接到运行 iTools 应用程序的系统,然后单击工具箱图标。下一步是单击显示控制台日志的实时日志按钮。

iOS 自动化测试框架中的 SetUp 和 TearDown 方法:

在XCTest、Appium等一些框架中,我们可以根据自己的测试需求使用SetUp和TearDown方法自定义测试用例的状态。

setUp():此方法可用于在运行特定测试方法之前设置每个测试用例的初始状态。

tearDown():这个方法可以用于在每个测试用例或测试方法完成后进行清理。

这些方法对于使用一些常见测试框架来避免由于缓存导致的测试失败的有效 iOS 自动化测试至关重要。

 iOS 自动化框架

Appium

由开创性的 Web 应用程序自动化框架 Selenium 创建,Appium 是移动应用程序自动化框架。由于在同一个家族中,Appium 使用相同的 Selenium WebDriver 和 HTTP 协议流程来自动化移动应用程序,包括 iOS 应用程序。它是一个开源平台,不受编程语言的限制,您可以使用大多数常用语言测试应用程序,例如 Java、C#、Python、Ruby 等。此外,Appium 可以与帮助促进移动应用程序自动化所需的任何其他框架或工具。因此,Appium 提供了一种灵活的方式来设置您认为合适的测试需求。 


Appium 的主要优势之一是它适用于任何类型的移动应用程序,包括 Web、本机和混合应用程序,这意味着我们可以在 iOS 和 Android 设备上使用相同的 Appium 代码。

XCTest/XCUITest

XCTest 是 Apple 的官方测试框架,用于执行单元测试。XCUITest 是一个 UI 测试框架,它构建在 XCTest 框架之上,并包括辅助 UI 测试的补充类,例如 UIAccessibility。这两个框架都可以用 Objective C 或 Swift 编写。由于它是 iOS 设备原生的,它不需要任何支持软件或包来在 AUT(被测应用程序)上执行测试。


XCTest/XCUITest 比 iOS 应用程序的其他自动化框架更快。XCTest 不需要额外的抽象 API 层,因此是轻量级的。如果您决定使用 XCTest 作为自动化框架,则 XCode 测试记录器是另一种选择。使用测试记录器,可以更轻松地执行 UI 测试场景,因为我们可以记录和回放执行的 UI 测试

EarlGrey

Google 提出了自己的、开源的、灵活的内部 UI 测试框架,名为 EarlGrey。它具有独特的优势,例如:

与 UI、网络请求和线程的同步功能。

类似用户的交互是可以执行滑动和点击的应用程序级触摸事件。

可见性检查在执行测试脚本之前检查元素是否可见。

Calabash

Calabash 也是一个开源框架,可以在 iOS 和 Android 平台上进行测试。要在 Calabash 中自动化测试用例,测试用例必须用 Cucumber 编写。Cucumber 是一种行为驱动开发框架,它使用 Gherkin 语言以“Given, When, Then”格式编写测试场景,使业务分析师和利益相关者更容易理解测试场景,而无需要求他们具备任何技术编码知识。Calabash 可以与本机和混合应用程序交互。它包含各种有益的功能,例如屏幕截图记录功能和手势。

Detox

Detox 是一款专门用于端到端、UI 自动化测试需求的工具。它支持 JavaScript,旨在作为一个更容易学习的灰盒测试框架。排毒的一些优点是:

它通过监视 UI 中的异步元素来帮助减少应用程序的脆弱性。它像在生产中一样运行测试用例。

如前所述,Detox 是一种灰盒测试工具,可以从移动应用程序访问源代码,因此它比 XCTest/XCUITest 之外的其他第三方 iOS 自动化框架更快

它在持续集成管道中运行。

OCMock

该框架用于在 iOS AUT 中创建存根对象。它可以通过静态库实现来开发 iOS 应用程序或作为用于 OS X 开发的框架。其优势包括:

它使用 Objective-C,因此大多数 iOS 应用程序开发人员也可以开发测试用例。

它也是一个开源框架。

通过向单元测试添加模拟对象,它很容易使用。

KIF (Keep It Functional)


像大多数 iOS 自动化测试框架一样,KIF 是一个开源工具。它是一个 iOS 原生应用程序,开发人员需要将 KIF 框架添加到项目中。下面列出了 KIF 的一些主要优点:

语法易于理解和直观。

它使用目标 C。

在 CI 管道的命令行上运行良好。

它可以毫不费力地与 XCode 工作流程集成。

它不需要任何外部依赖项,许多其他测试框架都这样做。

结论

在 iOS 应用程序上执行 iOS 自动化测试既有趣又具有挑战性。如上所述,要跟上已经取代古老的 PIN 和密码身份验证方法的先进技术(例如面容 ID 和指纹身份验证)可能会很费劲。这并不容易,考虑到定期发生的有时间限制的 OS 版本升级,但幸运的是,这些升级是精心策划的。

总而言之,对于开发和 QA 团队来说,提出不错的实践以准备好应对可能出现的任何挑战至关重要。了解何时使用仿真器/模拟器以及何时需要对真实设备进行测试非常重要。我们需要利用屏幕捕获和记录工具以及崩溃和控制台日志来跟踪测试用例的步骤并了解可能出现的潜在 UI 问题,以便及时修复它们。

既然我们已经讨论了测试 iOS 应用程序的概述,很明显,为您的项目团队选择正确的自动化框架、正确的补充工具和方法以及测试设备(模拟器/模拟器/存根)对于成功测试至关重要应用程序。根据您团队的技能组合,选择不错的框架来测试您的 iOS 应用程序。


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



沪ICP备07036474号-4 |

沪公网安备 31010702003220号

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