【软件质量与软件测试 白盒测试与黑盒测试】
第十章 黑盒测试
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,字符串由大写字母,小写字母,数字,标点符号,空格组成,需要在这些字符串中找出所有的字母…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...

CCF 开源发展委员会 “开源高校行“ 暨红山开源 + OpenAtom openKylin 高校行活动在西安四所高校成功举办
点击蓝字 关注我们 CCF Opensource Development Committee CCF开源高校行 暨红山开源 openKylin 高校行 西安站 5 月 26 日至 28 日,CCF 开源发展委员会 "开源高校行" 暨红山开源 OpenAtom openKylin 高校行活动在西安四所高校(西安交通大学…...
JVM——对象模型:JVM对象的内部机制和存在方式是怎样的?
引入 在Java的编程宇宙中,“Everything is object”是最核心的哲学纲领。当我们写下new Book()这样简单的代码时,JVM正在幕后构建一个复杂而精妙的“数据实体”——对象。这个看似普通的对象,实则是JVM内存管理、类型系统和多态机制的基石。…...