【软件测试】设计测试用例的万能公式
文章目录
- 概念
- 设计测试用例的万能公式
- 常规思考+逆向思维+发散性思维
- 万能公式
- 水杯测试
- 弱网测试
- 如何进行弱网测试
- 安装卸载测试
概念
什么是测试用例?
测试⽤例(Test Case
)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
现在买回来了一个新的电视,需要测试,根据个人的经验:
- 开机测试
- 切换频道
- 调一下分辨率
- 测试一下网络电视
- 蓝牙功能
这些是我们买完电视之后一定会做的测试内容,而这些测试内容并不会写在纸上,以文字的形式展示出来。这里的一条一条表述就是一个测试用例
软件中涉及到的特性太多了,仅仅通过头脑风暴是无法完成一次完整的测试的。编写测试用例,通过编写测试用例我们可以想到要测试哪些内容,通过一次又一次的更新修改,将测试用例写到完成,功能覆盖率高即可
编写测试用例也有讲究(编写测试用例要素),但是这种讲究在很早之前用的比较多,现在用的比较少
- 笔试的时候编写测试用例题,需要按照
Excel表格
的方式来答题(会涉及到测试用例的要素);而笔试的时候回答测试用例题,按照思维导图的方式一一道来即可(不会涉及到测试用例的要素)
设计测试用例的万能公式
案例:
现在有⼀款产品,要求我们对“⻔锁”设计测试⽤例,假如你是测试⼈员,你会怎么设计呢?
- 自己设计出来的测试用例整体上来说是合格的,但是说出来的测试用例不够具体,太笼统了,无法作为测试工具的参考依据
- 工作中,测试用例的设计并不是越多越好,而是能够达到更大的功能覆盖率则是更好的
- 但是在学习中,测试用例的设计一定是越多越好的
常规思考+逆向思维+发散性思维
设计测试用例的原则二:
- 测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应该根据无效和未预料到的输入情况
- 检查程序是否“未做其应该做的”仅是成功的一般,测试的另一半是检查程序是否“做了其不应该做的”(是上一条原则的必然结果)
- 计划测试工作时不应默许假定不会发现错误
打开思维后,设计测试用例是想到一条说一条,没有正确的引导,说出来的测试用例一定是有限的且数量不容乐观
女朋友说:我想喝东西
- 饮料
- 奶茶
- 果汁
- 茶饮
- …
- 矿泉水
- 康师傅
- 农夫山泉
- 怡宝
- …
- 美食里的
- 玉米汁
- 蔬菜汤
- 西湖牛肉羹
- …
说出家里的电器:电视机、电冰箱、空调… 突然脑袋宕机了,明明家里的电器非常多,但就是怎么都想不起来
- 厨房里的电器:洗碗机、油烟机、电饭煲、电煮锅…
- 客厅里的电器:电风扇、按摩椅、空调、灯、电话…
- 卧室里的电器:电视、台灯、除螨仪、扫地机器人…
- 卫生间里的电器:热水器、吹风机、刮胡刀、浴霸…
万能公式就是一个引导的作用,帮助大家按照分类来设计测试用例
万能公式
设计测试用例的万能公式:功能测试+界面测试+性能测试+兼容性测试+易用性测试+安全测试
-
功能测试
- 从产品功能角度出发,验证功能是否是正常的
-
界面测试
- 肉眼可以看到的部分都称为界面,界面所有的元素都需要测试
- 界面涉及到的内容:元素(大小、颜色、形状、材质)
-
性能测试
- 在功能正常的基础上,进行性能测试
- 通常为在一些极端的情况下,验证功能还是否正常
- 五菱和法拉利的汽车最基础功能都一样
- 但他们的性能是完全不一样的
-
兼容性测试
- 不同的版本(软件、系统)
- 浏览器的兼容性
- 不同的浏览器
-
易用性
- 具备简单易上手的属性
-
安全测试
- 密码进行加密展示
- 数据库存储用户隐私数据加密
- 越权
- SQL 注入
水杯测试
使用万能公式设计水杯的测试用例
弱网测试
为了覆盖更多的网络场景
弱网测试的目的就是尽可能保证用户体验,关注的关键点包括:
- ⻚⾯响应时间是否可以接受,关注包括热启动、冷启动时间、⻚⾯切换、前后台切换、⾸字时间,⾸屏时间等。
- ⻚⾯呈现是否完成⼀致。
- 超时⽂案是否符合定义,异常信息是否显⽰正常。
- 是否有超时重连。
- 安全⻆度:是否会发⽣
DNS
劫持、登陆IP
更换频繁、单点登陆异常等。 - ⼤流量事件⻛险:是否会在弱⽹下进⾏更新
apk
包、下载⽂件等⼤流量动作。
如何进行弱网测试
借助抓包工具来模拟实现弱网测试:抓包工具(Fiddler
)
安装卸载测试
针对需要进行部署的软件,除了软件功能外,我们还需要关注软件的能够成功安装和卸载
- 安装:安装包是否可以安装、卸载之后是否可以继续安装、重复安装…
- 卸载:安装完成后卸载、安装一半后卸载、卸载一次后继续安装继续卸载、卸载一半停止后是否还可以继续卸载…
相关文章:

【软件测试】设计测试用例的万能公式
文章目录 概念设计测试用例的万能公式常规思考逆向思维发散性思维万能公式水杯测试弱网测试如何进行弱网测试 安装卸载测试 概念 什么是测试用例? 测试⽤例(Test Case)是为了实施测试⽽向被测试的系统提供的⼀组集合,这组集合包…...

【MySQL 保姆级教学】事务的自动提交和手动提交(重点)--上(13)
目录 1. 什么是事务?2. 事务的版本支持3. 事务提交的方式3.1 事务提交方式的分类3.2 演示的准备的工作3.2.1 创建表3.2.2 MySQL的服务端和客户端3.2.3 调低事务的隔离级别 4. 手动提交4.1 手动提交的命令说明4.2 示例一4.3 示例二4.4 示例三4.5 示例四 5. 自动提交5…...

CUDA 核心与科学计算 :NVIDIA 计算核心在计算服务器的价值
在现代科学计算领域,NVIDIA GPU 的计算能力是突破研究瓶颈的关键力量,而其中的 CUDA 核心与科学计算有着紧密的联系。 CUDA 核心于 2007 年开发,是一款基于单指令多线程 (SIMT) 模型的多功能通用核心。它在处理并行计算任务方面能力卓越&…...
架构师之路-学渣到学霸历程-58
Nginx的反向代理实验 今天分享的实验其实就是一个变形;变形uri看看nginx的配置有什么区别; 这个就更加绕,是比较不同的配置路径会有什么的区别? 来看看这个变形会得出什么的效果 1.首先配置后端服务器的资源 首页资源–>1…...
qq相册为啥越来越糊
电子存储衰退的原因 存储设备的失真通常和 存储介质的老化、数据退化、电荷泄漏 等问题有关。尤其是对闪存类存储(如SSD、U盘)来说,随着时间的推移,存储在其中的电荷可能会流失,导致数据损坏。而对于传统的机械硬盘&am…...

<有毒?!> 诺顿检测:这篇 CSDN 文章有病毒
NAS(qnap)中安装git服务(gogs),硬件为TS-453Bmini,固件版本:QTS 5.1.2.2533_qnap git服务器-CSDN博客 https://estar.blog.csdn.net/article/details/134138932 威胁名称:JS:Downloader-GEG [Trj]威胁类型:特洛伊木马…...

matlab实现主成分分析方法图像压缩和传输重建
原创 风一样的航哥 航哥小站 2024年11月12日 15:23 江苏 为了研究图像的渐进式传输技术,前文提到过小波变换,但是发现小波变换非常适合传输缩略图,实现渐进式传输每次传输的数据量不一样,这是因为每次变换之后低频成分大约是上一…...

18.UE5怪物视野、AI感知、攻击范围、散弹技能
2-20 怪物视野、AI感知、攻击范围、散弹技能_哔哩哔哩_bilibili 目录 1.AI感知组件 2.AI感知更新的函数 3.攻击范围 4.散弹技能 4.1创建发射物i 4.2创建远程攻击方式 4.3散弹自定义事件的实现 4.4动画通知实现攻击 1.AI感知组件 为怪物蓝图添加AI感知组件,…...

【 ElementUI 组件Steps 步骤条使用新手详细教程】
本文介绍如何使用 ElementUI 组件库中的步骤条组件完成分步表单设计。 效果图: 基础用法 简单的步骤条。 设置 active 属性,接受一个 Number,表明步骤的 index,从 0 开始。 需要定宽的步骤条时,设置 space 属性即…...
MQTT从入门到精通之 MQTT 客户端编程
MQTT 客户端编程 1 在VUE中使用MQTT 具体步骤如下所示: 1、初始化vue项目 // 创建一个使用vite构建的前端项目 npm create vitelatest// 进入到项目中,执行如下命令安装项目依赖 npm install 2、安装element plus // 安装element plus npm install …...

数据结构-集合
一.集合的表示 一个重要的操作是查某个元素属于哪个集合,另一个操作是合并操作 从这个树的节点去找树根也就是从下往上找,要把树并起来只需把两个根并在一起就可以了 不存在已知一个节点去找孩子节点,根重要的是已知一个节点找它的父亲节点,与之前的二…...

前端 JS面向对象 原型 prototype
目录 一、问题引出 二、prototype原型对象 三、小结 四、constructor 五、__proto__对象原型 六、原型链 一、问题引出 由于JS的构造函数存在内存浪费问题: function Star(name,age){this.namenamethis.ageagethis.singfunction () {console.log("唱歌&…...
Java中的不可变集合:性能与安全并重的最佳实践
Java中的不可变集合:性能与安全并重的最佳实践 在现代软件开发中,集合类(如List、Set和Map)是Java开发者的日常工具。它们用于存储和操作数据,能极大地简化开发工作。但随着并发编程和大规模应用的广泛使用࿰…...
RandomWords随机生成单词
from random_words import RandomWords rw RandomWords() r rw.random_word() print(r) 更多How to use — random_words documentation (randomwords.readthedocs.io) li LoremIpsum()# 这行代码创建了一个 LoremIpsum 类的实例。li.get_sentence()# 这个方法返回一个随机…...

从零开始使用Intel的AIPC使用xpu加速comfyui
Intel的AIPC使用xpu加速跑comfyui 环境安装python环境搭建驱动及oneAPI安装创建python环境验证环境是否生效 ComfyUI的安装下载、汉化comfyui下载checkpoint 测试使用xpu加速测试使用cpu执行测试 环境安装 python环境搭建 直接下载Anaconda 下载地址 安装好后,通…...
PyQt入门指南五十二 版本控制与协作开发
在开发PyQt应用程序时,版本控制和协作开发是提高开发效率和项目可维护性的重要手段。本指南将介绍如何使用Git进行版本控制,以及如何使用GitHub进行协作开发。 版本控制基础 Git简介:Git是一种分布式版本控制系统,用于跟踪代码变…...

思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉啊“ (**)
Linux vi/vim | 菜鸟教程 https://zhuanlan.zhihu.com/p/602675406 Linux Vim编辑器的基本使用_vim文本编辑器-CSDN博客 这里提出使用 vi / vim 进行简单的编辑操作的原因,主要是在容器镜像中,普遍都是使用这个。 在 linux 服务器应用场景&#x…...

共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕
在这个技术革新日新月异的时代,开源精神如同点燃创新火焰的火种,照亮了无数技术探索者的征途。2024年11月9日,备受瞩目的2024 CCF中国开源大会在深圳这座充满活力的创新之城盛大开幕。这场开源领域的顶级盛事,以“湾区聚力 开源启…...

SpringBoot(十八)SpringBoot集成Minio
项目上传文件集成一下Minio,下面是我在项目中集成Minio的全过程。 首先介绍一下Minio:MinIO是高性能的对象存储,单个对象最大可达5TB。适合存储图片、视频、文档、备份数据、安装包等一系列文件。是一款主要采用Golang语言实现发开的高性能、分布式的对象存储系统。客户端支…...

ODOO学习笔记(3):Odoo和Django的区别是什么?
Odoo和Django都是基于Python的开源框架,但它们的设计目标和用途有所不同: 设计目标和用途: Odoo:Odoo是一个企业资源规划(ERP)系统,它提供了一套完整的商业管理软件,包括会计、库存…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...