软件测试之黑盒测试的具体方法详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一.基于需求的设计方法
- 二.等价类
- 三.边界值
- 四.判定表
- 4.1 **关系**
- 4.2 如何设计测试用例
- 4.3 实际案例
- 第一步
- 第二步
- 第三步
- 第四步
- 五.正交排列
- 5.1 什么是正交表
- 5.2 如何通过正交表设计测试用例
- 5.3 实际例子
- 第一步 确定 因素和确定水平
- 第二步 画正交表
- 第三步 将正交表转换成测试用例
- 六.场景设计法
- 6.1 什么是场景测试法
- 6.2 如何使用场景测试法设计测试用例
- 6.3 实际例子
- 第一步
- 第二步
- 第三步
- 第四步
- 七.错误猜测法
- 7.1什么是错误猜测法
- 7.2错误猜测法的基本步骤
- 7.3 实际例子
- 第一步
- 第二步
前言
我们这里要读软件测试的黑盒测试方法进行具体的讲解,大家也不要过于担心,相信我接下来的讲解以后,大家对这些测试方法必然是了然如胸的.当然在我们介绍测试用例的方法之前.我们应该来回顾一下,什么是测试用例,测试用例包含哪些内容.实际上我们把测试用例比喻成一组集合,这组集合里面有
测试环境、操作步骤、测试数据、预期结果等要素.当然我们实际测试用例还是有方法的,接下来我们就一一的去介绍这些方法.
一.基于需求的设计方法
什么是基于需求的设计测试用例的方法,这里的核心概念就是需求.我们们一般把需求分为两种
软件需求和用户需求.
基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计.
所以一般来说,我们一般把需求分为功能需求和非功能需求
这上面是我们常用的基于需求的测试用例设计,打击看到以上的操作之后,还是有不明白的地方,我们可以给出几个实际的例子,来设计测试用例,大家就明白了.
这是一个登录界面的例子
这是一个淘宝购物车的例子
水杯测试用例
微信法朋友圈的测试用例设计
具体的我们就介绍到这里,我们开始进入下一个测试用例的方法.
二.等价类
等价类的概念是软件测试中的一个重要概念。它是指输入域中一组数据,这组数据在被测软件的处理结果上具有等价性。换句话说,等价类中包含的所有值在软件的响应上具有相同或相似的效果。
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题。
其实绕了这么一大圈,我们还是来看看,我们怎么去用等价类方法去设计测试用例.
有效等价类:满足用户需求输入集合
无效等价类:不满足用户输入集合
接下来是重头戏,设计测试用例的步骤如下:
等价类思想设计测试用例步骤
①充分理解需求
②划分有效等价类,划分无效等价类
③从有效等价类抽取其中一个数据进行设计测试用例;从无效等价类中抽取其中一个进行测试用例设计
具体来个例子,用户名长度的测试用例展示.
如果说还没明白的话,我们继续来一个三角形的例子,去体会一下.
三角形问题:输入3个整数a,b,c,分别作为三角形的3条边,通过程序判断3条边构成三角形的类型为等边三角形、等腰三角形、一般三角形或者不构成三角形。
等价类测试用例设计方法,最重要的就是划分等价类,但是等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充.
三.边界值
什么是边界值法呢?边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
我们来看一下,边界值法具体在干什么.
边界值法具体就是划分上点,内点,离点.
我们来看一个例子
这里值得说的内点其实有很多种情况的,我这里说明一下.
上点:不管此区间是开区间还是闭区间,此时区间上的点都是上点
内点:区间内的点
离点:
区间如果是开区间,此时离点是距离上点最近的点(区间内找)区间如果是闭区间,此时离点是离上点最近的点(找点在区间外)
最后肯定重头戏了.边界值测试用例的具体步骤入下:
边界值设计测试用例方法
①充分理解需求
②找边界点
③针对边界点设计测试用例
四.判定表
判定表是一种基于判定覆盖法设计测试用例的方法。判定是程序中用来决定执行流向的条件语句,判定表是根据这些判定设计测试用例的工具.
话不多说,我们来看看判定表有哪些关系组成.
4.1 关系
与:所有的条件必须满足,如果一个条件不满足,此时结果为假
或︰满足其中一个条件结果就为真,如果条件全部为假,结果就为假
恒等︰条件为真,结果一定为真
非:条件为假,结果才为真
4.2 如何设计测试用例
具体步骤
(1)分析所有可能的输入和可能的输出。
(2)找出输入与输出之间的对应关系。
(3)设计判定表
(4)把判定表对应到每一个测试用例。
4.3 实际案例
假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠"。
第一步
输入:订单已提交,订单金额大于300,有红包
输出:优惠,不优惠
第二步
1)订单已提交,金额大于300,有红包,优惠
2)订单已提交,金额大于300,没有红包,优惠
3)订单已提交,金额小于300,有红包,优惠
4)订单已提交,金额小额300,没有红包,不优惠
5)订单不提交,金额大于300,有红包,不优惠
6)订单不提交,金额大于300,没有红包,不优惠
7)订单不是交,金额小于300,有红包,不优惠
8)订单不提交,金额小额300,没有红包,不优惠
第三步
第四步
五.正交排列
正交排列是一种系统的、有序的排列方式,用于软件测试用例设计中,可以保证测试用例的互相独立,减少重复测试,提高测试效率。
在讲述正交排列之前,我们还是来解释一下什么是正交表.
5.1 什么是正交表
正交表是一种用表格表示的正交数组,用于测试用例的设计与管理。它采用行列交叉的方式,将被测系统的多个因素以及每个因素的取值组合成表格,这样我们就可以在这个表格里系统地选择测试值,组合成测试用例。
正交表由以下要素构成:
- 因素:影响被测系统的输入变量。
- 各因素的取值:每个因素可取的值或值范围。
- 行与列的表头:行表头表示被固定的值,列表头表示变量值。
- 单元格:每个单元格代表一个测试值的组合,可映射为一条测试用例。
5.2 如何通过正交表设计测试用例
1.充分理解需求
2.确定因素,确定水平
3.画正交表
4.补充正交表
5.将正交表转换成测试用例
5.3 实际例子
以注册需求为例
第一步 确定 因素和确定水平
因素:姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册
水平:填写/不填写
第二步 画正交表
利用allpairs画正交表.
具体的教程,大家可以观看B站的这个视频allparis工具下载安装及简单使用
填写是啥意思呢,凡是带的就是此处选项你选啥都行,你选填写也行,选不填写也行,不影响测试结果
第三步 将正交表转换成测试用例
六.场景设计法
6.1 什么是场景测试法
场景设计法是一种基于用户场景来设计测试用例的方法。它考虑到用户使用软件的完整场景及流程,设计出一组用例来验证软件在这种场景或流程下的执行结果是否正确。
6.2 如何使用场景测试法设计测试用例
1.充分理解需求
2.确定主事件流
3.确定次事件流
4.每一个事件流就是一个测试用例
6.3 实际例子
用户使用某酒店预订系统进行客房预订
第一步
主事件流:用户使用某酒店预订系统进行客房预订
第二步
此事件流:用户使用系统的每一个步骤
第三步
登录系统–>查询房型–>选择房型、入住时间
–>填写预订人信息–>选择支付方式–>确认预订单
–>预订单确认–>正式订单–>预订成功
第四步
设计测试用例
用例1:登录系统 预期结果:登录成功
用例2:查询不存在的房型 预期结果:无查询结果
用例3:选择普通房型、时间 预期结果:可以进行下一步
用例4:填写无效预订人信息 预期结果:给出提示信息
用例5:选择支付方式为现金支付 预期结果:可以进行下一步
用例6:确认预订单 预期结果:预订单生成
用例7:预订单重复确认 预期结果:无影响,提示已确认
用例8:酒店确认预订单 预期结果:生成正式订单
用例9:用户取消预订单 预期结果:预订单取消,无正式订单生成
通过上述场景分析和测试用例设计,可以得到一组与真实预订场景紧密联系的测试用例。这些用例可以有效验证预订系统在各种正常场景、边界场景下的执行结果是否正确,达到检验系统功能的目的。
总之,场景设计法是一种非常实用的测试用例设计方法,通过结合具体的用户场景来制定测试策略和设计用例,值得测试人员重点学习与运用.
七.错误猜测法
7.1什么是错误猜测法
错误猜测法是一种基于对程序可能存在的错误进行猜测来设计测试用例的方法。这种方法尝试去猜测程序在开发过程中最可能产生的错误,并设计针对这些错误的测试用例。如果测试执行结果与预期不符,则表明程序中存在该错误,起到发现错误的目的。
7.2错误猜测法的基本步骤
- 分析程序逻辑和实现,推测出最可能出现的错误类型。常见的错误类型有:变量未初始化,数组下标越界,参数传递错误,逻辑运算错误等。
- 根据猜测出的错误类型和程序逻辑设计测试用例。这些用例的测试数据应能够激发相应类型的错误。
- 执行设计的测试用例,验证实际输出结果是否与预期一致。如果存在不一致,则发现了程序错误。
- 根据测试结果进行错误修复和重测试,直至所有测试用例的结果均符合预期。
7.3 实际例子
如果要测试一个数组求平均值的程序
第一步
可以猜测出的错误类型有:
1)数组下标越界,导致索引异常。
2)数组元素之和计算错误,导致平均值错误。
第二步
那么,相关的测试用例可以设计为:
用例1:输入数组[-1,10,20] 预期结果:报索引越界异常
用例2:输入数组[1,2,3] 预期结果: 平均值为2
用例3:输入数组[1,2,3] 预期结果:计算的平均值不为2,则存在逻辑计算错误。
相关文章:

软件测试之黑盒测试的具体方法详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一.基于需求的设计方法二.等价类三.边界值四.判定表4.1 **关系**4.2 如何设计测试用例4.3 实际案例第一步第二步第三步第四步 五.正交排列5.1 什么是正交表5.2 …...

图形编辑器:历史记录设计
大家好,我是前端西瓜哥。今天讲一下图形编辑器如何实现历史记录,做到撤销重做。 其实就是版本号的更替。每个版本保存一个状态。 数据结构 要记录图形编辑器的历史记录,支持撤销重做功能,需要两个栈:撤销࿰…...

ubuntu22.04下挂载第二块硬盘
文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说,我希望知道,ubuntu到底发现了几块硬盘。用命令:lsblk 显示结果如下: 有两块硬盘:…...
举例说明.net中in与out的作用与区别
-----作用 在 .NET 中,in 和 out 是用于泛型类型参数的修饰符,它们用于指定参数类型的协变性和逆变性。 - in 修饰符:表示这个泛型类型参数是协变的。也就是说,in 类型参数可以从较特殊的类型隐式转换为较通用的类型。例如&…...
Java常见的100道面试题(内附答案及代码示例)持续更新
什么是Java程序? Java程序是一组可执行的代码,由Java编译器编译生成,可以在Java虚拟机(JVM)上运行。 public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!&qu…...
策略设计模式知多少
目录 目标 概述 实现 目标 熟悉策略设计模式,了解策略设计模式的使用场景、具体实现。 概述 一、行为设计模式 行为设计模式是设计模式的一种类型。该类型的设计模式关注的重点在于对象的行为(通信和交互),而非对象的创建方…...
第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent
文章目录 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Linux 和 macOS 系统上为非根实例启动 ISCAgent在 UNIX/Linux 和 macOS 系统上为非根实例启动 ISCAgent在 Microsoft Windows 系统上启动 ISCAgent 自定义 ISCAgent 第三十九章 配置镜像 - 配置 ISCAgent - 在 UNIX Li…...

嵌入式安卓开发:使用Camera2获取相机
文章目录 Camera2介绍Camera2的主要API类介绍CameraManager通过CameraManage获取Cameracharacteristics通过CameraManage获取CameraDevice从CameraDevice获取CameraCaptureSession预览效果 参考 Camera2介绍 从Android 5.0开始,Google 引入了一套全新的相机框架 Ca…...

阿里云g8i服务器Intel Xeon(Sapphire Rapids) Platinum 8475B
阿里云服务器ECS通用型实例规格族g8i采用2.7 GHz主频的Intel Xeon(Sapphire Rapids) Platinum 8475B处理器,3.2 GHz睿频,g8i实例采用阿里云全新CIPU架构,可提供稳定的算力输出、更强劲的I/O引擎以及芯片级的安全加固。阿里云百科分享阿里云服…...

设计模式——组件协作模式之观察者模式
文章目录 前言一、“组件协作” 模式二、Observer 观察者模式1、动机2、模式定义3、伪代码示例①、第一种方案,最朴素的方式②、第二种方案,重构使得遵循DIP原则:③、进一步的小优化:④、修改使得支持多个观察者: 4、结…...
观察者设计模式知多少
目录 目标 概述 实现 推设计模式 拉设计模式 被动观察者设计模式 目标 熟悉观察者设计模式,了解观察者设计模式的使用场景、具体实现(包括:推设计模式、拉设计模式、被动观察者设计模式)。 概述 一、行为设计模式 行为设…...

Flink之TaskManager内存解析
一、CK失败 Flink任务的checkpoint操作失败大致分为两种情况,ck decline和ck expire: (1)ck decline 发生ck decline情况时,我们可以通过查看JobManager.log或TaskManager.log查明具体原因。其中有一种特殊情况为ck cancel&…...

为何越来越多人不喜欢“试用期六个月”的公司?网友:感觉不靠谱
众所周知,任何一份工作都有试用期,一般是三月左右。但如果你遇到试用期达到半年的公司,你会不会进入? 近日,就有人遇到了此类公司,并对是否要进入该公司犹豫不决。他在论坛上发帖求助:大家是怎…...
单例模式的四种创建方式
前言 单例模式是日常开发中最常见的一种设计模式,常用来做为池对象,或者计数器之类的需要保证全局唯一的场景。 单例模式的目的是保证在整个程序中只存在一个对象实例,使用单例一个前提条件就是构造器私有化,不允许通过new 对象…...
Nginx+Keepalived 中的脑裂现象
如何解决和预防 NginxKeepalived 中会出现的脑裂现象? Nginx是一种高性能的Web服务器和反向代理服务器,可以处理大量并发请求。Keepalived是一种开源软件,用于实现IP负载均衡和故障转移。在Nginx和Keepalived结合使用时,可以通过将多个Ngin…...

04 KVM虚拟化网络概述
文章目录 04 KVM虚拟化网络概述4.1 Linux Bridge4.2 Open vSwitch 04 KVM虚拟化网络概述 为了使虚拟机可以与外部进行网络通信,需要为虚拟机配置网络环境。KVM虚拟化支持Linux Bridge、Open vSwitch网桥等多种类型的网桥。如图1所示,数据传输路径为“虚…...

110页智慧农业解决方案(农业信息化解决方案)(ppt可编辑)
本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 第一部分 智慧农业概述 智慧农业以农业资源为基础、市场为导向、效益为中心、产业化为抓手,面向农业管理部门、农技推广部门、农业企业、农业园区和基地、农业专…...
Java知识体系及聊天室程序
Java知识体系结构梳理如下: 基础语法:Java的基本语法,包括数据类型、运算符、控制语句、数组等。 面向对象编程:Java是一种面向对象的编程语言,需要掌握类、对象、继承、多态等概念。 异常处理:Java提供了…...
java的详细发展历程
Java是一种跨平台、面向对象的编程语言,具有简单性、可移植性、安全性等特点。Java的历史可以追溯到上世纪90年代初期,以下是Java的详细发展历程: 1991年,Sun Microsystems公司的James Gosling和他的团队开始开发一种名为Oak的编程…...
丢石子
I 一堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win". 思路: 任何正整数都可以表示为不连续斐波那契…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

HBuilderX安装(uni-app和小程序开发)
下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...