当前位置: 首页 > news >正文

软件测试之黑盒测试的具体方法详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一.基于需求的设计方法
  • 二.等价类
  • 三.边界值
  • 四.判定表
    • 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 什么是正交表

正交表是一种用表格表示的正交数组,用于测试用例的设计与管理。它采用行列交叉的方式,将被测系统的多个因素以及每个因素的取值组合成表格,这样我们就可以在这个表格里系统地选择测试值,组合成测试用例。
正交表由以下要素构成:

  1. 因素:影响被测系统的输入变量。
  2. 各因素的取值:每个因素可取的值或值范围。
  3. 行与列的表头:行表头表示被固定的值,列表头表示变量值。
  4. 单元格:每个单元格代表一个测试值的组合,可映射为一条测试用例。

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错误猜测法的基本步骤

  1. 分析程序逻辑和实现,推测出最可能出现的错误类型。常见的错误类型有:变量未初始化,数组下标越界,参数传递错误,逻辑运算错误等。
  2. 根据猜测出的错误类型和程序逻辑设计测试用例。这些用例的测试数据应能够激发相应类型的错误。
  3. 执行设计的测试用例,验证实际输出结果是否与预期一致。如果存在不一致,则发现了程序错误。
  4. 根据测试结果进行错误修复和重测试,直至所有测试用例的结果均符合预期。

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 …...

图形编辑器:历史记录设计

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

ubuntu22.04下挂载第二块硬盘

文章目录 一、查看硬盘情况二、找到nvme1n1三、挂载四、修改分区文件 一、查看硬盘情况 首先要查看一下系统识别出来的设备。也就是说,我希望知道,ubuntu到底发现了几块硬盘。用命令:lsblk 显示结果如下: 有两块硬盘&#xff1a…...

举例说明.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". 思路: 任何正整数都可以表示为不连续斐波那契…...

skywalking手动上报一些指标信息

skywalking的相关概念我就不介绍了,有兴趣可以参看官网文档 以下提供以下简单示例手工上报一些对问题排查比较有用的一些信息。当然这些内容你也可以写成探针插件的形式,怎么开发探针插件也自行参考官方文档。此处仅在项目框架层面提供一些简单的示例&am…...

NUMA详解

目录 NUMA简介 NUMA开启与关闭 查看系统是否支持 关闭方法 numactl --hardware介绍 没有安装numactl工具下查看NUMA架构节点数: 查看每个NUMA节点的CPU使用情况: 看每个NUMA节点的内存使用情况: 查看NUMA下指定进程的运行情况 创建…...

H68K在Armbina系统下开AP

背景需求替代路由器,网上找了一大堆都不行 最后成功开启了AP 参考了两篇文章, 一篇是如何创建热点, 一篇是如何开启5G 树莓派4B创建5Ghz WiFi热点 – 风声 https://www.hncldz.com/2020/02/01/%e6%a0%91%e8%8e%93%e6%b4%be4b%e5%88%9b%e5%bb%ba5ghz-wifi%e7%83%ad%e7%82%b…...

还不懂Redis?看完这个故事就明白了!

还不懂Redis?看完这个故事就明白了! 我是Redis 你好,我是Redis,一个叫Antirez的男人把我带到了这个世界上。 说起我的诞生,跟关系数据库MySQL还挺有渊源的。 在我还没来到这个世界上的时候,MySQL过的很辛苦,互联网发展的越来越快,它容纳的数据也越来越多,用户请求也…...

Haproxy负载均衡集群

1.Haproxy支持四层和七层 2.haproxy常用的调度算法? 3.LSV/NGINX/HAPROXT的区别? 4. 5.Haproy负载均衡部署 实验需求 利用Haproxy的运用配置出负载均衡调度器,以此来调用两台Nginx服务器进行工作 实验所需组件 Haproxy服务器:192…...

17.计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度

说明书 MATLAB代码:计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度 关键词:碳捕集 虚拟电厂 需求响应 优化调度 电转气协同调度 参考文档:《计及电转气协同的含碳捕集与垃圾焚烧虚拟电厂优化调度》完全复现 仿真平台&#xff1a…...

企业数字化管理中,数据治理到底怎么“治”

随着信息化、数字化的理念、技术及其应用在社会的方方面面进行扩散,数据的规模和丰富程度已经达到了一个新的高度,所以当下如何更进一步利用好数据,充分发挥数据的价值,将其真正变为高质量的数据资产成为了企业要面对的重要问题&a…...

《HelloGitHub》第 85 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …...

自动驾驶人机交互HMI产品技术方案

1. 概述 1.1 目的 本文档描述集卡自动驾驶系统中HMI产品的技术方案,设计人员遵循本方案进行设计,为项目开发实施提供技术方案保障。 1.2 范围 本文档适用于HMI产品项目。本文档用于指导HMI产品项目的UI、前端开发过程。 1.3 术语与缩写 术语/缩写 描述 HMI...

开发感悟20230426

一、element-ui样式设置 1. 可以直接在css中写个样式文件,把对应的类名改写样式,然后在main.js中引用,可以覆盖上面的,如果想给element-ui设置样式,不用设置deep了 2.可以直接修改引入的element-ui的样式&#xff0c…...