软件工程-白盒测试

2023-10-30

1. 写出MaCabe方法计算程序环形复杂度的三种方法。

V(G)=流图中的区域数
V(G)=E-N+2(其中E是流图中的边数,N是结点数)
V(G)=P+1(其中P是流图中判定结点的数目 )

2. 什么是白盒测试?

白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。​

3. 列出逻辑覆盖的几种覆盖标准,并比较它们的强弱等级。

(1)覆盖标准:
1、语句覆盖
含义:选择足够多的测试数据,使被测程序中每个语句至少执行一次。

特点:语句覆盖对程序的逻辑覆盖很少。语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。

2、判定覆盖
含义:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。

3、条件覆盖
含义:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。

特点:条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但也有反例,如第二组测试用例。

判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。

4、判定/条件覆盖
含义:使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。

5、条件组合覆盖
含义:要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。

特点:条件组合覆盖是前述几种覆盖标准中最强的。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。
但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。
从对程序路径的覆盖程度分析的逻辑覆盖标准。

  1. 点覆盖
    含义:选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。

特点:由于流图的每个结点与一条或多条语句相对应,因此点覆盖标准和语句覆盖标准是相同的。

  1. 边覆盖
    含义:选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。

特点:通常边覆盖和判定覆盖是一致的。

  1. 路径覆盖
    含义:选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。

强弱等级:语句覆盖<判定覆盖<条件覆盖<判定/条件覆盖<条件组合覆盖<路径覆盖

4. 用基本路径测试技术设计下图中程序的测试用例。

在这里插入图片描述
路径1:
1-11
nPosX 取-1, nPosY取任意值
路径2:
1-2, 3-4, 5-10-1-11
nPosX取1, nPosY取1
路径3:
1-2,3-6-7-9-10-1-11
nPosX 取1, nPosY取-1
路径4:
1-2,3-6-8-9-10-1-11
nPosX取1, nPosY取-3

5. 分别列出三种循环的测试方法。

(1) 简单循环
应该使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数。
1.跳过循环。
2.只通过循环一次。
3.通过循环两次。
4.通过循环m次,其中m<n-1。
5.通过循环n-1,n,n+1次。
(2) 嵌套循环
1.从最内层循环开始测试,其他循环都设置为最小值。
2. 对最内层循环使用简单循环测试方法,而使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试。
3.由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为“典型”值。
4.继续进行下去,直到测试完所有循环。
(3) 串接循环
1.如果串接循环的各个循环都彼此独立,则可以使用测试简单循环的方法来测试串接循环。
2.如果两个循环串接,而且第一个循环的循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。当循环不独立时,建议使用测试嵌套循环的方法来测试串接循环。

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

软件工程-白盒测试 的相关文章

  • 深入jvm虚拟机第4版_深入JVM虚拟机,阿里架构师直言,这份文档真的是JVM最深解读...

    作为一名优秀的 Java 开发程序员 以及想那些想要学习 Java 更深层一点的知识的同学 对 JVM 的熟悉与熟练使用是必不可缺的核心技能了 也是每个 Java 程序员应该要做到的 深入学习 JVM 可以有助于我们掌握 Java 应用程序
  • 推荐一款提高工作效率的屏幕扩展软件—Splashtop Wired XDisplay

    一 导读 使用Splashtop Wired XDisplay让闲置的手机平板成为电脑的第二块屏幕Splashtop Wired XDisplay 好文章 记得 收藏 点赞 关注 如果你和我一样抱怨着显示器太小 Idea编程软件占用了太多工
  • 03 ZooKeeper底层原理剖析与命令实战

    文章目录 03 ZooKeeper底层原理剖析与命令实战 1 Znode数据结构 1 1 目录结构 1 2 节点类型 2 ZK客户端命令行操作 3 ZooKeeper会话 4 事件监听机制原理剖析 5 广播模式剖析 6 ZooKeeper集
  • vs报错:TRACKER : 错误 TRK0005: 未能找到: “CL.exe”。系统找不到指定的文件

    平台 win 10 错误 如题 解决 1 参考 Windows11下配置Visual Studio2022 环境变量 Windows下配置Visual Studio 通用 2 1 运行 C Program Files Microsoft V
  • java定义一个类_Java类的定义格式:Java如何定义一个类

    在面向对象的思想中 最核心的就是对象 为了在程序中创建对象 首先需要定义一个类 类是对象的抽象 它用于描述一组对象的共同特征和行为 例如人都有姓名 年龄 性别等特征 还有学习 工作 购物等行为 以面向对象的编程思想 就可以将某一类中共同的特
  • 图的深度优先搜索和广度优先搜索

    图的深度优先搜索算法 dfs 图的深度优先搜索算法是以一个顶点为起始点开始挖掘 一个分支挖掘完 再继续挖掘下一个分支 在实现上需要用到栈 因此 图的深度优先搜索算法有很多条路径 取决于哪个顶点最先入栈 实现思路 非递归 dfs可以用栈来进行
  • 解决QT中TCP传数据的困惑

    问题一 当传输数据过大时 readAll不能读完这一条完整的报文 报文格式如下 解决方法 针对此问题 可以通过一个全局变量 将多次读到的数据合并 问题二 粘包现象之多次write对应一次read 深入查看ReadyRead 信号的产生条件可
  • CNN笔记:通俗理解卷积神经网络

    通俗理解卷积神经网络 cs231n与5月dl班课程笔记 1 前言 2012年我在北京组织过8期machine learning读书会 那时 机器学习 非常火 很多人都对其抱有巨大的热情 当我2013年再次来到北京时 有一个词似乎比 机器学习
  • make编译出错Relocations in generic ELF (EM: 62)

    参考 编译出错Relocations in generic ELF EM 62 main o Relocations in generic ELF EM 62 错误信息是 通过查看文件 main o 发现ELF 64bit x86 64 在
  • ClickHouse副本同步及分布式DDL的原理

    相信了解大数据的小伙伴们都知道 基本上所有的分布式存储系统都有一个共同的特点 将庞大的数据量分成多个小块存储在不同的机器上 通常称为分片 每个分片为了保证它数据不丢失 它们又有各自副本 ClickHouse也不例外 一起来看看ClickHo
  • 5.Mybatis 缓存详解

    5 1 一级缓存 一级缓存 也叫本地缓存 默认会开启 并且不能控制 想要关闭一级缓存可以在select标签上配置flushCache true 一级缓存存在于 SqlSession 的生命周期中 在同一个 SqlSession 中查询时 M
  • 微信小程序之如何注册微信小程序

    注册小程序帐号 在微信公众平台官网首页 mp weixin qq com 点击右上角的 立即注册 按钮 选择注册的帐号类型 显示了4选项 我们现在是注册小程序 所以选择小程序 填写邮箱和密码 请填写未注册过公众平台 开放平台 企业号 未绑定
  • VMware虚拟机安装ubuntu20.04缓慢、卡顿

    背景 VMware Workstation版本是14 本地虚拟机上ubuntu版本是16 04的 有32位和64位 编译原理课程需要18或20以上的版本 决定再装一个20的 出现各种问题 进入黑屏 等三五分钟才缓过来 选择语言中文后 安装卡
  • C# ModbusTcp(协议)

    以下用例为读取线圈 可读取多个连续的线圈 01功能码 起始地址 var inputAddress 4 读取长度 var inputReadLength 8 var station BitConverter GetBytes 4 0 从站地址
  • 编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决

    编译OpenCV 以及 openc contrib 提示缺少boostdesc bgm i文件出错的解决 错误 opencv contrib modules xfeatures2d src boostdesc cpp 673 20 fata
  • 软件测试与质量学习笔记3--白盒测试

    1 白盒测试的两种常用技术 覆盖测试 在测试过程中 以覆盖某些程序元素为测试目标的测试 路径测试 从流程图上讲 程序的一次执行对应于从入口到出口的一条路径 针对路径的测试即为路径测试 从广义的角度讲 任何有关路径分析的测试都可以被称为路径测
  • MATLAB大小写字符的转换

    输入一个字符 若为大写字母 则输出其对应的小写字母 若为小写字母 则输入其对应的大写字母 若为数字字符则输出其对应的数值 若为其他字符则原样输出 第一种 clear clc n input enter a number n if n gt
  • 基于STM32的ESP8266使用教程(四)(短篇)

    写在前面 在上一篇中介绍了通过单片机发送指令控制WIFI模块 本来想写一下时钟 I O口及串口的初始化函数 但是因为项目年代久远 一年前做的 怕有错误 误导博友 故不给出代码 见谅 本章要介绍Android端通过WIFI与手机建立连接并通信
  • 代码示例:面向对象——封装、继承、多态(多态的四种类型)

    面向对象 封装 继承 多态 多态的四种类型 1 封装 把客观事物封装成抽象的类 并且类可以把自己的数据和方法只让可信的类或者对象操作 对不可信的进行信息隐藏 public 所有实体都可以访问 protected 只允许本类 和子类 的成员函
  • 【动态规划】---入门(一)

    文章目录 前言 一 斐波那契数列 二 爬楼梯 总结 前言 动态规划入门学习文章记录及总结 动态规划算法的基本思想是 将待求解的问题分解成若干个相互联系的子问题 先求解子问题 然后从这些子问题的解得到原问题的解 对于重复出现的子问题 只在第一

随机推荐

  • 综合案例——手写数字图像处理算法比较

    手写数字图像识别各种算法的比较 1 准备工作 1 1 数据集介绍 使用到了两个手写数字的数据集 scikit learn 中的手写数字数据集 mnist 中的手写数字数据集 1 1 1 scikit learn 中的手写数字数据集 首先来看
  • 清理QT SDK编译后,examples目录中的pdb ilk exp等垃圾文件

    for R s in do del q s s pdb s ilk s exp pause 将上面的代码保存为bat 放到examples根目录下运行 上面的方法是我走的冤枉路 下面的这种方法更简单 在用nmake编译完成后 直接运行nma
  • Bean定义注册机

    org springframework beans factory support BeanDefinitionRegistry 注册Bean定义 org springframework beans factory support Bean
  • docker 安装 oracle

    docker 安装 oracle 拉取镜像 docker pull jaspeen oracle xe 11g 因为版本不同有的可能是jaspeen oracle 11g 运行镜像文件 docker run p 1521 1521 name
  • mysql游标的使用

    p 这是一个游标的使用例子 但是其中有几点需要注意 就是为什么要加入 declare CONTINUE HANDLER FOR SQLSTATE 02000 SET tmpname null 这样的一句话 如果不加的话将直接报错 No da
  • Elasticsearch学习4-数据修改

    数据修改 原文请查看 Modifying Your Data Elasticsearch 提供近乎实时的数据操作和搜索功能 默认情况下 从索引 更新 删除数据到数据出现在搜索结果中 你可以预估一秒钟的延迟 刷新间隔 这是与其他平台 如SQL
  • 波士顿房价(只依据一个特征的)预测

    波士顿房价数据集 波士顿房价数据集中一共有506条数据 涵盖506个不同郊区的房屋数据 在机器学习中 通常要把数据集划分为训练数据集和测试数据集 在波士顿数据库中 默认其中404条是训练数据集 102条作为测试数据集 其中 每条数据有14个
  • arcgis10之矢量数据生成tiff文件

    项目场景 shp数据有时数量过于庞大 不利于操作 但是可以将shp转化成tiff图片导出方便进行下一步操作 解决方案 使用arcgis将shp文件生成tiff即可 具体操作如下 第一步 将shp数据生成栅格数据 具体操作如下图 加载至arc
  • Unable to cast object of type 'System.Decimal' to type 'System.Array'.

    数据库有一个字段AppID 类型定义为numeric 38 0 实体描述如下 Key Column APP ID Required ErrorMessage APP ID不能为空 MaxLength 38 ErrorMessage APP
  • 文件时间对于CP命令的影响

    今天在打包安装包的时候 碰到这样一个问题 打包的服务器时间由于测试需要被改到这个月的月底了 打包的时候我也没有在意这个细节 直接在服务器上重新编译这个代码并且将需要更新的so文件打入tar包里面 tar包的时间 包里面文件的时间都变成这个月
  • 详解如何建立Qt插件学习教程

    如何建立Qt插件学习教程是本文要介绍的内容 主要是来了解QT中插件的应用 如何来建立 文中有详解 具体内容的实现来看详解 QT提供2个API来建立插件 1 高层API扩展QT库 例如定制的数据库驱动 图像格式 字符编码 custom sty
  • 更改远程桌面端口

    远程终端服务是一项功能非常强大的服务 同时也成了入侵者长驻主机的通道 入侵者可以利用一些手段得到管理员账号和密码并入侵主机 这就需要我们来修改默认端口 防范黑客入侵 远程终端服务基于端口3389 入侵者一般先扫描主机开放端口 一旦发现其开放
  • 怎么用计算机输入名字,怎么用电脑起名字

    怎么用电脑起名字 我姓李我老婆姓贺我想给宝宝取个名字 宝宝想跟我 老婆姓贺 最好是叫贺李 怎么通过电脑给宝宝取个高分的名字 输入宝宝出生的年 月 日 时辰 姓什么 男宝宝还是女宝宝 然后查一下就知道了 也可以先找人算一下宝宝属于什么命 命中
  • 虚拟机网络模式设置仅主机模式

    说明 为了更好的模拟生产服务器 可以在本地虚拟机进行相关测试 一般实际的生产服务器是仅能与本地主机或内网相同 所以虚拟机设置固定IP 选择仅主机模式做测试尤为重要 虚拟机网络模式选择Hostonly 即仅主机模式 设置固定IP 和主机相同
  • CentOS 7 修改默认 yum 源

    一 修改CentOS默认yum源为mirrors aliyun com 1 首先备份系统自带的yum源配置文件 root localhost mv etc yum repos d CentOS Base repo etc yum repos
  • android历史记录的搜索页

    保存搜索记录 public void saveSearchHistory String inputText SharedPreferences sp WDApplication getContext getSharedPreferences
  • DoubleCheck验证(双重检查锁和延迟初始化)

    场景 二话不说 直接上代码 public class DoubleCheckDemo private static DoubleCheckDemo demo public DoubleCheckDemo getDemo if demo nu
  • 架构师成长之路|Redis 安装介绍以及内存分配器jemalloc

    安装 Redis官网 https redis io download 下载安装二进制文件 可下载安装最新版Redis7 2 0 或者可选版本6 x 我这里下载6 2 13和7 2最新版本 后面我们都是安装6 2 13版本的信息进行讲解 二进
  • gitlab用法教程

    目录 上传文件 1 对待git上新建空文件夹的方式 2 如果git上已有文件夹 一些常见问题 上传文件 1 对待git上新建空文件夹的方式 右击待上传文件夹名字 选择 git bash here 然后依次输入如下命令 git init 当前
  • 软件工程-白盒测试

    1 写出MaCabe方法计算程序环形复杂度的三种方法 V G 流图中的区域数 V G E N 2 其中E是流图中的边数 N是结点数 V G P 1 其中P是流图中判定结点的数目 2 什么是白盒测试 白盒测试又称结构测试 透明盒测试 逻辑驱动