中断测试有助于移动测试人员识别与系统或用户行为相关的潜在风险以便在发生流量干扰时能够识别出可能导致意想不到或不期望结果的问题。让我们深入探讨中断测试的细节及其手动或程序化实现方式。本文还介绍了用于自动化测试过程、加快测试执行速度并向用户提供高质量应用的移动工具例如 Appium WebDriver。什么是中断测试APP中断测试是一种软件测试方法专注于评估移动应用程序在遭遇意外中断或外部事件干扰时的响应能力与稳定性。这些中断可以是由用户操作、系统事件、网络条件变化或其他应用程序的活动触发的。中断测试旨在确保应用能够优雅地处理这些中断并在中断事件结束后恢复到预期状态从而提供良好的用户体验。“中断”这个词对于任何人来说都是一个令人不快的词除非它的后果能为被中断的工作带来更好的前景。任何形式的工作中断通常都被认为是不可接受的因为它不仅阻碍了进度还中断了与任务相关的连续性和节奏。虽然人类在受到干扰后通常能够回忆起并继续完成任务但这样会让你失去注意力和节奏。为什么要进行中断测试提高用户体验在现实使用中用户可能随时因为电话、短信、通知、切换应用或设备锁定等事件而中断应用操作。如果应用不能妥善处理这些中断可能会导致数据丢失、应用崩溃或用户界面混乱严重影响用户体验。确保数据一致性与完整性中断测试帮助验证在中断发生前后应用内部数据和用户数据是否保持一致性和完整性避免因中断造成的数据损坏或丢失。增强应用稳定性通过模拟各种中断场景开发者能发现并修复潜在的稳定性问题增强应用在不同环境下的健壮性。满足真实使用场景移动设备用户经常在复杂的网络环境和多任务操作下使用应用中断测试确保应用在这些复杂的真实世界情境中仍能正常工作。优化资源管理中断测试还能揭示应用在资源管理方面的问题比如内存泄漏或不恰当的资源占用尤其是在长时间后台运行或被系统暂停后恢复时。遵循操作系统行为随着操作系统更新新的中断行为或规则可能出现中断测试有助于确保应用与最新操作系统特性兼容正确响应系统级中断。中断测试的类型中断测试涉及多种类型以确保应用程序能够在不同的外部事件或用户操作中断后仍能正常运行。以下是一些常见的中断测试类型来电中断呼叫挂断测试应用在用户接听电话后挂断通话时的表现。被呼叫挂断当应用正在运行时用户接到电话并选择挂断来电的表现。通话挂断用户在使用应用过程中主动结束通话的处理情况。通话被挂断对方结束通话后应用的恢复情况。通知中断接收短信检查应用在收到短信时的响应和恢复能力。查看短信用户中断应用操作去查看并回复短信后应用能否正常恢复。通知栏通知应用在接收到系统或其他应用的通知时的表现。电源管理中断电池电量不足测试低电量警告弹出时应用的行为。充电状态改变插拔充电器时应用是否能正确响应电量变化。电池耗尽自动关机模拟电池完全耗尽导致的关机对应用的影响。网络中断与变化网络切换从Wi-Fi切换到移动数据或反之应用的连接处理能力。网络信号弱/丢失在弱网或无网络环境下应用的容错与恢复机制。飞行模式切换开启和关闭飞行模式时应用对网络断开和重连的处理。多任务与应用切换应用切换用户在多个应用之间切换时应用的状态保存与恢复。后台运行应用在后台长时间运行或被系统暂停后的表现。硬件按钮中断锁屏/解锁测试锁屏和解锁操作对应用状态的影响。Home键/最近任务键按下Home键回到桌面或使用最近任务键切换应用的反应。系统更新中断系统更新在操作系统更新过程中或更新后应用的兼容性和稳定性。外部设备中断耳机插拔耳机连接或断开时音频相关应用的功能表现。蓝牙设备连接/断开蓝牙设备交互时的稳定性测试。电话如果一个应用程序正在运行并且收到了一个来电测试应用程序如何处理中断是很重要的。它是暂停还是停止运行它是否允许用户在接听电话的同时继续使用该应用程序例如使用模拟器执行以下命令adbadb shell am start -a android.intent.action.CALLAI写代码c运行1或者在带有扩展控制的模拟器上进行呼叫测试短信与打电话类似收到的短信也会打断应用程序并导致其暂停或退出。这种类型的中断测试应用程序在被使用时如何处理收到的短信并确保在中断结束后应用程序能够正确地恢复运行。例如在模拟器上使用adb模拟一条短信通知或警报移动应用通常会发送推送通知提醒用户有关新事件或更新的信息。测试应用程序如何处理通知以及用户在通知显示期间是否能够继续使用应用程序是很重要的。系统警报操作系统可能会发出警报或通知来中断应用程序的运行。重要的是要测试应用程序如何处理这些中断以及它是否允许用户在显示警报时继续使用应用程序。系统更新该系统可以终止应用程序的进程。如果在应用程序正在运行时设备的操作系统被更新可能会中断应用程序并导致其关闭。重要的是要测试应用程序如何处理这些中断并确保在更新完成后应用程序可以正确地恢复运行。低电量或电力不足如果设备电池电量低或设备断电可能会中断应用程序并导致其关闭。测试应用程序如何处理中断以及是否允许用户在设备充电时继续操作并保存所有重要数据非常重要。多任务处理 | 应用程序切换 | 多窗口许多移动设备允许用户同时执行多个任务并切换多个应用程序。测试应用程序如何处理多任务操作以及是否允许用户在使用其他应用程序的同时继续使用该应用程序非常重要。应用程序切换测试了应用程序在从前景切换到后台时的处理方式。设备屏幕旋转这种中断测试了应用程序如何处理设备从竖屏模式切换到横屏模式或反之的过程。我们需要验证用户进度在屏幕旋转前后是否保持完整。最近我发现一个移动电商应用程序存在一个bug由于购物车元素在横屏模式下不可见/不可用导致端到端用户流程无法完成。网络环境如果设备的网络连接在应用程序运行期间发生变化例如从WiFi切换到移动数据可能会中断应用程序并导致其行为发生变化。有时即使移动信号较弱WiFi信号也可能很强。如果出现这种情况用户可能会连接到WiFi网络以寻求改善。为了测试移动信号的质量可以考虑移至较高的位置并尝试不同的位置因为移动塔的位置很重要。另一个好主意是在移动应用测试策略中包括各种网络速度4G、5G等。测试应用程序如何处理这些中断并确保其在不同网络条件下正常运行非常重要。此外在预期有大量活动的情况下提前重新评估应用程序的网络需求是明智之举重点是确保为客户提供可靠的网络体验。例如将于2024年4月8日发生的日全食就像其他天文事件一样可能会影响网络性能。如图所示北美地区的网络弹性可能会受到影响。沿“日全食路径”的各个地点吸引了最多的人群。虽然无线网络不受影响但当地居民和游客的网络使用激增可能会导致稳定的连接变得稀缺。在应用程序使用过程中可能会出现各种类型的中断因此进行此类中断测试至关重要以确保应用程序能够提供流畅、无缝、不间断、稳定且一致的用户体验。可以考虑将负载测试纳入移动性能策略同时考虑各种网络速度/条件和电池电量组合的情况。语言输入我们的开发人员可能只根据一套狭窄的规格进行操作并对用户输入的类型做出假设。在我之前的一篇文章《像测试人员一样思考》中我讨论了在国际化和本地化测试的背景下测试人员应具备的用户同理心。来自世界各地不同地区的用户可能需要Unicode支持来准确完成以他们母语书写的表格。我们需要测试的内容包括对多种语言的支持、不同的时区、不同的数字格式、不同格式的文本从左到右 vs 从右到左等。后退按钮Android Activity的默认行为假设用户按下“返回”键时没有期望回到同一实例的活动。移动开发者可以根据其应用程序的具体需求和规格对这一场景进行定制。无论我们选择哪种设计/开发应用程序的方式都要确保测试系统“返回”行为不会给用户带来不适。Android 生命周期中断一个实现不当的Android Activity生命周期可能会导致以下结果如果用户在使用我们的应用程序时接到电话或切换到其他应用程序可能会出现崩溃。当用户没有主动使用时占用宝贵的系统资源。如果用户离开我们的应用并在稍后返回则会丢失他们的进度。当屏幕在纵向和横向方向之间旋转时导致程序崩溃或丢失用户的进度。将电池测试与生命周期中断测试结合起来可能很有用这样可以观察到在应用程序中触发大量中断和用户输入时电池的使用情况。测试Android应用程序Android Activity 是我们应用程序中用户交互的容器因此在设备级事件如以下事件期间测试应用程序的活动行为非常重要另一个应用程序比如设备上的电话应用会打断我们应用程序的活动。该系统摧毁并重构了我们的活动。用户可以在新的窗口环境中打开我们的活动例如画中画PIP或多窗口。尤其是确保我们的活动在理解活动生命周期中所描述的事件时能够正确地响应是非常重要的。不同的事件有些是用户触发的有些是系统触发的可以导致Activity从一个状态转换到另一个状态。《Activity状态转换》文档描述了此类转换的常见情况以及如何处理这些转换。Android平台上的手动和程序中断测试性能、稳定性、用户场景压力测试和中断测试是移动测试过程中的重要部分。借助工具移动测试人员可以确定应用程序是否存在任何潜在的性能或稳定性问题。为了测试我们的应用程序对中断的响应可以在使用应用程序时手动触发大量通知到设备上。通知可以是收到的消息、来电、应用程序更新或推送通知软件中断。此外按下音量键上下或其他任何硬件按钮也是一种中断硬件中断也会对我们的应用程序产生影响。减轻手工测试的负担手动完成所有这些任务需要耗费大量时间和精力。通常情况下这些测试用例无法手动完成因为很难用一只或两只手模拟快速且多用户的输入。但是借助工具就可以完成这些任务而且很容易将它们集成到开发和测试过程中。使用ADB做Monkey测试对于Android应用可以使用名为Monkey的工具它是Android SDK软件开发工具包的一部分。Monkey可以在物理设备或模拟器上运行。运行时它会生成随机的用户事件如触摸、点击、旋转、滑动、静音、断开网络连接等以对应用进行压力测试并查看应用如何处理这些输入和中断。要运行Monkey需要Android .apk文件的包名。否则它将执行随机命令以控制整个手机。当包名在此示例中为 com.appiumpro.the_app 可用时使用 adb Android调试桥运行Monkeyadb shell monkey -p com.appiumpro.the_app -v 2000数字 2000 表示 Monkey 将要执行的随机命令的数量。通过添加参数 -s 用于设置种子Monkey 可以再次生成相同的事件序列。这对于重现运行 Monkey 时可能出现的 bug 非常重要。猴子工具可以轻松地对移动应用程序进行压力测试和中断测试。这对移动测试人员来说很有帮助因为它有助于团队构建可靠且健壮的移动应用程序。使用Appium自动化Android应用程序交互性能指标Appium的“执行脚本重载”功能允许我们自动化几乎所有类型的Android调试桥命令。在我之前的一篇文章中我在“Shell Interactions”部分讨论了自动化ADB shell命令例如 dumpsys battery 、 cpuinfo 和 meminfo 。网络环境使用b0函数我们可以进一步利用Android shell进行网络测试。例如我们可以将ADB命令作为参数传递给b1WebDriver函数。下面的命令可以打开和关闭移动网络和WiFi服务adb shell svc data enable adb shell svc data disable adb shell svc wifi enable adb shell svc wifi disable感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取