APP中断测试知多少

news2024/11/15 7:51:53

中断测试有助于移动测试人员识别与系统或用户行为相关的潜在风险,以便在发生流量干扰时能够识别出可能导致意想不到或不期望结果的问题。

让我们深入探讨中断测试的细节及其手动或程序化实现方式。本文还介绍了用于自动化测试过程、加快测试执行速度并向用户提供高质量应用的移动工具,例如 Appium WebDriver。

什么是中断测试?

APP中断测试是一种软件测试方法,专注于评估移动应用程序在遭遇意外中断或外部事件干扰时的响应能力与稳定性。这些中断可以是由用户操作、系统事件、网络条件变化或其他应用程序的活动触发的。中断测试旨在确保应用能够优雅地处理这些中断,并在中断事件结束后恢复到预期状态,从而提供良好的用户体验。

“中断”这个词对于任何人来说都是一个令人不快的词,除非它的后果能为被中断的工作带来更好的前景。任何形式的工作中断通常都被认为是不可接受的,因为它不仅阻碍了进度,还中断了与任务相关的连续性和节奏。虽然人类在受到干扰后通常能够回忆起并继续完成任务,但这样会让你失去注意力和节奏。

为什么要进行中断测试?

提高用户体验:在现实使用中,用户可能随时因为电话、短信、通知、切换应用或设备锁定等事件而中断应用操作。如果应用不能妥善处理这些中断,可能会导致数据丢失、应用崩溃或用户界面混乱,严重影响用户体验。

确保数据一致性与完整性:中断测试帮助验证在中断发生前后,应用内部数据和用户数据是否保持一致性和完整性,避免因中断造成的数据损坏或丢失。

增强应用稳定性:通过模拟各种中断场景,开发者能发现并修复潜在的稳定性问题,增强应用在不同环境下的健壮性。

满足真实使用场景:移动设备用户经常在复杂的网络环境和多任务操作下使用应用,中断测试确保应用在这些复杂的真实世界情境中仍能正常工作。

优化资源管理:中断测试还能揭示应用在资源管理方面的问题,比如内存泄漏或不恰当的资源占用,尤其是在长时间后台运行或被系统暂停后恢复时。

遵循操作系统行为:随着操作系统更新,新的中断行为或规则可能出现,中断测试有助于确保应用与最新操作系统特性兼容,正确响应系统级中断。

中断测试的类型

中断测试涉及多种类型,以确保应用程序能够在不同的外部事件或用户操作中断后仍能正常运行。以下是一些常见的中断测试类型:

来电中断:

呼叫挂断:测试应用在用户接听电话后挂断通话时的表现。

被呼叫挂断:当应用正在运行时,用户接到电话并选择挂断来电的表现。

通话挂断:用户在使用应用过程中主动结束通话的处理情况。

通话被挂断:对方结束通话后,应用的恢复情况。

通知中断:

接收短信:检查应用在收到短信时的响应和恢复能力。

查看短信:用户中断应用操作去查看并回复短信后,应用能否正常恢复。

通知栏通知:应用在接收到系统或其他应用的通知时的表现。

电源管理中断:

电池电量不足:测试低电量警告弹出时应用的行为。

充电状态改变:插拔充电器时,应用是否能正确响应电量变化。

电池耗尽自动关机:模拟电池完全耗尽导致的关机对应用的影响。

网络中断与变化:

网络切换:从Wi-Fi切换到移动数据或反之,应用的连接处理能力。

网络信号弱/丢失:在弱网或无网络环境下应用的容错与恢复机制。

飞行模式切换:开启和关闭飞行模式时,应用对网络断开和重连的处理。

多任务与应用切换:

应用切换:用户在多个应用之间切换时,应用的状态保存与恢复。

后台运行:应用在后台长时间运行或被系统暂停后的表现。

硬件按钮中断:

锁屏/解锁:测试锁屏和解锁操作对应用状态的影响。

Home键/最近任务键:按下Home键回到桌面或使用最近任务键切换应用的反应。

系统更新中断:

系统更新:在操作系统更新过程中或更新后应用的兼容性和稳定性。

外部设备中断:

耳机插拔:耳机连接或断开时,音频相关应用的功能表现。

蓝牙设备连接/断开:蓝牙设备交互时的稳定性测试。

电话

如果一个应用程序正在运行,并且收到了一个来电,测试应用程序如何处理中断是很重要的。它是暂停还是停止运行?它是否允许用户在接听电话的同时继续使用该应用程序?

例如,使用模拟器执行以下命令:adb

adb shell am start -a android.intent.action.CALL
  • 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调试桥)运行Monkey:

adb 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

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:


 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2111070.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式

目录 前言: 士兰微电子介绍 士兰微 SC32F5432介绍 士兰微 SC32F5432 通过配置寄存器方式 将管脚配成开漏输出模式和TTL输入模式 开漏输出模式 TTL输入模式 前言: 下面是对我在工作时公司所使用的一款国产芯片(士兰微 SC32F5432&#x…

【Qt】事件的处理

事件的处理 事件的处理,让一段代码和某个事件关联起来,当事件触发的时候,就能指定这段代码。在之前学习的信号槽是通过 connect 来完成上述关联的,对于事件来说,需要让当前的类,重写某个事件处理函数。这里…

【服务对接】✈️SpringBoot 项目整合华为云 obs 对象存储服务

目录 👋前言 👀一、环境准备 🌱二、整合实现 1.依赖引入 2.准备 AK 和 SK ​ 3.配置类 4.obs 工具类封装 💞️三、测试使用 🍻四、 obs 客户端 📫五、章末 👋前言 小伙伴们大家好&…

2024国赛数学建模C题完整论文:农作物的种植策略

农作物种植策略优化的数学建模研究(完整论文,持续更新,大家持续关注,更新见文末名片 ) 摘要 在本文中,建立了基于整数规划、动态规划、马尔科夫决策过程、不确定性建模、多目标优化、相关性分析、蒙特卡洛…

Packet Tracer - 单区域OSPFv2的配置方法以及思路

Packet Tracer - 单区域OSPFv2的配置思路 1、思路前夕查看 做这个的时候大家了解一下通配符,不然不理解这个东西为什么子网掩码为什么会取反 这里给大家简单演示一下 2、使用进程 ID 10 在所有路由器上激活 OSPF。 在 Headquarters 网络中的路由器上使用 network…

FxFactory 8 for Mac 视觉特效插件包安装

Mac分享吧 文章目录 介绍页面效果一、下载软件二、开始安装1、Install安装2、显示软件页面,表示安装成功3、补丁安装 三、注意事项1、若已安装过其他版本,需要使用软件自带的卸载功能进行软件卸载,再安装此版本 安装完成!&#x…

pod install 报错处理

由于墙的原因,pod install 、 pod update经常报错 有效的解决方案(推荐): 以SnapKit为例 找不报错的同事要以下两个文件(指定的版本) 1. /Users/xxx/Library/Caches/CocoaPods/Pods/Release/SnapKit 2. /Users/xxx/Library/Cac…

后缀表达式转中缀表达式

假定有后缀表达式1 2 3 4 * 5 – ,请将它转化为前缀表达式。 利用表达式树: 1.从左到右扫面后缀表达式,一次一个符号读入表达式。2.如果符号是操作数,那么就建立一个单节点树并将它推入栈中。如果符号是操作符,那么…

针对不同区域的摄像头,完成不同的算法配置的智慧快消开源了

智慧快消视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。 基于多年的深度…

JAVAEE初阶第六节——网络编程套接字

系列文章目录 JAVAEE初阶第六节——网络编程套接字 文章目录 系列文章目录JAVAEE初阶第六节——网络编程套接字 一. 网络编程基础1. 为什么需要网络编程2. 什么是网络编程3.网络编程中的基本概念 3.1 发送端和接收端 3.2 请求和响应 3.3 客户端和服务端 4. 常见的客户端服务…

求二叉树的深度——(力扣c语言)

题目如下: 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&#xff1a…

[网络编程]TCP和UDP的比较 及 通过java用UDP实现网络编程

文章目录 一. 网络编程套接字TCP和UDP的特点有连接 vs 无连接可靠传输 vs 不可靠传输面向字节流 vs 面向数据报全双工 vs 半双工 二. java用UDP实现网络编程代码实现:运行代码:启动多个客户端别人能否使用?实现翻译功能 一. 网络编程套接字 网络编程套接字, 就是指操作系统提…

linux 部署Ollama本地大模型

简介 llama 是一个大模型的管理框架,其作用类似于 Docker:如果将每一个标准化的大模型视为“镜像”,那么 Ollama 就能够通过一行命令快速拉取并运行这些大模型。然而,Ollama 本身是基于命令行的服务,所以为了方便我们…

足底筋膜炎怎么治

足底筋膜炎是一种常见的足部疾病,其主要症状及治疗方法如下: 一、症状 1、‌疼痛‌:足底筋膜炎最典型的症状是足跟或足底靠近足跟处的疼痛。这种疼痛在晨起或长时间休息后初次站立时尤为明显,但行走一段时间后可能会逐渐缓解。 …

超级兔子and这三款数据恢复软件,我的数据守护神!!

在数字化的时代,数据丢失已经成为了一个令人头疼的问题。无论是误删重要文件,还是硬盘出现故障,数据的丢失都可能带来不可估量的损失;幸运的是,有了超级兔子这这三款数据恢复软件这样的工具,让数据找回变得…

AI基础 L1 Introduction to Artificial Intelligence

什么是AI Chinese Room Thought Experiment 关于“强人工智能”的观点,即认为只要一个系统在行为上表现得像有意识,那么它就真的具有理解能力。 实验内容如下: 假设有一个不懂中文的英语说话者被关在一个房间里。房间里有一本用英文写的中…

【C++】list类:模拟实现(适合新手的手撕list)

提示:在开始模拟实现list前,最好先熟悉下list相关接口: 【C】容器list常用接口详解-CSDN博客https://blog.csdn.net/2301_80555259/article/details/141756824?spm1001.2014.3001.5501 目录 一.基本结构 二.构造函数 三.析构函数 四.迭代…

拍卖新纪元:Spring Boot赋能在线拍卖解决方案

需求分析 1.1技术可行性:技术背景 在线拍卖系统是在Windows操作系统中进行开发运用的,而且目前PC机的各项性能已经可以胜任普通网站的web服务器。系统开发所使用的技术也都是自身所具有的,也是当下广泛应用的技术之一。 系统的开发环境和配置…

ant mobile design组件库的PickerView组件不能滑动

问题 PickerView组件在开发环境可滑动,在测试环境不可滑动 正常开发环境是这样正常显示,并且可滑动的 发到测试环境后,变成了这样,并且只有中间那列可滑动,两边的都不能滑动,而且还会报警告 封装的组件…

修改服务器DNS解析及修改自动对时时区

修改服务器DNS解析: 1、搜索一下当地的DNS服务器的地址 2、登录服务器,执行 vim /etc/resolv.conf文件,在nameserver字段后填写DNS服务的地址 3、chattr i /etc/resolv.conf 加上不可修改权限,防止重启DNS被修改 修改自动对时…