How to debug mobile apps across devices title. A magnifying glass over a bug icon in the bottom-left corner. The top-right corner has an icon of a mobile device.

如何在跨设备的移动应用程序中进行调试

作者头像LambdaTest阅读时长 8 分钟

移动应用程序中的错误会对用户体验产生负面影响,通常会影响访客的第一印象并提高卸载率。当用户遇到错误时,他们经常会选择其他应用程序,导致客户和收入流失。

因此,企业应专注于开发健壮且无错误的应用程序,作为留住客户策略的一部分。在访问者使用的多种类型的设备上进行跨设备调试具有挑战性,但对于保持长期用户体验至关重要,使 移动应用程序测试 成为该过程中的关键组成部分。

什么是移动应用程序调试?

移动应用程序调试是查找和修复错误的过程,理想情况下,在将其发布给用户之前进行。错误通常归因于功能过程中的故障。但是,情况往往并非如此。

例如,API 的响应时间过长可以归类为错误,但这与移动应用程序中任何模块的核心功能无关。同样,调试并不总是意味着修复移动应用程序的功能方面,而是修复对用户有影响的任何应用程序问题,甚至实施防止将来出现问题的修复措施。

通常,开发人员使用调试技术来查看功能和修复在开发过程中的实时行为。测试人员使用调试来探索漏洞以及应用程序如何处理开发阶段可能无法预料或无法预料的使用情况,通常利用 真实设备云 来确保在各种环境中进行全面测试。

为什么要在多个设备上调试移动应用程序?

如上所述,调试过程的步骤可能不是移动应用程序调试周期的结束。在调试周期中要考虑的另一个参数是成千上万种类型的移动设备的存在。

例如,在下面的快照中,仅考虑屏幕尺寸作为这三种设备的区分因素,并观察 UI 设计应如何相应地更改

A diagram showing UI design on three different devices with blocks as content placeholders. A small, cellphone-sized device has a single column layout, the same content is shown with cards in a tablet-sized device, and a third desktop version shows fullscreen cards and content spanning larger widths.

屏幕尺寸只是移动设备可能存在差异的一个方面。如果您考虑其他设备特性,则在开发生命周期的早期在多个设备上进行调试变得越来越重要。让我们看看设备可能存在差异的一些方式

  • 极高的设备碎片化:当今的设备具有独特的规格,它们中的每一个都会影响应用程序的呈现方式。

    有些设备可能具有不同的屏幕尺寸,而另一些设备则在不同的处理能力上运行。这使得应用程序的编译、执行和操作在各种设备上有所不同。
  • 操作系统变化StatCounter 报告 将 Android 和 iOS 放在全球移动市场份额的 99.34%。但是,这比在两个操作系统上进行测试要复杂得多,因为每个操作系统每年都会向最终用户发布一个新版本。

    每个新的操作系统版本都包含弃用、更新的 API 和现有方法的优化。这些更改会影响应用程序的工作方式以及开发方式,并且是错误的潜在原因。
  • 供应商 UI 修改:Android 操作系统是开源的,欢迎根据移动制造商的要求进行下游修改。

    一个很好的例子是三星的 One UI。该公司使用新发布的 Android 的源代码,并对 UI 进行内部修改。这使得他们的设备与其他制造商的设备有所不同。不过,测试人员应该理解,发生这种变化是因为与“普通”Android 相比,One UI 中的 UI 元素的设计和分析方式不同。

    因此,特定于供应商的更改会导致应用程序 UI 中出现错误,使其成为测试和调试周期中的一个重要行动项目。
  • 相当大的系统更改:许多制造商已经改变了 Android 的通用设计(包括核心内核功能),并将其融入到他们的设备中。此修改的一个示例是 OnePlus 的 OxygenOS。

    这种操作系统修改会影响移动应用程序的功能方面,使其在某些操作系统上的工作方式与 Android 不同。
  • 硬件优化:许多设备制造商雇佣专家根据他们的软件优化硬件,以提高性能。优化包括完整的 SOC 设计和开发、自定义电池放电率以及管理散热。

    所有这些因素对移动应用程序行为至关重要。因此,由于这些优化,一个设备上的错误可能在另一个设备上出现(或不出现)。

当将以上几点结合起来时,应该更加清楚地了解为什么每台设备,无论它与其他设备有何不同,都必须放置在设备池中并纳入所有调试周期。

如何在多个设备上调试移动应用程序?

一旦发现错误,请使用一种或多种技术和策略来暴露其根本原因,跟踪从源到输出(错误本身)的流程。

调试技术和策略

以下技术(一种或多种)有助于调试移动应用程序

  • 跟踪日志文件:理想情况下,日志文件提供了足够的信息来了解执行如何从用户操作流向错误。有时,错误也会记录在案,并附有说明。

    然而,这些情况很少见。在大多数情况下,日志文件只提供代码流以及执行过程中不同点的变量的特定值。 Android 日志,使用 Logcat 显示在 Pixel XL 设备上运行的应用程序的输出。在日志旁边,有一个严重性级别面板,显示从信息级别到错误级别的日志。 "调试" 级别的日志记录(在生产中禁用,但在调试期间启用)可以在移动应用程序开发过程中极大地帮助故障排除。
  • 使用断点:现代移动应用程序开发 IDE 在源代码中具有断点功能。断点的工作原理是暂停程序执行,在特定点(称为断点)。 Xcode 中 Swift 代码中的断点示例。在应用程序的有趣部分设置断点,在那里通过文本视图将文本 'Hello, world!' 添加到图像中。 程序暂停后,开发人员可以见证从该点开始的完整流程(每行代码在执行时的单步执行),并确定有错误的代码行。
  • 分析变量值:许多问题是由于变量值不正确造成的。分析不同点的变量值可以帮助追踪影响其值的特定部分。开发人员可以隔离程序部分以缩小范围并确定有问题的行。
  • 分析堆栈跟踪:堆栈跟踪是在控制台上打印的有关这些调用的方法调用及其信息。这些通常在程序执行过程中出现“警告”或“错误”时找到。通过分析这些消息和打印的错误,开发人员可以根据文件名和行号追踪根本原因。

    但是,这种技术可能只在某些情况下产生有益的结果。如前所述,并非移动应用程序中的所有错误都是功能性的。在逻辑错误的情况下,不会有堆栈跟踪,因为在功能上没有发生任何错误来引发错误;因此,这种方法将无法提供任何结果。
  • 涉及异常处理:异常处理是推荐的代码开发实践,以确保代码始终优雅地退出。在调试应用程序时,开发人员可以查看日志文件中的异常,以了解程序执行过程中出现了什么问题。异常主要特定于错误(例如 ValueError),如果与日志记录语句结合使用,可以快速解码根本原因。
  • 外部调试器:对于用于开发移动应用程序的任何流行 IDE,至少有一个第三方调试器可作为扩展使用。在许多情况下,调试器默认情况下会嵌入在 IDE 中。这些调试器具有促进调试过程的功能。

    例如,每个函数或文件都提供所有变量值、功能流程的图形表示以及内存使用情况。使用补充 IDE 的外部调试器是移动应用程序调试的绝佳技术。

移动应用程序的调试工具

开发人员和测试人员可以利用以下工具跨设备调试移动应用程序

  • Android Studio:Android Studio 是一个针对 Android 应用程序优化的 IDE,提供了一个功能强大的平台来调试移动应用程序。它允许开发人员和测试人员通过将应用程序插入安装了 Android Studio 的系统来调试应用程序。

    它提供了诸如启用断点以暂停程序执行、日志记录和变量分析等功能,并且可以在运行时调试应用程序。
  • Xcode:Xcode 是一个具有强大调试功能的 IDE,适用于基于 Apple 的操作系统。Xcode 的主要功能包括代码建议和突出显示,以避免基于语法和编程实践的错误,设置断点以进行详细的程序执行分析等。
  • LambdaTest:LambdaTest 是一个 AI 驱动的测试平台,允许开发人员和测试人员在 5000 多个最新和遗留的真实 Android 和 iOS 设备的虚拟和真实设备云上调试移动应用程序。

    它与各种应用程序分发平台无缝集成,您可以在其中通过从 App Store、Google Play 商店、App Center 和 TestFlight 安装应用程序来调试应用程序。LambdaTest 为 Android 和 iOS 设备提供 UI 检查器,用于移动应用程序调试,从而减少识别和解决根本原因的时间。您可以测试自然手势和交互、QR 码和图像捕捉、生物识别身份验证等。

除了上述工具之外,开发人员和测试人员还可以通过将测试自动化与诸如自动修复(自动检测和修复测试脚本中的问题)和 AI 驱动的根本原因分析 (RCA) 等功能结合起来来增强他们的应用程序调试过程,从而快速识别测试失败的根本原因并建议解决方案,确保高效且可靠的调试和 移动应用程序测试

移动应用程序的调试过程

选择调试工具后,您可以开始进行移动应用程序调试。以下是调试移动应用程序的方法。

  1. 执行功能:测试人员根据文档和验收测试运行应用程序的功能。
  2. 查找并记录错误:执行测试用例;发现的错误记录在错误数据库中。
  3. 尽可能找到根本原因:测试人员记录场景,供开发人员识别和修复错误的根本原因。
  4. 修复错误:开发人员通过将更新后的代码合并到源代码库中来解决和修复错误。
  5. 验证并关闭:测试人员重新验证已修复的代码,如果满足要求则关闭错误。
  6. 探索未来错误:分析过去的错误和测试,以预测和防止未来问题。

总结

开发和调试在每个冲刺/发布周期中都密不可分。加速调试而不会影响质量,使企业能够更快、更自信地交付卓越的产品。通过将测试自动化与自动修复和自动根本原因分析等功能相结合,开发人员和测试人员可以确保高效的测试,从而缩短应用程序开发周期,减少维护工作量,并提高应用程序整体质量。

这是一篇由LambdaTest赞助的文章。LambdaTest 是一款由 AI 支持的测试编排和执行平台,使您能够在 5000 多个环境中执行手动和自动化测试。全球 130 多个国家/地区的 10,000 多家客户和 200 多万用户依靠 LambdaTest 来满足他们的测试需求。

关注 MDN

订阅 MDN 新闻通讯,不错过任何关于最新 Web 开发趋势、技巧和最佳实践的更新。