【软件测试】测试用例

news2025/1/19 14:36:16

目录

🌷1. 测试用例的基本要素

🌷2. 测试用例的设计方法

🌳2.1 基于需求进行测试用例的设计

⭐️(1)功能需求测试分析

⭐️(2)非功能需求测试分析

🌳2.2 具体的设计方法 (黑盒测试)

⭐️(1)等价类

⭐️(2)边界值

⭐️(3)错误猜测法

⭐️(4)场景设计法

⭐️(5)因果图

⭐️(6)判定表 


🌷1. 测试用例的基本要素

测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。
好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试。
  • 评价测试用例的标准:对比好坏用例的评价标准

用例表达清楚,无二义性

用例可操作性强

用例的输入与输出明确。一条用例只有一个预期结果

用例的可维护性好

用例对需求的覆盖率高

  • 测试用例的给我们带来的好处

测试执行者的依据

使得工作可重复,自动化测试的基础

评估需求覆盖率

用例的复用

积累测试的方法思路以供后续借鉴

  • 使用中带来困扰:

测试用例的设计是费时费力的工作,往往设计测试用例所花费的时间比执行所花费的时间还多

  • 解决如下问题:

不知道是否较全面的测试了所有功能

测试的覆盖率无法衡量

对新版本的重复测试很难实施

存在大量冗余测试影响测试效率

🌷2. 测试用例的设计方法

🌳2.1 基于需求进行测试用例的设计

基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就要分析测试需求,验证需求是否正 确、完整、无二义性,并且符合逻辑。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测 试点或者测试项,然后根据每一个测试点进行测试用例的设计
在分析测试需求时,一般分为功能测试需求非功能测试需求

⭐️(1)功能需求测试分析

对于功能测试中,可以借助功能框图来帮助我们进行测试的需求分析。概括起来, 功能测试需求通常包括以下几个方面。
(1)业务流程(软件规格说明书)
(2)界面相关(UI设计稿)
(3)易用性(测试人员经验)
下面以我们常用的百度云盘手机端为例进行分析功能:

 

在进行需求分析的时候,我们还要考虑业务规则如,上传文件的大小有没有限制;一次性上传多少数量的文件,比如小于100个;文件夹最多有多少层等等;

⭐️(2)非功能需求测试分析

非功能测试需求主要涉及性能,安全性,可靠性,兼容性,易维护性和可移植性等。从测试需求分析来看,每一类非功能特性测试都需要根据需求单独分析。他们之间可能会存在相互影响,如安全性越高,就越有可能给易用性,性能带来更大的挑战。
例如:163.com登录模块测试用例设计

 

🌳2.2 具体的设计方法 (黑盒测试)

⭐️(1)等价类

因材施教的例子:
原则上讲, 老师应该依据每个学生自身的情况, 指定符合的学习方案. 但是实际上学生太多老湿管不过来, 只能分成几类: 优等生强调知识面的扩展和综合能力的提升; 中等生强调夯实基础, 查缺补漏; 差等生强调 优先掌握重点, 暂时跳过难点...
思路:输入的集合是无穷的, 不能全都覆盖到
概念:依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
  • 有效等价类: 满足用户需求对应的输入集合就是有效的等价类
  • 无效等价类:不满足用户需求对应的输入集合就是无效等价类
举个简单的例子:
超市买水果
有效等价类:苹果、桃子、梨
无效等价类:青菜、米、饮料, ...
思考一下:如何针对 6-15 位长度设计测试用例?
需求: 需求有输入,输入是无穷的

⭐️(2)边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
边界点:
  • 上点: 边界上的点
  • 内点: 边界内的点
  • 离点:上点附近的一个点 (如果是闭区间,边界外的点,如果是开区间,边界内的点)

 如何通过这个方法设计测试用例

  • (1)充分理解需求
  • (2)找边界点
  • (3)针对边界点设计测试用例

需求: 用户名长度6~15

上点: 6,15
内点: 10
离点:5,16

 

⭐️(3)错误猜测法

错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。
以注册为例
1 、校验中特殊字符空格的处理 ?
2 、密码校验中的大小写?
3 、姓名中的特殊字符?
4 、密码发送是否明文

⭐️(4)场景设计法

现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触 发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。
典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向
以注册为例:

想象注册的场景来设计用例,这与根据需求的业务流来设计差不多。主要是想象各种业务流来设计用例。例如我们可以再想象以下场景:
1 、用户激活后再次点击邮件激活链接?
2 、已注册用户再次注册?

 

⭐️(5)因果图

因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。
因果图最后还得用到判定表,因此不讲 因果图。

⭐️(6)判定表 

  • ①什么是判定表
判定表(Decision table)是另一种表达逻辑判断的工具。一个表格,表格里面有条件,有结果。
  • ②关系
恒等、非、与、或
恒等: 条件为真,结果一定为真
非: 条件为假,结果为真
与: 两个条件必须为真 -> 结果才为真,如果一个条件为假 -> 结果就为假
或: 两个条件全为假 -> 结果才为假,如果条件一个为真 -> 结果为真
  • ③如何设计测试用例

分析所有可能的输入和可能的输出。

找出输入与输出之间的对应关系。

根据输入和输出确定判定表。

把判定表对应到每一个测试用例。

案例一:
假设业务单据的处理规则为: 淘宝 618 活动,订单已提交,订单合计金额大于 300 元或有红包,则进优惠”
1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
  •  输入:订单已提交、金额大于300、有红包。
  •  输出:优惠、不优惠。
2. 然后,进行第二步,找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。
(1) 订单已提交,订单金额大于 300 元,则优惠。
(2) 订单已提交,订单金额小于等于 300 元,无红包,不优惠
(3) 订单已提交,有红包,则优惠。
(4) 订单已提交,订单金额大于 300 元,有红包,则优惠。
(5) 订单未提交,不优惠。
3. 画出判定表

4. 最终的测试用例

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

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

相关文章

【Python搞笑游戏】因蔡徐坤打篮球动作超火,被某程序员写成了一款游戏,画面美到不敢看,成功学到了精髓~(附源码免费)

导语 之前网络最火的梗,非“C徐坤打篮球”莫属。个人感觉,只有多年前的“春哥纯爷们”堪与匹敌! 虽然说C徐坤打篮球是一个老梗了,但是确实非常搞笑,今天就跟着小编一起来回忆一下吧! “我是练习两年半的…

qt - 隐式共享与d-pointer技术

文章目录前言1. 隐式共享2. d-pointer在隐式共享中的应用3. 二进制代码兼容4. d-pointer模式的实现5. QObject中的d-pointer前言 一般情况下,一个类的多个对象所占用的内存是相互独立的。如果其中某些对象数据成员的取值完全相同,我们可以令它们共享一块…

ESP32学习二-更新Python版本(Ubuntu)

一、简介 在一些场景里边,因为Python的版本过低,导致一些环境无法安装。这里来介绍以下,如何升级自己已安装的Python版本。例如如下情况: 二、实操 1.查看本地版本 python --version 2.添加源 sudo add-apt-repository ppa:jona…

FPGA时序知识点(基本方法总结就两点:1.降低时钟频率2.减小组合逻辑延迟(针对Setup Slack公式来的)

1.我们说的所有时序分析都是建立在同步电路的基础上的,异步电路不能做时序分析(或者说只能做伪路径约束(在设伪路径之前单bit就打拍,多bit就异步fifo拉到目的时钟域来))。——FPGA 设计中寄存器全部使用一个…

逐一解释一下四个 “内存屏障” 是什么

什么是内存屏障?硬件层⾯,内存屏障分两种:读屏障(Load Barrier)和写屏障(Store Barrier)。内存屏障有两个作⽤: 阻⽌屏障两侧的指令重排序;强制把写缓冲区/⾼速缓存中的…

Matplotlib绘图

1.散点图 X1 [[3.393533211, 2.331273381], [3.110073483, 1.781539638], [1.343808831, 3.368360954], [3.582294042, 4.679179110], [2.280362439, 2.866990263], [7.423436942, 4.696522875], [5.745051997, 3.533989803], [9.172168622, 2.51…

面试官:说说MySQL主从复制原理

MySQL Replication(主从复制)是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上,通过复制的功能,可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。 一、背景 MySQL在生产环境中被广泛地应用&…

第十四届蓝桥杯题解

声明:以下都无法确定代码的正确性,是赛时代码,希望大家见谅!思路可以参考,等后续可以评测之后再去修改博客内错误,也希望大家能够指正错误! 试题A:日期统计 分析:这道题…

Linux工具——yum和vim

目录🍏Linux软件包管理器-yum🍎yum简介🍎rzsz工具🍎注意事项🍎软件包查看🍎如何安装和卸载软件🍏Linux编辑器-vim🍎vim的基本概念🍎vim的基本操作🍎vim正常模…

uniapp中canvas绘制图片内容空白报错原因总结

uniapp中canvas绘制图片内容空白报错原因总结,看完需要10分钟 问题图: 效果图: 目录 🧨🧨🧨首先定义画布canvas canvas画布初始值没有,导致没有绘制成功 🧨🧨🧨2.绘制图…

【二叉树】全家桶-管饱,你敢吃吗?

【二叉树扩展学习】💯💯💯1.【二叉树的创建】2.【二叉树的销毁】3.【二叉树的前序遍历】4.【二叉树的中序遍历】5.【二叉树的后序遍历】6.【二叉树的层序遍历】7.【二叉树的高度】8.【二叉树结点的个数】9.【第K层二叉树的结点个数】10.【二叉…

C语言之结构体内存对齐与内存的简单理解

文章目录 内存单元的理解结构体中内存对齐的规则为什么会存在内存对齐一、内存单元的理解 首先先要介绍一下C语言中一些常见的存储单元 bit 存放一个二进制位 Byte 1Byte 8 bit KB 1KB 1024 Byte MB 1MB 1024 KB GB 1GB 1024 M…

Linux对文件夹操作(复制,移动)

Linux对文件夹操作(复制,移动) 复制文件夹cp cp -a vue vue-copy将vue 文件夹下面的所有文件,复制到同目录下vue-copy文件夹下面 -a:相当于 -d、-p、-r 选项的集合,这几个选项我们一一介绍;-d:如果源文件为软链接(…

数据库开发(Sqlite)

1、数据库开发 1.1 数据与数据管理 什么是信息?   信息是指对现实世界存在方式或运动状态的反应。 什么是数据?   数据是指存储在某一媒体上,能够被识别的物理符号;   数据的概念在数据处理领域已经被大为拓宽&#xff0c…

qt5.14.2 独立msvc环境搭建(不安装vs)

一般情况下msvc下的qt开发,无论你是用qtcreator还是vs都推荐安装对应vs版本,这样是最省事和便捷的,但在有些情况下不便安装vs但项目又需要使用msvc,则可以只安装msvc c编译器,步骤如下: 备注:文…

【Spring Clound】Feign底层原理分析-自动装载动态代理

文章目录前言1、什么是Feign?2、为什么要使用Feign?3、Feign依赖注入原理3.1、Feign自动装载3.2、FeignClientFactoryBean#getObject4、总结前言 是一个HTTP请求调用轻量级框架,可以以Java接口注解的方式调用HTTP请求,而不用像Ja…

Lunabot一款无需密钥魔法就能使用到ChatGPT的浏览器工具

Lunabot 简介 Lunabot是一款跨平台的ChatGPT助手,支持主流浏览器上的任意网页,可以快速处理各种任务,提高您的工作效率。使用 Lunabot,您可以轻松选择文本并使用快速命令和提示来快速处理任务,同时还可以保存永远不会…

Node【二】NPM

文章目录🌟前言🌟NPM使用🌟NPM使用场景🌟NPM的常用命令🌟NPM命令使用介绍🌟 使用NPM安装模块🌟 下载三方包🌟 全局安装VS本地安装🌟 本地安装🌟 全局安装&…

研读Rust圣经解析——Rust learn-5(所有权,强大的String)

研读Rust圣经解析——Rust learn-5(所有权,强大的String)所有权栈和堆相同点栈堆所有权规则作用域StringString创建String创建空字符串从字符串字面量创建(将&str转化为String)str特点创建str所有权转移String源码深克隆clone…

Matplotlib基本图形使用折线图-柱状图-散点图-饼图的完整代码含示例

目录 Matplotlib基本折线图的使用 1. 导入matplotlib库 2. 准备数据 3. 绘制折线图 4. 加上标签和标题 5. 自定义样式 6. 完整代码 ​编辑 绘制散点图 导入 matplotlib 库和 numpy 库 准备数据 绘制散点图 ​编辑 绘制饼图 导入 matplotlib 库和 numpy 库 准备数…