【软件质量与软件测试 白盒测试与黑盒测试】
第十章 黑盒测试
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,字符串由大写字母,小写字母,数字,标点符号,空格组成,需要在这些字符串中找出所有的字母…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
vue3 定时器-定义全局方法 vue+ts
1.创建ts文件 路径:src/utils/timer.ts 完整代码: import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
