如何跨设备调试移动应用程序
移动应用中的缺陷会对用户体验产生负面影响,常常会影响访问者的第一印象并增加卸载率。当用户遇到缺陷时,他们会频繁选择替代应用,从而导致客户和收入流失。
因此,企业应将开发健壮且无缺陷的应用作为留住客户战略的一部分。在用户使用的众多设备类型上进行调试具有挑战性,但对于维护长期用户体验至关重要,这使得移动应用测试成为该过程的关键组成部分。
什么是移动应用调试?
移动应用调试是指在理想情况下,在发布给用户之前找到并修复缺陷的过程。缺陷通常归因于功能性流程的失败。然而,情况并非总是如此。
例如,API响应时间过长可以归类为缺陷,但它与移动应用程序任何模块的核心功能无关。同样,调试不一定意味着修复移动应用的功能方面,而是修复任何对用户有影响的应用问题,甚至是实施可以防止以后出现问题的修复。
通常,开发人员使用调试技术来实时查看功能和修复程序在开发过程中的行为。测试人员使用调试来探索漏洞以及应用程序如何处理在开发阶段可能未曾预料到的使用情况,通常会利用真实设备云来确保跨各种环境进行彻底测试。
为什么要在多台设备上调试移动应用?
如上所述,调试过程的步骤可能不是移动应用调试周期的终点。在调试周期中需要考虑的另一个参数是存在数千种类型的移动设备。
例如,在下面的快照中,仅考虑屏幕尺寸作为这三台设备的差异,并观察 UI 设计应如何相应地进行更改。

屏幕尺寸只是移动设备可能存在差异的一个方面。如果考虑到其他设备特性,在开发生命周期早期在多台设备上进行调试变得越来越重要。让我们看看设备可能独有的几种方式。
-
极高的设备碎片化:当今的设备具有独特的规格,而每种规格都会影响应用程序的呈现。
有些可能有不同的屏幕尺寸,而有些则具有不同的处理能力。这使得应用程序在各种设备上的编译、执行和运行有所不同。 -
操作系统差异:StatCounter报告显示,Android和iOS占全球移动市场份额的99.34%。然而,测试两个操作系统比实际情况要复杂得多,因为每个操作系统每年都会向最终用户发布新版本。
每个新操作系统版本都包含弃用、较新的 API 和现有方法的优化。这些更改会影响应用程序的工作方式和开发方式,并可能导致缺陷。 -
厂商 UI 修改:Android操作系统是开源的,欢迎根据手机制造商的要求进行下游修改。
一个很好的例子是三星的 One UI。该公司使用新发布的 Android 的源代码,并在内部对 UI 进行更改。这使得他们的设备与其他制造商的设备不同。然而,测试人员应该明白,这种变化发生是因为与“纯粹”Android相比,One UI 中的 UI 元素设计和分析方式不同。
因此,厂商特定的更改可能会导致应用程序 UI 中出现缺陷,使其成为测试和调试周期中的一个重要行动项。 -
显著的系统更改:许多制造商更改了 Android 的通用设计(包括核心内核功能),并将其集成到他们的设备中。这种修改的一个例子是 OnePlus 的 OxygenOS。
此 OS 修改会影响移动应用程序的功能方面,使其在某些操作系统上的运行方式与 Android 不同。 -
硬件优化:许多设备制造商聘请专家根据其软件优化硬件以提高性能。优化包括完整的 SOC 设计和开发、自定义电池放电速率以及散热管理。
所有这些因素对于移动应用行为都至关重要。因此,由于这些优化,一个设备上的缺陷可能在另一个设备上出现(或不出现)。
当上述几点结合在一起时,就应该更清楚地看出为什么每个设备,无论它与其他设备有多大差异,都必须放置在设备场中并纳入所有调试周期。
如何在多台设备上调试移动应用?
一旦找到缺陷,就使用一种或多种技术和策略来暴露其根本原因,从源头追踪到输出(缺陷本身)。
调试技术和策略
以下技术(一种或多种)有助于调试移动应用程序。
-
跟踪日志文件:理想情况下,日志文件应提供足够的信息来了解执行如何从用户操作流向缺陷。有时,错误也会被记录下来并附有描述。
然而,这些情况很少见。大多数时候,日志文件仅提供代码流程和执行过程中各种变量的特定值。
“Debug”级别的日志记录在生产环境中被禁用,但在调试期间启用,可以极大地帮助移动应用开发过程中的故障排除。
-
使用断点:现代移动应用开发 IDE 在源代码中具有断点功能。断点的工作原理是在特定点(称为断点)暂停程序执行。

程序暂停后,开发人员可以逐个步骤(每行代码执行时)观察从该点开始的完整流程,并确定有缺陷的代码行。
-
分析变量值:许多问题是由于变量值不正确引起的。在不同点分析变量值有助于追踪影响其值的特定部分。开发人员可以隔离程序的一部分来缩小范围并识别有问题的行。
-
分析堆栈跟踪:堆栈跟踪是方法调用,其中包含关于这些调用的信息并打印到控制台。当程序执行期间出现“警告”或“错误”时,通常会发现这些信息。开发人员可以通过分析这些消息和打印的错误来追踪文件名称和行号的根本原因。
但是,此技术并非总是能产生有益的结果。如前所述,移动应用中的所有缺陷不一定都是功能性的。对于逻辑缺陷,不会有堆栈跟踪,因为功能上没有任何问题导致错误;因此,此方法无法提供任何结果。 -
引入异常处理:异常处理是一项推荐的代码开发实践,以确保代码始终能优雅地退出。在调试应用程序时,开发人员可以查看日志文件中的异常,以了解程序执行期间出现了什么问题。异常主要针对特定错误(如 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 Store、App Center 和 TestFlight 安装应用来调试应用。LambdaTest 为 Android 和 iOS 设备提供 UI Inspector,用于移动应用调试,从而缩短了识别和解决根本原因的时间。您可以测试自然手势和交互、QR 码和图像捕获、生物识别身份验证等。
除了上述工具之外,开发人员和测试人员还可以通过结合测试自动化并利用诸如自动修复(自动检测和修复测试脚本中的问题)和 AI 驱动的根本原因分析(RCA)(快速识别测试失败的根本原因并提供修复建议)等功能来增强其应用调试过程,从而实现高效可靠的调试和移动应用测试。
移动应用的调试过程
选择调试工具后,您就可以开始移动应用调试了。以下是执行移动应用调试的方法。
- 执行功能:测试人员按照文档和验收测试运行应用的功能。
- 查找并记录缺陷:执行测试用例;在缺陷数据库中记录找到的缺陷。
- 如果可能,找出根本原因:测试人员记录场景供开发人员识别和修复缺陷的根本原因。
- 修复缺陷:开发人员通过将更新的代码合并到源代码库中来解决和修复缺陷。
- 验证并关闭:测试人员重新验证修复后的代码,并在满足要求时关闭缺陷。
- 探索未来缺陷:分析过去的缺陷和测试,以预测和防止未来的问题。
总结
在每个冲刺/发布周期中,开发和调试是相辅相成的。加速调试而不影响质量,能够使企业更快、更自信地交付卓越的产品。通过将测试自动化与自动修复和自动化根本原因分析等功能相结合,开发人员和测试人员可以确保高效的测试,从而加快应用开发周期,减少维护工作,并提高整体应用质量。
这是一篇由LambdaTest赞助的文章。LambdaTest 是一个由 AI 驱动的测试编排和执行平台,可让您在 5000 多个环境中执行手动和自动化测试。来自 130 多个国家/地区的 10,000 多家客户和 200 万用户依赖 LambdaTest 来满足其测试需求。