黑盒测试与白盒测试

2023-11-15

边界值测试的效率有四个评价指标:用例数量,是否冗余,用例的覆盖范围和是否方便错误追踪,根据这四个指标我们对不同的边界值测试进行了评估。

等价类测试则有强组合形式的覆盖和弱组合形式的覆盖,可根据用例的规模和数量选用合适的形式进行测试的覆盖。同时应注意的一点是等价类的划分要清晰合理,否则会出现原输入中不存在输入条件,比如上课提到的年月日输入的等价类划分,很可能就会因为忽略了输入之间的约束条件导致等价类划分不正确。

场景法的核心在于基本流和备选流的场景设计,将使用频率多,发生可能性大的事件流(该事件流具有最大的风险可能性)作为基本流,将判定或循环判定的不同触发条件引起的事件流作为备选流构造场景图,再根据场景图得到可能的场景,此时不能仅将场景图作为一个图来考虑,还需考虑实际情况,即基本流和备选流之间的制约关系来考虑不同的场景。此外,如果同一个校验点有多个备选流且备选流的起点和重点是一样的话,可以考虑将这些备选流合并以简化场景图。

边界值测试重点在于考查边界值及附近的数据,等价类测试侧重于找到整个输入域中最具有代表性的数据,而场景法则注重对于事件流的理解

 

白盒测试主要用于单元测试和集成测试,通常不用于系统测试,但是有些方法和思路可以为系统测试做参考,比如白盒测试中的路径测试对路径的覆盖就可以为黑盒测试中的场景法中基本流和备选流的遍历提供参考意义。白盒测试主要侧重于程序的源代码,即实现的细节,针对性很强。

白盒测试的主要方法有:逻辑覆盖,包括语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖等(覆盖标准发现错误的能力呈由弱到强);基路径测试;静态白盒测试。

逻辑覆盖

逻辑覆盖主要侧重于程序的逻辑结构,根据不同逻辑结构(顺序结构,判断分支和循环)的风险程度组合使用覆盖指标来衡量。

语句覆盖保证每条可执行语句都被至少执行一次,它的覆盖形式类似于等价测试中的弱组合的形式的覆盖,需要注意的的是屏蔽陷阱,即在与,或关系中,如果前一个判定条件的取值真假会屏蔽后一个语句的真假值(或:前一个取真,后一个不论真假整个表达式的值都为真,与的话类似)。因为语句覆盖侧重的是语句所以无法发现控制流的缺陷。

分支覆盖是保证每个判定节点的取真和取假至少执行一次,也是一种弱组合形式的覆盖。然而判定覆盖没有测试到每个简单逻辑判定条件的正确性,所以出现了条件覆盖,即对每个子判定条件进行覆盖。为了结合判定覆盖和条件覆盖的利弊,出现了判定/条件覆盖,但是虽然理论上的效果很好,实际操作却存在技巧和难度。条件组合是满足每个判定节点中所有简单判定条件的各种可能取值的组合至少执行一次,这种方法也是理论上很好,但是实际的用例数量可能会很大。

基路径测试

基路径测试的基础是程序图,圈复杂度决定了基路径的个数(但是结构上的缺陷可能导致路径执行不到或者有冗余),为了确保基本路径集中的每一条路径的执行,根据判断结点给出的条件,选择适当的数据以保证某一条路径可以被测试到。

静态白盒测试

静态白盒测试有:代码检查(包括桌面检查desk checking,代码走查walk through,代码审查Ispection和技术评审review),静态结构分析。

桌面检查desk checking

桌面检查(desk checking)是一种传统的检查方法,由程序员检查自己编写的程序。程序员在程序通过编译之后对源代码代码进行分析、检验,并补充相关的文档,目的是发现程序中的错误。

代码走查walk through

代码走查walk through就是针对代码,在假想的输入情况下,逐行的浏览代码,走查代码中潜在的缺陷并记录结果的过程。以小组会议方式进行,每小组3-5人。与代码审查不同的是,走查要求与会者扮演计算机的角色让测试用例沿被测程序的逻辑运行,是在模拟动态测试;而代码审查更多的是静态测试。

代码审查Ispection

代码审查Ispection是由一组人通过阅读、讨论和争议对程序进行静态分析的过程,以小组会的方式进行。审查小组一般由若干程序员(包括程序代码的设计者)和代码检查人员组成。会前把设计规格说明书、控制流程图、程序文本以及要求、规范、错误检查清单交给与会者,开会时程序作者朗读解释程序,其他人则集中精力,捕捉程序在结构、功能、编码风格等方面的问题。

静态结构分析

函数调用关系图和程序控制流图的分析。调用关系图的根部调用点,被多次上层节点调用的底层函数,多接口的情况都是需要重视的。控制流图则关注入出口数量,是否存在孤立节点和最短最长路径的差别来判断函数结构是否健壮和出现缺陷的概率。

转载于:https://www.cnblogs.com/Zoe-only/p/4514376.html

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

黑盒测试与白盒测试 的相关文章

  • 4.4.5 密码验证(2)

    4 当且仅当含数字和字母的密码验证 如果密码当且仅当包含数字和字母 那么该密码的强度是中等强度 当然 它的安全性一般 以下正则表达式能够验证当且仅当包含数字和字母的密码 da zA Z d a zA Z da zA Z 74 正则表达式 7
  • 测试用例设计方法——等价类

    等价类 思路 输入的集合是无穷的 不能全部都覆盖到 依据需求将输入 特殊情况下会考虑输出 划分为若干个等价类 从等价类中挑选一个测试用例 如果这个测试用例通过 则认为所代表的等价类通过 这样就可以用较少的测试用例达到尽可能多的功能覆盖 解决
  • 用户注册及登录测试用例小记

    用户注册及登录测试用例
  • 对话框中添加视图方法- CScrollView

    对话框中使用视图方法 今天工作过程中 又遇到了显示图片问题 为此把以前的代码整理一下 通过使用自定义的类继承CScrollView类 是图片或文字等 等能够通过滑块进行自动操作显示 记录查询 步骤 1 建立基本对话框程序 添加一个stati
  • 软件测试包括哪些内容

    以下是一些需要考虑的步骤 1 得到需求 功能设计 内部设计说书和其他必要的文档 2 得到预算和进度要求 3 确定与项目有关的人员和他们的责任 对报告的要求 所需的标准和过程 例如发行过程 变更过程 等等 4 确定应用软件的高风险范围 建立优
  • 微软和Facebook推出Docs.com

    来源 德胜网 4月22日 据国外媒体报道 Facebook和微软在联手一项在线文件共享服务 看起来多一点像Google Docs 周三在Facebook的F8会议Docs com上线 该网站允许Facebook用户使用Facebook连接登
  • Firefox 或将强制启用 HTTPS 链接

    Mozilla 在最新上线的 Firefox 76 Nightly 版本中引入可选的 HTTPS only 模式 该模式仅允许连接到 HTTPS 站点 如果一切进行顺利的话 Firefox 接下来可能会在稳定版中面向所有用户推出该项功能 H
  • Cobertura 统计多模块maven项目测试覆盖率

    Cobertura 统计单元测试覆盖率的机制 运行类 并在一个log文件中记录哪一行被执行 然后将源代码和log文件进行比对 1 简单的情况 单模块maven项目 项目结构 源代码 src main java se sigma calcul
  • 常用电子元器件简介

    一 电阻器 电阻器 一般情况下也称电阻 是一种阻碍电流在电路中流动的线性元件 也是组成电子电路的主要元件之一 1 电阻器的作用及电路图形符号 1 电阻器的作用 电阻器主要用于控制电路中的电压和电流 除了具有降压 分压 限流和分流作用外 还具
  • 并发测试工具 apache-jmeter使用发送post请求JSON数据

    目录 1 下载安装 2 汉化 3 创建高并发测试 配置线程组 创建web请求 创建监听器 结果树 汇总报告 为web请求添加token 添加Content Type用于发送json 4 启动测试 5 查看结果 1 下载安装 官网Apache
  • 学习笔记Controller

    转自 http elim iteye com blog 1753271 谢谢博主分享 SpringMVC Controller 介绍 一 简介 在SpringMVC 中 控制器Controller 负责处理由DispatcherServle
  • 整理一下go的ci工具

    代码格式化 go fmt fileName go goimports 自动格式化import goimports w fileName go mod 自动更新 删除包 go mod tidy 检查注释是否符合导出 1 安装revive go
  • 运放稳定性连载21:电容性负载的稳定性——具有双通道反馈的RISO(2)

    现在 我们必须测量如图10 6所示的Zo 小信号AC开环输出阻抗 该Tina SPICE测试电路将测试空载OPA177的Zo R2和R1以及LT为低通滤波器函数提供了一条AC通道 这样 使得我们能将DC短路和AC开路一起并入反馈电路 DC工
  • IOS高访新浪微博界面(讲解如何自定义UITableViewCell,处理@#链接 特殊字符)

    在开发过程中 有好多应用都会嵌入新浪微博的界面 今天整理一下代码 首先看界面效果图 Demo下载地址 http download csdn net detail rhljiayou 6760745 思路 首先放一个UITableView 自
  • HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException:...

    1 HTTP Status 500 Request processing failed nested exception is java lang IllegalArgumentException Control character in
  • ASP.NET Core快速入门(第6章:ASP.NET Core MVC)--学习笔记

    课程链接 http video jessetalk cn course explore 良心课程 大家一起来学习哈 任务40 介绍 任务41 Individual authentication 模板 dotnet new mvc help
  • oracle批量绑定 forall bulk collect用法以及测试案例

    一 如何使用批挷定提高性能 How Do Bulk Binds Improve Performance 在PL SQL 和SQL引擎 engines 中 太多的上下文切换 context switches 会影响性能 这个会发生在当一个循环
  • Python开发环境Wing IDE如何查看调试数据

    Wing IDE具有一个十分有用的特性 就是处理复杂bug的时候可以以各种各样的方式查看调试数据值 这个功能具体是由Watch工具实现的 查看数据值 在PrintAsHTML中发生异常时 右键单击Stack Data工具中的本地数值 这将显
  • PO模式+数据驱动(TPshop网站的登录模块进行单元测试以及区分正向逆向用例)

    一 区分正向逆向用例 思路 在测试数据中添加一一个标识正向用例或逆向用例的标记 如 True False 步骤 调用登录方法 此登录方法中 只有输入用户名 输入密码 输入验证码 点击登录按钮 判断用例标记 判断安全退出是否存在 点击安全退出
  • 自动化测试——接口测试

    一 接口分类 1 内部接口 测试被测系统各个子模块之前的接口 或者测试被测系统提供给内部用户系统使用的接口 2 外部接口 被测系统调用外部的接口 系统对外提供的接口 接口测试重点 检查结论参数传递的正确性 输出结果的正确性及对各种异常情况的

随机推荐

  • zigzag扫描的matlab实现

    zigzag扫描的matlab实现 zigzag的扫描方式如下图所示 以 4 4 为例 下图是matlab中数组各位置的索引值 用横纵坐标来分析 2 3 4 5 6 7 8 1 1 1 2 3 1 4 1 4 2 3 4 4 4 2 1 2
  • 局域网、以太网、无线局域网学习笔记

    还有一年选择院校 加油 文章目录 局域网基本概念和体系结构 局域网 局域网拓扑结构 局域网的传输介质 局域网介质访问控制方法 局域网的分类 IEEE 802 MAC子层和LC子层 小结思维导图 以太网 以太网概述 以太网提供无连接 不可靠的
  • 通过按钮动态改变 el-dialog 的宽度

    1 按钮
  • Ubuntu不能进入NTFS分区(error mounting)

    Ubuntu不能进入NTFS分区 error mounting 装了Windows10与Ubuntu双系统后 在Ubuntu系统下想进入Windows的某个NTFS分区 点击时却出现下面错误 也可能在挂载移动硬盘时出现如下错误 Error
  • 金蝶KIS专业版二次开发探索

    1 前言 作为软件服务 有时候我们接受的任务是一个全新的 开发团队内没有人有相关经验的这么一个任务 这时候无论对于我们本身还是对于团队来说 都面临着一个新的挑战 如何在没有做过此类任务情况下凭借一些基本经验完成任务 顺利实现给客户的交付 我
  • 智能合约漏洞——短地址攻击

    基础知识 严格意义来说 短地址 参数攻击并不算智能合约的漏洞 这是一个应用上的接口数据处理问题 在介绍过得ERC20模板智能合约 其中有个transfer函数 其定义如下 function transfer address to uint2
  • WinForm 编程中控件的使用小技巧(splitter实现窗口分区域,改变Button的形状)

    一 Splitter 控件的主要作用就是将窗口分区并可以调节区域大小 比如 我想将窗口分为左右两个区域 并可以调节两个区域所占的比例 操作流程如下 1 新建一个窗口 Form1 2 在Form1中添加一个Panel控件Panel1 并将其D
  • IPv6的基本配置

    p拓扑图 AR1 interface GigabitEthernet0 0 0 ipv6 enable ipv6 address 2000 1 64 ipv6 route static 3000 64 2000 2 静态路由 AR2 int
  • BES2300x笔记(4) -- TWS组对与蓝牙配对(Peer or Pair傻傻分不清)

    哈喽大家好 这是该系列博文的第四篇 篇 lt lt 系列博文索引 快速通道 gt gt 首先上一个链接 TWS耳机火遍华强北 为何干不过苹果AirPods 一 前言 看到有 道友 在评论区留言 对TWS组对 BT配对以及回连流程部分很迷糊
  • PostgreSQL源码结构

    PostgreSQL的使用形态 PostgreSQL采用C S 客户机 服务器 模式结构 应用层通过INET或者Unix Socket利用既定的协议与数据库服务器进行通信 另外 还有一种 Standalone Backend 使用的方式 虽
  • Linux系统下JDK17安装+环境配置

    我们进入到cd usr lib 下然后创建一个jdk17的文件夹 mkdir jdk17 进入到jdk17目录下 下载jdk17包 wget https download oracle com java 17 latest jdk 17 l
  • 1600*C. Slava and tanks(思维)

    解析 如果n为奇数 则偶数位为奇数位少 1 则先轰炸偶数位 再轰炸奇数位 再一次轰炸偶数位 如果n为偶数 则任意顺序 于是无论奇偶 全部按照 偶 奇 偶 轰炸 则总次数为 n n 2 下取整 include
  • 使用python读取excel中的数据,并绘制折线图

    使用python读取excel中的数据 并绘制折线图 做实验的时候采集到一些数据 从文本拷贝到excel 然后从十六进制转换成十进制 图表是分析数据的有利工具 使用python绘制出的图表简明美观 所以我这次尝试一下 python新手 请多
  • WORD表格合并单元格并居中对齐

    捯饬了挺久 一直不能居中 表格的中间 1 合并单元格 然后就一直这样 解决方案
  • c语言输入一行未知个数数字存入数组

    转载https www cnblogs com wd1001 p 4826855 html 一直有个疑问输入一行数字存入数组时若不知道数字的个数怎么办 最容易想到的办法就是接收字符然后转化为数字 但这样太过麻烦 今天上网查了下 说可以用un
  • Eigen::aligned_allocator

    如果STL容器中的元素是Eigen库数据结构 例如这里定义一个vector容器 元素是Matrix4d 如下所示 vector
  • Apifox接口测试工具详细解析

    最近发现一款接口测试工具 apifox 我我们很难将它描述为一款接口管理工具 或 接口自测试工具 官方给了一个简单的公式 更能说明apifox可以做什么 Apifox Postman Swagger Mock JMeter Apifox的特
  • 怎么加入Microsoft Cloud Partner Program?

    目录 一 Microsoft Cloud Partner Program是什么 二 Microsoft Cloud Partner Program的优势 1 技术支持 2 销售和市场支持
  • 微信小程序分享实现拉新绑定(用户关系绑定)

    分享人此时已经是登陆状态 所以在分享的时候直接从本地存储中拿到用户的userId并拼接到分享链接上 其他用户在点击链接打开详情页之后会判断当前链接参数中有无uid有的话则直接存入本地中用作新用户登录注册时候请求接口的判断 最后在砍价记录列表
  • 黑盒测试与白盒测试

    边界值测试的效率有四个评价指标 用例数量 是否冗余 用例的覆盖范围和是否方便错误追踪 根据这四个指标我们对不同的边界值测试进行了评估 等价类测试则有强组合形式的覆盖和弱组合形式的覆盖 可根据用例的规模和数量选用合适的形式进行测试的覆盖 同时