【软件质量与软件测试 白盒测试与黑盒测试】
第十章 黑盒测试
10.1 等价类划分:
10.1.1 划分等价类
等价类是指所有数据中的一组,它们具有相同的测试结果或相同的响应。等价类划分是将输入数据分为多个等价类的过程。
10.1.2 划分等价类的方法
划分等价类方法主要包括以下几种:
- 特殊值法:选取特殊值作为等价类的代表值;
- 范围法:按照输入值的范围进行划分;
- 组合法:将两个或多个输入值进行组合,形成等价类。
10.1.3 设计测试用例
设计测试用例时,应该覆盖每个等价类,并且尽可能选择少量的测试用例来覆盖整个系统。同时还需要考虑到异常情况和错误处理。
10.2 边界值分析法
10.2.1 边界条件
边界条件是指输入数据的最大值和最小值。
10.2.2 次边界条件
次边界条件是指介于最大值和最小值之间的数值。
10.2.3 其他一些边界条件
其他一些边界条件包括:无效数据、空字符串、非法字符等。
10.2.4 边界值的选择方法
在选择边界值时,应该选择基本的边界值和等价值,同时需要考虑到特殊情况和异常情况。
10.3 盒测
盒测是一种结合边界值和等价类划分的测试方法,它能够有效地发现程序中的缺陷和问题。
10.4 因果图法
10.4.1 因果图设计方法
因果图是一种图形化表示方法,它将输入和输出之间的关系用箭头表示。因果图的设计方法包括以下几个步骤:
- 明确需要测试的功能;
- 确定所有的输入和输出;
- 建立输入和输出之间的逻辑关系;
- 绘制因果图。
10.4.2 因果图测试用例
在根据因果图生成测试用例时,应该覆盖所有的输入条件,并且尽可能选择少量的测试用例来覆盖整个系统。测试用例应该考虑到所有的输入组合以及异常情况和错误处理。
10.5 功能图法
10.5.1 功能图设计方法
功能图是一种图形化表示方法,它将一个系统或者一个模块的所有功能用框图表示出来,其中每个框代表一个功能,每个箭头表示数据流和控制流。功能图的设计方法包括以下几个步骤:
- 明确需要测试的功能;
- 确定所有的输入和输出;
- 绘制功能图。
10.5.2 功能图法生成测试用例
在根据功能图生成测试用例时,应该覆盖所有的输入和输出条件,并且尽可能选择少量的测试用例来覆盖整个系统。测试用例应该考虑到所有的输入组合以及异常情况和错误处理。
10.6 比较与选择
不同的测试方法适用于不同类型的软件系统和测试需求,因此需要结合实际情况和预算来进行选择。在测试过程中,应该综合运用多种测试方法,以确保测试覆盖率和测试质量。
10.7 黑盒测试工具介绍
10.7.1 WinRunner介绍
WinRunner是一款基于GUI的自动化测试工具,主要用于测试桌面应用程序和Web应用程序。它支持多种脚本语言,包括VBScript和JavaScript等。
10.7.2 LoadRunner的使用
LoadRunner是一款针对Web应用程序的负载测试工具,它能够模拟真实用户在访问Web应用程序时所产生的负载,以验证系统的性能和可扩展性。
10.7.3 QuickTest Pro的使用
QuickTest Pro是一款基于GUI的自动化测试工具,主要用于测试桌面应用程序和Web应用程序。它支持多种脚本语言,包括VBScript和JavaScript等。
10.8 小结
本章主要介绍了等价类划分、边界值分析法、因果图法、功能图法以及黑盒测试工具的相关概念、原理和应用。在软件测试过程中,需要根据实际情况和需求选择适合的测试方法和工具,以提高测试效率和测试质量。
第十一章 白盒测试
11.1 白盒测试的概述:
白盒测试是一种基于代码内部结构的测试方法,即测试人员可以直接访问源代码,进行针对代码逻辑、程序流程等的测试。
11.2 控制流测试:
控制流测试是白盒测试的一种方法,主要包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖测试、路径覆盖和循环测试等。
11.2.1 语句覆盖:
语句覆盖是指至少执行一次每个语句,以保证每个语句被执行过程中没有发生错误。
11.2.2 判定覆盖:
判定覆盖是指每个判定语句至少执行一次,并且每个判定语句的结果为 true 和 false 都被覆盖。
11.2.3 条件覆盖:
条件覆盖是指每个条件语句的每个条件都至少执行一次,并且使得条件的结果为 true 和 false 都被覆盖。
11.2.4 判定-条件覆盖测试:
判定-条件覆盖测试是指每个判定和条件之间的关系都至少执行一次,以保证每个判定和条件的结果都被覆盖。
11.2.5 路径覆盖:
路径覆盖是指覆盖程序所有可能的执行路径,以保证覆盖所有可能的错误。
11.2.6 几种常用逻辑覆盖的比较:
语句覆盖 < 判定覆盖 < 条件覆盖 < 判定-条件覆盖测试 < 路径覆盖
11.2.7 循环测试:
循环测试是指对包含循环结构的代码进行测试,其中包括循环的进入条件、出口条件、循环体和循环次数等的测试。
11.3 基本路径测试:
基本路径测试是白盒测试的一种方法,通过对程序中每条可行的路径进行测试来提高软件质量。
11.3.1 程序的控制流图:
程序的控制流图是指描述程序结构的有向图,其中节点表示语句或基本块,边表示程序中的控制转移。
11.3.2 程序结构的要求:
程序结构的要求包括线性结构、分支结构、循环结构等,它们可以用控制流图来表示。
11.3.3 举例分析:
通过对程序的控制流图进行分析,可以找到并测试程序中所有可能的路径,以保证程序的正确性。
11.4 程序插装/程序变异测试:
程序插装/程序变异测试是一种通过对程序源代码进行修改来产生错误的测试方法,以检测软件程序对错误的容忍能力。
11.5 白盒测试工具:
常用的白盒测试工具包括 C++Test 和 JUnit 等,它们可以辅助测试人员对代码进行覆盖率分析、路径分析等操作。
11.6 软件缺陷分析:
软件缺陷分析是指对软件中发现的缺陷进行分析和处理的过程,其中包括缺陷的类别、级别、原因和构成等方面的分析。
11.6.1 简介:
软件缺陷是指在开发和使用软件过程中发现的错误或问题。
11.6.2 软件缺陷的类别:
软件缺陷的类别包括逻辑缺陷、接口缺陷、性能缺陷、安全缺陷等。
11.6.3 软件缺陷的级别:
软件缺陷的级别包括致命级别、严重级别、一般级别和提示级别等。
11.6.4 软件缺陷产生的原因:
软件缺陷产生的原因包括需求不明确、设计错误、编码问题、测试不充分等。
11.6.5 软件缺陷的构成:
软件缺陷的构成包括缺陷明细、缺陷跟踪和缺陷报告等。
11.7 小结:
本章介绍了白盒测试的概念、方法和技术,包括控制流测试、基本路径测试、程序插装/程序变异测试等。同时还介绍了白盒测试工具和软件缺陷分析的相关知识。
- 本章主要讲解了白盒测试的基本概念和技术,包括白盒测试的基本概念、分类、白盒测试中的边界值技术、语句覆盖测试、分支覆盖测试、条件覆盖测 试、分支-条件覆盖测试、条件组合覆盖测试、路 径覆盖测试。
- 也介绍了常用的白盒测试工具C++Test软件以及软件缺 陷的原因,构成,产生的危害等。白盒测试允许观察“盒子”内部,不像黒盒测试那样把系统理解为一个“内部不可见的盒子”,不需要明白内部结构。
- 为了完整的测试一个软件,这两种测试都是不可或缺的。
- 一个产品在其概念分析阶段直到最后交付给用户期间往往要经过各种静态的、动态的、白盒的和黒盒的测试
相关文章:

【软件质量与软件测试 白盒测试与黑盒测试】
第十章 黑盒测试 10.1 等价类划分: 10.1.1 划分等价类 等价类是指所有数据中的一组,它们具有相同的测试结果或相同的响应。等价类划分是将输入数据分为多个等价类的过程。 10.1.2 划分等价类的方法 划分等价类方法主要包括以下几种: 特…...

JavaScript教程(高级)
面向对象编程介绍 两大编程思想 (1)、 面向过程编程: (缩写 POP)( Process-oriented programming)面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现&am…...

C++进阶 —— 范围for(C++11新特性)
目录 一,范围for介绍 二,范围for注意事项 一,范围for介绍 范围for(range-based for loop)是C11新引入的特性,可遍历各种序列结构的容器(如数组、vector、list等);每次循…...

ELK +Filebeat日志分析系统
一、 ELK日志分析系统概述 1、ELK简介 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,…...

万字解析PELT算法!
Linux是一个通用操作系统的内核,她的目标是星辰大海,上到网络服务器,下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务,因为设计约束太多了: 它必须是公平的快速响应系统的throughp…...

腾讯云服务器端口怎么全开?教程来了
腾讯云服务器端口怎么全开?云服务器CVM在安全组中设置开通,轻量应用服务器在防火墙中设置,腾讯云百科来详细说下腾讯云服务器端口全开放教程: 目录 腾讯云服务器端口全部开通教程 云服务器CVM端口全开放教程 轻量应用服务器开…...

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13
深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13 Java内存模型与线程Java内存模型原子性、可见性与有序性先行发生原则 Java内存模型与线程 Java内存模型 原子性、可见性与有序性 Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来…...

租售keysight E8257D 50G模拟信号发生器 销售/回收
是德(Keysight) E8257D 模拟信号发生器 Keysight E8257D (Agilent) PSG 模拟信号发生器提供业界领先的输出功率、电平精度和高达 67 GHz 的相位噪声性能(工作频率可达 70 GHz)。Agilent PSG 模拟信号发生器的高输出功率和卓越的电…...

【C++】什么是函数模板/类模板?
文章目录 一、函数模板1.什么是函数模板?2.函数模板格式3.函数模板原理4.函数模板实例化(1)隐式实例化(2)显示实例化 二.类模板1.类模板定义格式2.类模板的实例化 总结 一、函数模板 1.什么是函数模板? 函…...

为什么是ChatGPT引发了AI浪潮?
目录 BERT和GPT简介 BERT和GPT核心差异 GPT的优势 GPT的劣势 总结 随着近期ChatGPT的火热,引发各行各业都开始讨论AI,以及AI可以如何应用到各个细分场景。为了不被时代“抛弃”,我也投入了相当的精力用于研究和探索。但在试验的过程中&…...

批处理文件(.bat)启动redis及任何软件(同理)
批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件(.bat)启动Redis,请按照以下步骤进行操作: 打开文本编辑器,如记事本。 在编辑器中输入以下内容: 将文件保存…...

深度学习求解稀疏最优控制问题的并行化算法
稀疏最优控制问题 问题改编自论文An FE-Inexact Heterogeneous ADMM for Elliptic Optimal Control Problems with L1-Control Cost { min y ( μ ) , u ( μ )...

牛客网项目—开发社区首页
视频连接:开发社区首页_哔哩哔哩_bilibili 代码地址:Community: msf begin 仿牛客论坛项目 (gitee.com) 本文是对仿牛客论坛项目的学习,学习本文之前需要了解Java开发的常用框架,例如SpringBoot、Mybatis等等。如果你也在学习牛…...

uniapp水文【uniapp】
文章目录 1、前言2、历史3、发展4、功能5、优缺点6、总结7、附录7.1、高频使用7.2、使用注意 1、前言 Uniapp是一种跨平台的移动应用开发框架,它允许开发者使用一套代码库,同时生成iOS、Android等多个平台的应用程序。这种技术方案可以大大降低开发成本…...

Java函数式接口
3 函数式接口 3.1 函数式接口概述 函数式接口:有且仅有一个抽象方法的接口 Java中的函数式编程体现就是Lambda表达式,所以函数式接口就是可以适用于Lambda使用的接口只有确保接口中有且仅有一个抽象方法, Java中的Lambda才能顺利地进行推导…...

安装libevent库
安装libevent库 yum install libevent libevent-devel 自动安装Memcached yum install memcached 源码安装 下载1.6.19版本 wget https://www.memcached.org/files/memcached-1.6.19.tar.gz (若证书过期yum install -y ca-certificates) 解压源码 tar -zxvf…...

vue 截取字符串的方法
vue中的字符串方法,我目前使用最多的是下面两种方法,因为 vue的字符串方法支持断言操作。 1、 vue中截取字符串的方法如下: 2、 vue中截取字符串的方法,这个方法也是需要依赖于 vue库提供的支持。 3、 vue中截取字符串的方法&…...

可数集和不可数集
有限集和无限集 后继集 设 S S S是任一集合,称 S S ∪ { S } S^ S\cup \left\{ S\right\} SS∪{S}为 S S S的后继集 自然数集 自然数集 N \mathbb{N} N的归纳定义是: (1) ∅ ∈ N \empty \in \mathbb{N} ∅∈N (…...

<Linux>《Linux 之 ps 命令详解大全(含实用命令)》
《Linux 之 ps 命令详解大全(含实用命令)》 1 常用命令1.1 显示所有当前进程1.2 显示所有当前进程1.3 显示所有当前进程1.4 根据用户过滤进程1.5 根据 CPU 使用来升序排序1.6 根据用户过滤进程1.7 查询全10个使用cpu和内存最高的应用1.8 通过进程名和PID…...

华为OD机试真题 Java 实现【寻找关键钥匙】【2023Q1 100分】
一、题目描述 小强正在参加《密室逃生》游戏,当前关卡要求找到符合给定 密码K(升序的不重复小写字母组成)的箱子,并给出箱子编号,箱子编号为1~N。 每个箱子中都有一个字符串s,字符串由大写字母,小写字母,数字,标点符号,空格组成,需要在这些字符串中找出所有的字母…...

项目中遇到的一些问题总结(十三)
extension-configs 和 shared-configs 的区别 在 Nacos 配置管理中,extension-configs 和 shared-configs 分别是两种不同类型的配置,它们的主要区别在于它们的使用场景和作用。 extension-configs 是一种应用程序向 Nacos 注册的扩展配置。它主要用于给…...

药品存销信息管理系统数据设计与实现(包括需求分析,数据库设计,数据表、视图、存储过程等)
前言 可前往链接直接下载: https://download.csdn.net/download/c1007857613/87776664 或者阅读本博文的详细介绍,本博文也包含所有详细内容。 一、需求分析 a.“药品存销信息管理系统”只是对数据库应用技术的一个样本数据库的实例,重在对数据库一些方法的熟悉与掌握,…...

PyTorch-Loss Function and BP
目录 1. Loss Function 1.1 L1Loss 1.2 MSELoss 1.3 CrossEntropyLoss 2. 交叉熵与神经网络模型的结合 2.1 反向传播 1. Loss Function 目的: a. 计算预测值与真实值之间的差距; b. 可通过此条件,进行反向传播。 1.1 L1Loss import torch from …...

centos docker安装mysql8
1、创建挂载文件夹 mkdir -p /mydata/mysql/log mkdir -p /mydata/mysql/data mkdir -p /mydata/mysql/conf 2、拉取镜像最新版本,如果写 mysql:8.0.26可以指定版本 docker pull mysql 3、启动命令 docker run -p 3306:3306 --restartalways -v /mydata/mysql/log:…...

Java中synchronized锁的深入理解
使用范围 synchronized使用上用于同步方法或者同步代码块在锁实现上是基于对象去实现使用中用于对static修饰的便是class类锁使用中用于对非static修饰的便是当前对象锁 synchronized的优化 在jdk1.6中对synchronized做了相关的优化 锁消除 在synchronized修饰的代码块中…...

Find My资讯|iOS17将重点改进钱包、Find My、SharePlay和AirPlay等功能
彭博社的马克・古尔曼(Mark Gurman)在最新一期 Power On 时事通讯中表示,苹果即将推出的 iOS 17 系统将改进 Wallet、Find My、SharePlay 和 AirPlay 等多项功能。 古尔曼在博文中还表示苹果会增强 Find My 的位置服务,同样也没…...

什么是webSocket?
什么是webSocket WebSockets是一种协议,它允许在Web应用程序中建立持久连接。这意味着当客户端与服务器建立连接后,它们可以始终保持连接状态,直到其中一个终止连接。相比于传统的HTTP协议,WebSockets提供了更高效的方式来处理实…...

黑马Redis视频教程高级篇(一:分布式缓存)
目录 分布式缓存 一、Redis持久化 1.1、RDB持久化 1.1.1、执行时机 1.1.2、RDB原理 1.1.3、小结 1.2、OF持久化 1.2.1、AOF原理 1.2.2、OF配置 1.2.3、AOF文件重写 1.3、RDB与AOF对比 二、Redis主从 2.1、搭建主从架构 2.1.1、集群结构 2.1.2、准备实例和配置 …...

SLMi331数明深力科带DESAT保护功能隔离驱动应用笔记
SLMi33X系列SLMi331数明深力科首款单通道带DESAT保护功能的IGBT/SiC隔离驱动器。内置快速去饱和(DESAT) 故障检测功能、米勒钳位功能、漏极开路故障反馈、软关断功能以及可选择的自恢复模式,兼容光耦隔离驱动器。 SLMi331的DESAT阈值为6.5V,其最大驱动电…...

【嵌入式Linux基础】启动初始化程序--init程序
文章目录 内核启动后初始化程序简介BusyBox initBuildroot init 脚本 后记 内核启动后 内核引导代码在initramfs中通过内核命令行中的root指定的文件系统中去寻找根系统文件,并执行一个相应的程序。在默认情况下,对于initramfs这个程序是/init࿰…...