软考 系统架构设计师系列知识点 —— 黑盒测试与白盒测试(1)

本文内容参考:

黑盒测试和白盒测试详解-CSDN博客

软件测试中的各种覆盖(Coverage)详解-CSDN博客

特此致谢!

零、概述

黑盒测试又名为功能测试,主要目的是发现软件设计的需求或者是软件设计规格说明书中的错误缺陷。软件的开发具有特定性,一般都是为了某种具体特定功能开发的,软件功能的描述依赖于在软件需求阶段的需求规格说明书的分析,软件在设计过程中被分成了一个或者是多个功能,保证这些功能能够正常运行的就是软件测试,从而进一步满足用户的需求与需要。黑盒测试与白盒测试相反,软件设计程序被看做一个打不开的盒子,盒子里的程序代码测试人员不能看到,只能看到软件或者是某些模块的简单功能描述,这种测试方法主要是验证软件或者是功能的实现度。

一、黑盒测试

1. 基本介绍

黑盒测试也称功能测试或数据驱动测试,它是已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试过程中,将程序看成不能打开的黑盒子,在不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。

黑盒测试一般遵循以下原则:

  • 根据相应的、正确的需求设计测试用例。配置项测试依据需求规格说明,系统测试依据软件研制任务书,验收测试依据软件研制任务书或合同/协议。
  • 正确地定义等价类。等价类方法是黑盒测试的主要方法,设计测试用例时应根据输入的数据范围,正确地划分有效等价类和无效等价类。
  • 覆盖所有的功能需求。 根据测试风险来确定测试重点和优先级,确保软件的常用功能和重要功能得到充分的测试。
  • 加强接口测试。
  • 站在用户角度进行测试。尽量模拟用户的使用环境,那些对用户有价值的功能要优先、充分地测试。

2. 优缺点

(1)优点

  • 对于较大的代码单元来说,黑盒测试比白盒测试效率较高。
  • 测试人员不需要了解细节,包括特定的编程语言。
  • 测试人员和开发人员彼此独立。
  • 从用户的角度测试,很容易理解和接受。

(2)缺点

  • 测试的只有一小部分,不可能测试全部输入。
  • 没有简明的需求规格说明书,测试用例很难设计。
  • 不能直接对程序段进行测试,该程序段可能隐藏更多错误。

3. 方法

(1)等价类划分

所谓等价类,是指输入域的某个互不相交的子集,所有等价类的并集便是整个输入域。目的在于测试用例的无冗余性。

该方法是一种重要的、常用的黑盒测试用例设计方法。等价类是某个输入域的子集,在该子集中每个输入数据的作用是等效的。其主要分为:

  • 有效等价类

是有意义的、合理的输入数据构成的集合。可检查程序是否实现了规格说明中所规定的功能和性能。

  • 无效等价类

是无意义的、不合理的输入数据构成的集合。检查软件功能和性能的实现是否有不符合规格说明要求的地方。

(2)边界值分析法

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。目的是针对各种边界情况设计测试用例,可以查出更多的错误。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

边界值分析与等价类划分的区别:

  • 边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
  • 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

边界值分析设计方法:

1)确定边界情况(输入或输出等价类的边界);

2)选取正好等于、刚刚大于或刚刚小于边界值作为测试数据。

(3)判定表方法

判定表能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。利用判定表能够设计出完整的测试用例集合。

在实际应用中,许多输入是由多个因素构成,而不是单一因素,这时就需要多因素组合分析。对于多因素,有时可以直接对输入条件进行组合设计,不需要进行因果分析,即直接采用判定表方法。一个判定表由“条件和活动”两部分组成,也就是列出了一个测试活动执行所需的条件组合,所有可能的条件组合定义了一系列的选择,而测试活动需要考虑每一个选择。

判定表方法步骤:

1)列出所有的条件桩和动作桩;

2)填入条件项;

3)填入动作项,制定初始判定表;

4)简化、合并相似规则或者相同动作。

(4)因果图法

多种输入条件的组合,产生多种结果设计测试用例。

因果图法方法步骤:

1)分析软件规格说明文档描述的哪些是原因(输入条件)、哪些是结果(输出条件),给每个原因和结果赋予一个标识符;

2)找出原因与结果、原因与原因之间的对应关系,划出因果图;

3)在因果图上标上哪些不可能发生的因果关系,表明约束或限制条件;

4)根据因果图创建判定表,将复杂的逻辑关系和多种条件组合很具体明确的表示出来;

5)把判定表的每一列作为依据设计测试用例。

(5)场景法

用例场景用来描述流经用例的路径,从用例开始到结束遍历这条路径上所有基本流和备选流。

根据不同的场景设计测试用例,例如:用户操作ATM机,就有查询、取款等操作。

(6)正交实验法

正交测试法使用已经构造好了的正交表格来安排试验并进行数据分析。

正交表的两大优越性,即“均匀分散,整齐可比”。

(7)功能图法

功能图法就是为了解决动态说明问题的一种测试用例的设计方法。

每个程序的功能通常由静态说明和动态说明组成:

  • 静态说明描述了输入条件和输出条件之间的对应关系;
  • 动态说明描述了输入数据的次序或者转移的次序。

(8)错误推测法

测试者根据经验、知识和直觉来发现软件的错误,来推测程序中可能存在的各种错误,从而有针对性地进行测试。

此种方法没有依据,单纯依靠测试者自身实力。优点:快速切入体会到程序易用与否;缺点:难以准确知道测试覆盖率。

关于白盒测试的详细介绍请看下回。

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

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

相关文章

yolov11 epoch100轮 训练笔记5 kaggle comet

Football Players Detection using YOLOV11 | Kaggle !pip install comet_ml import comet_mlcomet_ml.login(project_name"c") Comet - Build Better Models Faster yolov11训练 100轮一眨眼训练完了 然而comet接不到yolo的sdk 优秀 训练17轮map就0.99了 v5训练100…

Ubuntu K8S(1.28.2) 节点/etc/kubernetes/manifests 不存在

Ubuntu K8S(1.28.2) 节点/etc/kubernetes/manifests 不存在 在查看日志(journalctl -xefu kubelet)时发现各节点/etc/kubernetes/manifests 不存在,但主节点没有异常 21080 file.go:104] "Unable to read config path" err"…

neo4j基础操作:命令行增删改查

目录 一,Neo4j的增 1.1.新增节点 1.2.新增关系 1.2.1创建节点时,创建关系 1.2.2在已有的节点上,创建关系 二,Neo4j的删除 2.1删除节点 2.1.1无关系的节点删除 2.1.2 有关系的节点删除 三,节点修改 3.1 给节点…

rollout 是什么:机器学习(强化学习)领域

rollout 是什么:机器学习(强化学习)领域 指从特定初始状态开始,按照某个策略或模型进行一系列动作和状态转移,直到达到终止状态或预定时间步数 。比如: 迷宫任务:强化学习代理在迷宫中,从起始点出发,按某策略(如随机选方向走)进行移动,直到找到出口或达到最大移动…

stm32之TIM定时中断详解

目录 1.引入1.1 简介1.2 类型1.2.1 基本定时器1.2.2 通用定时器1. 触发控制单元 (Trigger Control Unit)2. 输入捕获单元 (Input Capture Unit)3. 输出比较单元 (Output Compare Unit)4. CNT 计数器5. 自动重装载寄存器 (ARR)6. 预分频器 (PSC)7. 中断与 DMA 事件8. 刹车功能 (…

centos8源码安装openssl

前言: 在使用python3.11部署运行FastAPI时,由于其uvicorn需要使用openssl模块,导致没有安装openssl的服务器项目运行不起来. 【第一步】 我的网盘下载openssl-1.1.1n.tar.gz 提取码: vay9 【第二步】 上传到服务器解压 tar -zxvf opens…

vue3 动态修改系统title

vue3 动态修改系统title 修改前 修改后 1、封装 useTitle 工具函数 创建组合式 API,通过 watchEffect 监听标题变化: // composables/useTitle.js import { ref, watchEffect } from vue;export function useTitle(initialTitle) {const title r…

比较两种判断相同二叉树的方法:递归与遍历序列对比

在二叉树操作中,判断两棵树是否相同是一个常见的问题。本文将对比两种不同的解决方案:递归法和遍历序列对比法,分析它们的优缺点,并探讨为何递归法是更优的选择。 问题描述 给定两棵二叉树的根节点 p 和 q,判断它们是…

从0开始学习大模型--Day01--大模型是什么

初识大模型 在平时遇到问题时,我们总是习惯性地去运用各种搜索引擎如百度、知乎、CSDN等平台去搜索答案,但由于搜索到的内容质量参差不齐,检索到的内容只是单纯地根据关键字给出内容,往往看了几个网页都找不到答案;而…

【AI大模型】SpringBoot整合Spring AI 核心组件使用详解

目录 一、前言 二、Spring AI介绍 2.1 Spring AI介绍 2.2 Spring AI主要特点 2.3 Spring AI核心组件 2.4 Spring AI应用场景 2.5 Spring AI优势 2.5.1 与 Spring 生态无缝集成 2.5.2 模块化设计 2.5.3 简化 AI 集成 2.5.4 支持云原生和分布式计算 2.5.5 安全性保障…

洛谷 P9007 [入门赛 #9] 最澄澈的空与海 (Hard Version)

这道题可不入门。 [Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 给定 n n n,求有多少组 ( x , y , z ) (x,y,z) (x,y,z) 满足: x − y z n ! x-\dfrac{y}{z}n! x−zy​n! x − y z n ! n \dfrac{x-y…

PostgreSQL 的 pg_stat_file 函数

PostgreSQL 的 pg_stat_file 函数 pg_stat_file 是 PostgreSQL 提供的一个系统管理函数,用于获取文件系统上文件的元数据信息。这个函数对于数据库管理员进行文件级别的监控和诊断非常有用。 一 函数基本语法 pg_stat_file(filename text [, missing_ok boolean …

关于麒麟服务器实现docker-compose服务开机自启

我本地服务器环境是麒麟V10版本: 首先确定docker-compose服务绝对路径命令: which docker-compose我这里输出是:/usr/bin/docker-compose 编辑服务文件: sudo vim /etc/systemd/system/docker-compose-webup.service[Unit] Desc…

基于 jQuery 实现复选框全选与选中项查询功能

在 Web 开发中,复选框是常见的交互元素,尤其是在涉及批量操作、数据筛选等场景时,全选功能和选中项查询功能显得尤为重要。本文将介绍如何使用 HTML、CSS 和 jQuery 实现一个具备全选、反选以及选中项查询功能的复选框组,帮助开发…

AfuseKt2.4.2 | 支持阿里云盘、Alist等平台视频播放,具备自动海报墙刮削功能的强大播放器

AfuseKt是一款功能强大的安卓端在线视频播放器,支持播放阿里云盘、Alist、WebDAV等平台的视频内容。它具备自动海报墙刮削功能,能自动生成影片信息和海报墙,提供良好的视觉体验。此外,它还支持倍速播放、字幕、音轨切换等多种实用…

Netlink在SONiC中的应用

Netlink在SONiC中的应用 Netlink介绍 Netlink 是 Linux 内核态程序与用户空间程序之间进行通信的机制之一,原本是用于传递网络协议栈中的各种控制消息。它采用和套接字(socket)编程接口相同的形式,常用于配置内核网络子系统&…

语音合成之十一 提升TTS语音合成效果:低质量数据清洗、增强与数据扩增

低质量数据清洗、增强与数据扩增 1. 引言:TTS的基石——数据质量2. 基础:TTS数据准备工作流2.1 规划:定义蓝图2.2 执行:从原始数据到训练就绪格式2.3 最佳实践与可复现性 3. 攻克缺陷:低质量语音数据的清洗与增强3.2 手…

Java IO流分类与记忆方法

Java IO流分类与记忆方法 在Java IO流体系中,理解节点流和包装流的区别是掌握IO编程的关键。 一、核心分类标准 1. 节点流(Node Stream) 直接对接数据源:直接连接物理IO设备(文件、网络、内存等)基础功能:提供最基础的读写能力命名特征:通常包含数据源类型名称(如Fi…

架构师如何构建个人IP:职业规划与业务战略的双重提升

在数字化时代,软件架构师的角色已从单纯的技术专家转变为兼具技术领导力和业务影响力的复合型人才。如何构建个人IP,提升行业影响力,成为架构师职业发展的关键课题。本文从个人认知、业务战略、架构决策、产品思维四个维度,探讨架…

vscode运行python的快捷键

以下是一些在 VS Code 中运行 Python 代码的常用快捷键: 运行 Python 文件 Windows/Linux :Ctrl F5。此快捷键会直接运行当前打开的 Python 文件,不会自动进入调试模式。若之前有配置过终端,一般会使用配置好的终端来运行&…