软件测试之黑盒测试的具体方法详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一.基于需求的设计方法
- 二.等价类
- 三.边界值
- 四.判定表
- 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". 思路: 任何正整数都可以表示为不连续斐波那契…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
