App测试技术(纯理论)

news2024/7/6 19:17:47

之前我们也学习过一些普通用例的设计, 如功能, 性能, 安全性, 兼容性, 易用性, 界面的测试用例设计, 之前我们讲的基本都是对于Web应用而言的, 这里我们来讲一下移动端的App测试用例设计.

功能方面

安装&卸载测试

这是只属于App的一类测试, 再平常我们使用移动设备(手机/平板)是会经常接触到这个. 主流的就有安卓的Apk安装包, 还有IOS的ipa包.

我们将测试点主要设置在这四个方面: 安装前, 安装中, 安装后, 以及特殊的重复下载.

对于安装前, 比如说我们空间不足了, 是否能给出相关提示.

对于安装中, 安装过程是否是可以取消的? 再次安装是否成功? 安装后是否可以正常运行?

安装后, 主要就是运行了~, 同时还需要面对一些环境测试.

是否可以卸载应用: (1)通过桌面卸载, (2)通过软件界面卸载 (3)通过资源管理器卸载.

然后就是要看看卸载之后的情况: 卸载后图标是否还在? 卸载的干净吗?

最后我们会再次重新安装这个软件, 尝试运行, 如果与运行不成功, 很可能是之前没有卸干净!

对于重复安装的话, 那主要就是看需求了, 一个是允许覆盖性的安装, 不影响使用, 一个是直接提示版本存在. 当然还有一些要看是需求规格说明是怎么说的.

App升级测试

升级测试当然是App的一个特殊点, 在平常的浏览器中, 上面的应用程序都是直接更新的, 而对于App来说, 这就比较复杂了.

我们分位升级前后, 升级的强制性来讲.

升级前: 当有新版本发布时, 在客户端是否有更新提示.

升级后: 我们当然要保旧更新, 首先就是要检测更新后的数据是否有丢失, 这个就主要是升级前后的一个兼容性. 然后的就是新功能是否使用正常.

非强制升级: 用户可以随时取消更新, 同时支持老版本的一个正常使用. 然后根据功能需求, 看看是否有下次上线提示App更新的功能, 对其进行测试.

 强制升级: 顾名思义, 就是你不升级我不让你用, 如果用户不升级的话, 就会强制其退出, 当用户下次使用时, 仍有这个强制升级的提示.(当然要有提示, 不能不经过用户同意, 不经人同意的软件真的很讨厌).

App登陆测试(安全) 

我们在App上面的登录形式很多样, 特殊的就有: 指纹, 二维码, 收拾, 语音, 头像识别, 一键登录.

然后上面讲的是对登录方式的一个扩充, 但重要的是对于权限的一个控制, 很简单: 登录前你能干什么, 登录后你又能干什么?

对于登录的权限, 我们有两种限制: 压根不让进(游戏等), 让进但有功能限制.

对于完全不让进的, 我们就要想办法测试一些越权的行为, 这里我提供一种, 比如登录后注销, 查看页面是否会跳到登录页面.

而对于让进的, 这也是一种主流, 先对用户介绍一下成熟的产品, 吸引读者的兴趣. 但是当用户对于页面的操作, 要进行控制, 当点击某资源/跳转某界面, 就要要求登录. 如抖音评论功能要登录.

而登录方面还有一个重要的测试就是多开情况.

 一种就是允许多开,  这一种的重中之重就是确保两个端的更新能做到及时的同步, 在这一点上也会有一些意想不到的bug, 比如我之前写的博客系统, 嗯用两个浏览器登同一个账号, 点开同一篇自己的文章, 一边删除这个文章后另一边点击更新, 这时页面就有bug.

一种就是不允许多开, 常见于游戏. 即不让两个地方登录. 处理策略也有两种: 一是提示后登录的客户端无法登录, 二是后登录的能进去, 但是前登录的被挤掉了.

最后也有一种是长时间未登录, 过期了(还是看需求哈).

 消息推送测试

在平常使用手机的时候, 当个人专注度不强时就可能被某App的消息吸引过去了, 一吸引少则几十秒, 多则几十分钟, 更多则一天, 比如是QQ, 你以为是女神给你发消息了, 结果一进去是想让你充QQ VIP.

导致你非常的嗯 ? 沮丧? 当然, 开个玩笑, 消息推送作为移动端App的一个重要部分, 我们也要做好测试.

 首先是消息推送功能设置, 我们是让它推送还是不让推送? 这个可以在系统上进行设置, 同时App也要设置这个, 推送功能开启/关闭功能.

然后就是对于用户情况进行一个分配(假设开启了推送功能.)

手机客户端未锁屏时: 当App在后台运行/前台使用, 是否可以推送, 且可点击传送到对应App的对应界面, 注: 能否跳转到对应界面也是个重点, 如果进错了用户就会出现: 我是谁, 我在哪, 我要干什么的疑问.

然后手机客户端为锁屏时, 是否可以正常推送.

然后还要根据登录状态进行测试: 退登后, 是否还会收到消息推送, 再次登录后, 是否能够显示多条推送的信息(我平板上有个原神, 基本不登, 更新时会上去领300原石)

当切换用户时, 推送的消息是否相符.

兼容性方面

这里有些部分是和Web端测试一致的, 当然也有一些是App所独有的(主要是解决适配的问题).

应用是否可在不同操作系统上使用(Andriod/IOS), 一般它们是两个不同的App, 但是功能相似. 然后就是它们是有不同版本的, 要对这个做回归测试. 我这里说一个栗子(不是尬黑).

环境: IPad AIR5, IOS17, QQ 9.0.65

问题: 分屏情况下的QQ空间显示异常行为.

步骤: 打开QQ, 分到左/右屏(占1/3),  将ipad横屏, 发现空间访客消息不存在, 再将ipad竖屏, 发现信息展示异常(说说内容占据比例过大.)

该问题到现在也未解决, 但之前是没有这个问题的(希望鹅能够解决这个问题哈哈哈).

然后就是屏幕尺寸的适应性测试, 手机品牌测试. 分辨率适配性等问题, 这里我就不展开讲了, 但肯定有这种问题.

App中断测试

想像一下这个场景, 打王者正打团呢, 突然, 很快啊, pia, 告诉你电量剩不到10%了, 游戏也给你停住了, 然后你让对面秒了, 这就很难受, 有时几秒就能决定战斗的胜负, 当然对于中断, 用户是不可忍受的, 因此这里要引入App独有的中断测试.

即App被手机行为打扰, App能否正常处理, 保证数据的正确性 -- 运行, 数据

主要核心功能在于实时的数据交换的页面做中断测试. 考察标准就是是否能够正常处理中断情况, 中断后是否能够恢复正常两个方面. (可以类比之前讲过的上下文).

常见的中断包括但不限于: 手机来电, 来短信, 闹铃, 耳机插拔, 断网, 断电, 低电量, 数据线插拔, 蓝牙连接, 前后台切换, 系统状态栏, App切换等.

这里就不展开说了, 提一下几个经典的场景:

爱奇艺播放过程中, 微信电话/电话中断:

正常: app暂停状态, 接听完电话后, 恢复正常(手动/自动)

异常: app卡死, 音视频不同步.

微信视频聊天, 低电量/电话:

正常: 聊天不中断, 关掉提示信息后, 正常通讯

异常: app卡死, 视频断开.

网络测试

不详细说明了, 直接引入分类.

测试 3G/4G/5G/wifi/热点, 网络的切换 -- 用户场景.

例如从wifi切换到4G是否有提示, 生活上的例子就比如当忙碌了一周后, 躺床上疯狂刷抖音, 把抖音都快刷爆了, 然后一开状态栏, 显示你使用了105.68G流量, 这对于一个忙碌的打工人绝对是沉重的打击, 当然有些软件就非常友好, 会提示当前用的是流量, 就非常舒服.

 然后是测试有网/无网状态下是否能正常运行.

就比如从有网->无网的情况下是否能够给出提示, 缓存功能是否正常, 无网->有网的情况下, 数据是否正常恢复, 正常加载(重连). 

弱网

关注弱网场景下是否有合理提示, 且是否有重发机制. 提交数据是否一直处理提交中, 是否有延迟, 数据交换的提醒, 数据多次提交(支付场景, 学校洗澡的那个某某校园app没有处理这个bug, 导致我洗澡充了两次钱, 望周知), 最大尝试次数.

安全性测试

之前在Web端测试时我们着重 讲了SQL注入, XSS注入, 数据传输安全等方面, 接下来介绍App中的特殊的安全性测试 --权限测试.

扣费风险: 就是在一些场景下会提示用户扣费.

隐私泄漏: 指需要用户权限才能访问用户一些私人信息(现在个人隐私泄漏真的很严重!)

开启相册/照相权限, 定位权限, 录音权限等.

注: 这些权限默认情况都是开放的, 需要用户选择.

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

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

相关文章

扩展学习|风险评估和风险管理:回顾其基础上的最新进展

文献来源:[1]Aven, T. (2016). Risk assessment and risk management: Review of recent advances on their foundation. European journal of operational research, 253(1), 1-13. 文章简介:大约30-40年前,风险评估和管理被确立为一个科学领…

Linux环境安装配置nginx服务流程

Linux环境的Centos、麒麟、统信操作系统安装配置nginx服务流程操作: 1、官网下载 下载地址 或者通过命令下载 wget http://nginx.org/download/nginx-1.20.2.tar.gz 2、上传到指定的服务器并解压 tar -zxvf nginx-1.20.1.tar.gzcd nginx-1.20.1 3、编译并安装到…

CCT技术

概念介绍 多个功能核心的集成可以通过片上系统(SOC)或封装中系统(SIP)设备的开发来实现。SOC器件将核心集成到单个集成电路中。SIP集成是将多个集成电路组合到单个封装中。核心数量 的增加可能导致必要的测试人员资源和/或测试时间的增加。这直接影响了与测试这些设备相关的…

【TB作品】打地鼠游戏,ATMEGA16单片机,Proteus仿真 打地鼠游戏

11个按键LCD1602显示器9个灯蜂鸣器打地鼠小游戏就是九个灯泡,对应九个按键,灯泡有红黄蓝,每间隔一会儿就会亮一个灯,代表地鼠冒出来,按一下按键让灯泡灭掉代表打地鼠,红的三分,黄的两分&#xf…

Java案例抢红包

目录 一:题目要求: 二:思路分析:(遇见问题先想出完整的思路逻辑再去动手事半功倍) 三:具体代码: 一:题目要求: 二:思路分析:&#x…

[无广告!纯干货]免费用CodeFlying自动化生成一个专属的AI机器人

前言: 真心话,花3分钟看文章,再花5分钟体验,你会回来给我点赞的。 随着AIGC(人工智能生成内容)行业的迅猛发展,人工智能正在以前所未有的速度和方式改变我们的生活。 它不仅在娱乐、教育、医疗…

Nomad Web 1.0.12还能这样

大家好,才是真的好。 前几天讲代码和开发,忽略了大家的真实感受,那就是不爱开。我也记起来我们很久没有讲Notes/Domino产品的更新,因为除了补丁程序外,确实没多少更新。 不过就在前两天,有一项产品得到了…

惠海100V 15A HC070N10L TO-252封装 N沟道MOS管 打火机/BMS电源板应用

MOS管的工作原理是基于在P型半导体与N型半导体之间形成的PN结,通过改变栅极电压来调整沟道内载流子的数量,从而改变沟道电阻和源极与漏极之间的电流大小。由于MOS管具有输入电阻高、噪声小、功耗低等优点,它们在大规模和超大规模集成电路中得…

【技术追踪】SegGuidedDiff:基于分割引导扩散模型实现解剖学可控的医学图像生成(MICCAI-2024)

它来了它来了,它带着 mask 做生成了~ SegGuidedDiff:提出一种用于解剖学可控医学图像生成的扩散模型,在每个采样步骤都遵循多类解剖分割掩码并结合了随机掩码消融训练算法,可助力乳房 MRI 和 腹部/颈部到骨盆 CT 等任务涨点。 论文…

基于pycharm对每个工程配置python环境

目录 1 生成环境2 配置pycharm 1 生成环境 设定一个存放虚拟环境的目录,比如可以放在如下目录下: /Users/Name/PycharmProjects/env 然后生成虚拟环境,执行如下操作: python3 -m venv /Users/Name/PycharmProjects/env/agent_pr…

AI基本概念(人工智能、机器学习、深度学习)

人工智能 、 机器学习、 深度学习的概念和关系 人工智能 (Artificial Intelligence)AI- 机器展现出人类智慧机器学习 (Machine Learning) ML, 达到人工智能的方法深度学习 (Deep Learning)DL,执行机器学习的技术 从范围…

视频转音频:怎样提取视频中的音频?6个提取音频的小技巧(建议收藏)

怎样提取视频中的音频?当我们想从视频中提取出声音时,通常会遇到很多问题。无论是想单独提取出视频里的音频,还是把它转成方便储存或者分享的音频格式,这都会涉及到视频转音频的一个需求。因此,在这篇指南里&#xff0…

网络变压器和RJ45接线的方法

网络变压器在以太网硬件电路设计中扮演着重要的角色,它主要用于信号电平耦合、隔离外部干扰、实现阻抗匹配以及增加传输距离。而RJ45接口则是以太网连接的标准化接口,它提供了与网络电缆的连接点。 网络变压器与RJ45的接线方法通常遵循以下步骤&#xf…

Android- Framework 非Root权限实现修改hosts

一、背景 修改system/etc/hosts,需要具备root权限,而且remount后,才能修改,本文介绍非root状态下修改system/etc/hosts方案。 环境:高通 Android 13 二、方案 非root,system/etc/hosts只有只读权限&…

Linux源码阅读笔记08-进程调度API系统调用案例分析

kthread_create_on_node kthread_create_on_node函数功能&#xff1a;指定存储节点创建新内核线程。源码如下&#xff1a; 操作实战 #include <linux/module.h> #include <linux/pid.h> #include <linux/sched.h> #include <linux/kthread.h> #inclu…

Docker 镜像导出和导入

docker 镜像导出 # 导出 docker 镜像到本地文件 docker save -o [输出文件名.tar] [镜像名称[:标签]] # 示例 docker save -o minio.tar minio/minio:latest-o 或 --output&#xff1a;指定导出文件的路径和名称[镜像名称[:标签]]&#xff1a;导出镜像名称以及可选的标签 dock…

一招解决 | IP地址访问怎么实现https

没有域名的情况下&#xff0c;使用IP地址实现HTTPS访问是可以的&#xff0c;但相比使用域名会有些许限制&#xff0c;需要通过部署专用于IP地址的SSL/TLS证书来实现。 IP地址实现HTTPS访问的过程与使用域名类似&#xff0c;但有几个关键的区别。以下是使用IP地址实现HTTPS访问…

CrimsonEDR:一款恶意软件模式识别与EDR策略评估工具

关于CrimsonEDR CrimsonEDR是一个功能强大的开源项目&#xff0c;该项目旨在帮助广大研究人员识别特定的恶意软件模式&#xff0c;以此来优化终端检测与响应&#xff08;EDR&#xff09;的策略方案。通过使用各种不同的检测方案&#xff0c;可以加深开发人员与研究人员加深对安…

Nginx 配置文件

Nginx的配置文件的组成部分&#xff1a; 主配置文件&#xff1a;nginx.conf子配置文件&#xff1a;include conf.d/*.conf 全局配置 nginx 有多种模块 核心模块&#xff1a;是 Nginx 服务器正常运行必不可少的模块&#xff0c;提供错误日志记录 、配置文件解析 、事件驱动机…

python基础语法 004-2流程控制- for遍历

1 遍历 1.1 什么是遍历&#xff1f; 可以遍历的元素&#xff1a;字符串、列表、元组、字典、集合字符串是可以进行for 循环。&#xff08;容器对象&#xff0c;序列&#xff09;可迭代对象iterable 例子&#xff1a; 1 &#xff09;、for遍历字符串&#xff1a; name xiao…