软件测试之白盒测试

2023-10-26

白盒测试

一、白盒测试定义

  白盒测试:又称结构测试,是在已知程序的内部工作过程的情况下,用来测试程序的内部结构,并判定其结果是否与预期的结果一致。

  一般说来,白盒测试相对简单,因为白盒测试是在已知程序的内部工作流程的情况下进行的。

  而且白盒测试不会直接根据源代码,而是根据程序流程图来设计测试用例和编写测试代码,所以进行白盒测试之前首先要画出程序流程图。

二、白盒测试目的

  通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

三、白盒测试种类及方法

  种类:主要有静态分析测试、语句分支覆盖测试

  方法:

    1.语句覆盖

      语句覆盖就是设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。

      例如:下面的几行代码

      {x=3, y=3}可以执行到action1

      {x=-3, y=0}可以执行到action2

      这样通过两个测试用例即可达到语句覆盖的要求。

if(x>0&&y>0)
  action1;
else
  action2;

    2.分支覆盖(判断覆盖)

      分支覆盖要求在软件测试中,每个分支都至少获得一次真/假取值的经历。

      简单来说就是设计足够多的测试用例,使得被测试程序中的每个判断语句的真假分支至少被执行一次

      例如:以下代码中有两个判断语句,分别是if(x>0&&y>0)和if(z<0)

      所以为了满足分支覆盖可使用以下测试用例

数据 if(x>0&&y>0) if(z<0)
 {x=3, y=3,z=1} T F
{x=-3, y=0, z=-1} F T
if(x>0&&y>0)
  action1;
else
  action2;
if(z<0)
  action3;
action4;

    3.谓词覆盖

      谓词覆盖有分为原子谓词覆盖、分支-谓词覆盖、复合谓词覆盖

      原子谓词覆盖:要求每个复合谓词所包含的每个原子谓词都至少获得一次“真”和一次“假”,也就是说要使每个判断中的每个条件的可能取值至少满足一次。

      分支-谓词覆盖:要求不仅每个复合谓词所包含的每个原子谓词都至少获得一次“真”和一次“假”,而且每个复合谓词本身也至少获得一次“真”和一次“假”。

      复合谓词覆盖:要求每个谓词中的条件的各种可能组合都至少出现一次。

      

四、白盒的测试用例

  1.保证一个模块中的所有独立路径至少被使用一次

  2.对所有逻辑值均需测试 true  false

  3·在上下边界及可操作范围内运行所有循环

  4·检查内部数据结构以确保其有效性

五、黑盒测试和白盒测试的区别

黑盒测试 白盒测试
不涉及程序结构 考察程序逻辑结构
用软件规格说明书生成测试用例 用程序结构信息生成测试用例
可适用于从单元测试到系统验收测试 主要适用于单元测试和集成测试
某些代码段得不到测试 对所有逻辑路径进行测试

 

 

转载于:https://www.cnblogs.com/zxx1994/p/4439364.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件测试之白盒测试 的相关文章

  • 如何根据链表节点数据大小对链表节点进行排序

    对链表排序有两种方法 1 比较了两个节点的大小后 对指针进行改变 从而交换节点的顺序 2 比较了两个节点的大小后 只交换数据域 而不改变指针 从而交换节点的顺序 第二种办法比较简单 本文主要对第二种方法进行讲解 链表节点排序算法 采用 冒泡
  • 运放稳定性连载21:电容性负载的稳定性——具有双通道反馈的RISO(2)

    现在 我们必须测量如图10 6所示的Zo 小信号AC开环输出阻抗 该Tina SPICE测试电路将测试空载OPA177的Zo R2和R1以及LT为低通滤波器函数提供了一条AC通道 这样 使得我们能将DC短路和AC开路一起并入反馈电路 DC工
  • 黑盒测试用例设计--题目2

    1 根据下面给出的规格说明 进行测试用例的设计 一个程序读入3个整数 把这三个数值看作一个三角形的3条边的长度值 这个程序要打印出信息 说明这个三角形是普通的 是等腰的 还是等边的 测试用例 2 保险费率计算 某保险公司承担人寿保险 该公司
  • ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记

    课程链接 http video jessetalk cn course explore 良心课程 大家一起来学习哈 任务40 介绍 任务41 Individual authentication 模板 dotnet new mvc help
  • 图 - Java实现无向带权图的邻接矩阵表示法

    图 Java实现无向带权图的邻接矩阵表示法 1 图 1 1 图的介绍 图 Graph 是一种复杂的非线性表结构 图中的元素我们就叫做顶点 vertex 图中的一个顶点可以与任意其他顶点建立连接关系 我们把这种建立的关系叫做边 edge 跟顶
  • 4Sum

    Given an array S of n integers are there elements a b c and d in S such that a b c d target Find all unique quadruplets
  • 堆栈01--用两个栈实现队列

    堆栈01 用两个栈实现队列 jz05 题目概述 解析 参考答案 注意事项 说明 题目概述 算法说明 用两个栈来实现一个队列 完成队列的Push和Pop操作 队列中的元素为int类型 测试用例 队列先进先出 输入 1 2 输出 1 2 解析
  • AngularJs单元测试

    这篇文章主要介绍了angularJS中的单元测试实例 本文主要介绍利用Karma和Jasmine来进行ng模块的单元测试 并用Istanbul 来生成代码覆盖率测试报告 需要的朋友们可以参考下 以下可全都是干货哦 当ng项目越来越大的时候
  • 人工智能概念

    人工智能概念 人工智能就是用人工方法在机器 计算机 上实现的智能 或称机器智能 即是研究如何用计算机来表示和执行人类的智能活动 以模拟人脑所从事的推理 学习 思考和规划等思维活动 并解决需要人类的智力才能处理的复杂问题 如医疗诊断 管理决策
  • 软件测试题目

    一 判断题 每题2分 20 1 软件测试就是为了验证软件功能实现的是否正确 是否完成既定目标的活动 所以软件测试在软件工程的后期才开始具体的工作 初级 2 发现错误多的模块 残留在模块中的错误也多 初级 3 测试人员在测试过程中发现一处问题
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • python字符串与列表

    字符串 字符串定义 输入输出 定义 切片是指对操作的对象截取其中一部分的操作 适用范围 字符串 列表 元组都支持切片操作 切片的语法 起始下标 结束 步长 字符串中的索引是从 0 开始的 最后一个元素的索引是 1 字符串的常见操作 查找 f
  • 时间复杂度+常见复杂度解释

    前言 算法的效率 虽然计算机能快速的完成运算处理 但实际上 它也需要根据输入数据的大小和算法效率来消耗一定的处理器资源 要想编写出能高效运行的程序 我们就需要考虑到算法的效率 算法的效率主要由以下两个复杂度来评估 时间复杂度 评估执行程序所
  • 【试题】排列组合

    在写一个远程的代码 如果本地有M个显示器 远程有N个显示器 M lt N 依据分辨率 显示器刷新频率等要求 需要对远程的N个显示器进行最佳分辨率修改 之后 需要从N个远程显示器中选择M个 跟本地显示器进行一对一的匹配 即从 A N M N
  • 用两个栈实现队列

    目录 一 栈的基本结构及其接口 二 我的队列结构定义 三 我的队列创建及其初始化 四 我的队列入队 五 我的队列出队 六 我的队列取队头元素 七 我的队列判空 八 我的队列销毁 一 栈的基本结构及其接口 栈的结构定义 typedef int
  • 测试:性能测试

    一 性能测试 性能测试是一种评估软件 系统或服务在特定条件下性能的过程 性能测试有助于确定系统的响应时间 吞吐量 可扩展性 稳定性和资源消耗等关键指标 一 响应时间 响应时间 Response Time 是性能测试中的一个重要指标 用于衡量
  • 【数据结构】双链表的定义和操作

    目录 1 双链表的定义 2 双链表的创建和初始化 3 双链表的插入节点操作 4 双链表的删除节点操作 5 双链表的查找节点操作 6 双链表的更新节点操作 7 完整代码 嗨 我是 Filotimo 很高兴与大家相识 希望我的博客能对你有所帮助
  • C++ AVL树(四种旋转,插入)

    C AVL树 四种旋转 插入 一 AVL树的概念及性质 二 我们要实现的大致框架 1 AVL树的节点定义 2 AVL树的大致框架 三 插入 1 插入逻辑跟BST相同的那一部分 2 修改平衡因子
  • 浅谈归并排序:合并 K 个升序链表的归并解法

    在面试中遇到了这道题 如何实现多个升序链表的合并 这是 LeetCode 上的一道原题 题目具体如下 用归并实现合并 K 个升序链表 LeetCode 23 合并K个升序链表 给你一个链表数组 每个链表都已经按升序排列 请你将所有链表合并到
  • 高精度运算合集,加减乘除,快速幂,详细代码,OJ链接

    文章目录 零 前言 一 加法 高精度加法步骤 P1601 A B 二 减法 高精度减法步骤

随机推荐

  • 虚函数表、函数地址、虚函数指针问题!

    一 虚函数 1 虚函数的写法 函数前 virtual 关键字 virtual fun cout lt lt lt
  • 代码覆盖率工具OpenCppCoverage在Windows上的使用

    OpenCppCoverage是用在Windows C 上的开源的代码覆盖率工具 源码地址为https github com OpenCppCoverage OpenCppCoverage 最新发布版本为0 9 9 0 License为GP
  • 深度学习基本环境搭建 ubuntu20.04LTS系统安装 nvidia显卡驱动 anaconda安装 cuda指定版本安装 cuda版本升级

    背景 电脑原来是windows 现在装为纯Ubuntu 安装显卡驱动 安装anaconda 安装pytorch 电脑型号 dell的一个工作站 显卡rtx3090 镜像下载 Enterprise Open Source and Linux
  • ElementUI+Vue 解决在使用el-dialog时,点击el-dialog外的其他区域会导致该对话框关闭。

    转载自 https blog csdn net weixin 42230550 article details 95201746 需求描述 今天 在做Element Vue项目时遇到一个需求 甲方要求在Dialog打开状态下 点击该Dial
  • YOLOv4网络详解

    0前言 在YOLOv4论文中 作者其实就是把当年所有的常用技术罗列了一遍 然后做了一堆消融实验 1 YOLOV4的网络改进部分 1 主干特征提取网络 DarkNet53 gt CSPDarkNet53 使用Mish激活函数 2 特征金字塔
  • java---为什么byte+byte=int

    byte也是基本数据类型范围是 128 127 但是做加法时会有这么一个问题 我们清晰的看到 byte byte byte报错了 这是为什么呢 编译器说他需要int类型 这是因为在java中 因为byte数量太小了 从硬件的角度讲 为较小的
  • uni-app使用时遇到的坑

    一 uni app开发规范 1 微信小程序request请求需要https 小程序端 在本地运行时 可以使用http 但是预览或者上传时 使用http无法请求 APP端 一般APP可以使用http访问 高版本的APP可能需要用https访问
  • 浪涌测试如何进行试验配置

    此文只是针对浪涌测试中的试验配置部分内容进行总结 如下表所示 试验对象 开路电压波形 注1 短路电流波形 输出阻抗 电源 线 线 1 2 50us 8 20us 2 18uF 线 地 2 10 9uF 非屏蔽不对称 注2 非差分通讯线 线
  • 和为s的数字

    题目描述 输入一个数组和一个数字s 在数组中查找两个数 使得它们的和正好是s 如果有多对数字的和等于s 输出任意一对即可 你可以认为每组输入中都至少含有一组满足条件的输出 样例 输入 1 2 3 4 sum 7 输出 3 4 分析 首先想到
  • Ubuntu系统安装分区

    一 U盘启动盘制作 1 U盘一个 U盘空间大小足够大 8G够用了 U盘里面的内容提前转存备份 2 UltraISO软碟通启动制作工具或Universal USB Installer 3 Ubuntu官网找到自己需要Ubuntu版本下载ISO
  • blfs:为lfs虚拟机增加桌面03

    编译安装Qt5 15 我比较好奇 当前只安装了twm X org提供的简单的窗口管理器 这个时候Qt的界面是怎么样的一个呈现 Qt5 15安装 required和recommanded必装 optional中涉及到runtime的建议安装
  • 树莓派4B Ubuntu 远程桌面 步骤

    文章目录 准备 更换国内源 更新软件列表和软件 安装SSH 安装ubuntu desktop xrdp方法 VNC方法 问题故障解决 花屏 蓝屏 黑屏 无法修正错误 因为您要求某些软件包保持现状 就是它们破坏了软件包间的依赖关系 参考 准备
  • 时间序列-预测-经典算法:Arimax【带额外输入的自回归综合移动平均】【多元变量预测】【ARIMA模型的一个扩展版本】

    标准的ARIMA 移动平均自回归模型 模型允许只根据预测变量的过去值进行预测 该模型假定一个变量的未来的值线性地取决于其过去的值 以及过去 随机 影响的值 ARIMAX模型是ARIMA模型的一个扩展版本 它还包括其他独立 预测 变量 该模型
  • C开源项目-TinyHttp解读(上)

    项目简介 此项目可以自行在GitHub上进行下载 作者的ReadMe文档也写得是比较详细的 这里用到了较多的Unix编程 不会的可以一点一点去查 实名感谢我们家杰佬发给我的APUE 可以当字典查 项目内容 其实就是实现了一个轻量级服务器的功
  • ubuntu 14.04安装opencv2.4.13

    1 下载opencv2 4 13的 zip包 http opencv org downloads html 2 解压到任意目录 unzip opencv 2 4 13 zip 3 在解压后的目录里创建一个release cd opencv
  • 虚拟机 arm服务器,一种面向ARM多核处理器服务器平台的系统虚拟机

    主权项 1 一种面向ARM多核处理器服务器平台的系统虚拟机 基于KVM实现 采用宿主模型架构 其特征在于 该虚拟机主要包括 1 物理硬件 物理硬件进一步包括物理CPU 物理内存 物理外设 物理硬件是整个系统虚拟机的硬件基础设施 2 宿主OS
  • css样式表的作用和意义,什么是CSS?

    CSS是大家很熟悉的一个词了 但是如果问你 什么是CSS 你能回答得出吗 到底什么是CSS CSS有什么作用 CSS长什么样子 今天我们就给大家一一解答 CSS全称为Cascading Style Sheets 层叠样式表 中文翻译为 层叠
  • SUSE linux 使用LVM安装系统和管理

    引出 在我们安装好linux系统后会发现在需要修改磁盘分区的时候会比较困难 系统安装的 目录的文件系统要更改基本不太可能 其他目录如 home目录也比较困难 但是系统安装时要是采用的LVM管理的方式安装的话就会截然不通 一 首先普及下LVM
  • 嵌入式python智能实训总结_嵌入式智能家居心得体会 智能家居实训报告2000字

    家里装全套智能家居是一种什么体验 男士体验 5 半年后 我们发现有一篇回到第一篇文章 女性体验 第一篇 嗯 半夜哺乳 不用涂抹 第二篇 睡觉时忘记关灯 不要踢老公 第三 可以随时检查宝宝的状态 而且你可以监控老公是否不在家 第四 出行时 不
  • 软件测试之白盒测试

    白盒测试 一 白盒测试定义 白盒测试 又称结构测试 是在已知程序的内部工作过程的情况下 用来测试程序的内部结构 并判定其结果是否与预期的结果一致 一般说来 白盒测试相对简单 因为白盒测试是在已知程序的内部工作流程的情况下进行的 而且白盒测试