2. 白盒测试

白盒测试

在这里插入图片描述

1. 白盒测试定义

测试软件的内部编码和基础设施,重点是根据预期和期望的输出检查预定义的输入。它基于应用程序的内部工作方式,并围绕内部结构测试。在这种类型的测试中,编程测试用例需要编程技巧。白盒测试的主要目标是通过软件关注输入和输出流,并加强软件的安全性。
在这里插入图片描述

2. 白盒测试的通用步骤

  • 设计所有测试场景,测试用例并根据高优先级编号对其进行优先级排序。
  • 此步骤涉及在运行时研究代码以检查资源利用率,而不是访问代码区域,各种方法和操作所花费的时间等。
  • 在此步骤中,将对内部子例程进行测试。内部子例程(如非公共方法,接口)能够适当地处理所有类型的数据。
  • 此步骤侧重于测试控制语句(如循环和条件语句),以检查不同数据输入的效率和准确性。
  • 在最后一步中,白盒测试包括安全测试,通过查看代码如何处理安全性来检查所有可能的安全漏洞。

3. 白盒测试的原因

  • 它识别内部安全漏洞。
  • 检查代码中的输入方式。
  • 检查条件循环的功能。
  • 在单个级别测试函数,对象和语句。

4. 白盒测试的优点

  • 白盒测试可以优化代码,从而可以识别隐藏的错误。
  • 白盒测试的测试用例可以轻松实现自动化。
  • 此测试比其他测试方法更全面,因为它涵盖了所有代码路径。
  • 即使没有GUI,它也可以在SDLC阶段启动。

5. 白盒测试的缺点

  • 在大规模编程应用程序中,白盒测试耗费太多时间。
  • 白盒测试非常昂贵且复杂。
  • 它可能导致生产错误,因为开发人员没有详细说明。
  • 白盒测试需要具备编程语言和实现的详细知识和理解的专业程序员。

6. 白盒测试技术

1. 数据流测试

数据流测试用于分析程序中的数据流。它是收集有关变量如何在程序中流动数据的过程。它试图获得过程中每个特定点的特定信息。

数据流测试是一组测试策略,用于检查程序的控制流程,以便根据事件的顺序探索变量的顺序。它主要关注分配给变量的值和通过集中在两个点上使用这些值的点,可以测试数据流。

数据流测试使用控制流图来检测可能中断数据流的不合逻辑的事物。由于以下原因,在值和变量之间的关联时检测到数据流中的异常:

  • 如果使用变量而没有初始化。
  • 如果初始化变量至少未使用一次。

2. 控制流程测试

该技术的目的是通过控制结构确定语句或程序指令的执行顺序。程序的控制结构用于开发程序的测试用例。在该技术中,测试者选择大程序的特定部分来设置测试路径。它主要用于单元测试。测试用例由程序的控制图表示。

控制流图由节点,边缘,决策节点,结节点形成,以指定所有可能的执行路径。

用于控制流图的符号

  • 节点
  • 边缘
  • 决策节点
  • 连接节点

1.节点

控制流程图中的节点用于创建过程路径。它代表了接下来程序的程序顺序,测试人员可以确定程序的发生顺序。

我们在下面的示例中可以看到第一个节点表示启动过程,下一个过程是在赋值后分配n的值,如果是18或更大的值,则根据n的值确定过程的下一个节点的决策节点 如果小于18不符合条件的程序执行,那么它是合理的,程序将以其他方式执行。下一个节点是结节点,最后一个节点是停止节点以停止该过程。

2.边缘

控制流图中的边用于链接节点的方向。在下面的示例中可以看到,所有箭头都用于在适当的方向上链接节点。

3.决策节点

控制流程图中的决策节点用于根据值确定过程的下一个节点。可以在下面的示例中看到决策节点根据n的值确定过程的下一个节点,如果它是18或大于18,那么如果小于18,则合格的过程将执行,否则执行不合格的过程。

3. 分支覆盖测试

分支覆盖技术用于覆盖控制流图的所有分支。它至少涵盖决策点的每个条件的所有可能结果(真和假)。分支覆盖技术是一种白盒测试技术,可确保每个决策点的每个分支都必须执行。

然而,分支覆盖技术和决策覆盖技术非常相似,但两者之间存在关键差异。决策覆盖技术涵盖每个决策点的所有分支,而分支测试涵盖代码的每个决策点的所有分支。

换句话说,分支覆盖遵循决策点和分支覆盖边缘。许多不同的指标可用于查找分支覆盖范围和决策覆盖范围,但一些最基本的指标是:在程序执行期间查找程序的百分比和执行路径。

与决策覆盖一样,它也使用控制流图来计算分支数。

在这里插入图片描述

4. 语句覆盖测试

语句覆盖测试:指的是制定足够多的软件测试用例,使得软件中的每一个代码语句至少都能被执行一次的软件测试方法。这是一种效果较差的逻辑驱动覆盖测试方法。

以上述的代码块为例,当使用测试输入数据为 “a = 2,b = 0,x = 4” 作为测试用例时,程序中的所有语句恰好都可以被执行一次,软件的预期输出为 “x = 3”。在流程图中,本次测试工作的程序执行路径如下图的红色线条所示:

在这里插入图片描述

可以看到,语句覆盖测试虽然可以覆盖软件中的所有代码语句,但是无法覆盖到所有的代码分支,图中蓝色线条分支是未被测试到的。此时,如果软件代码中存在 “误将 AND 条件写为了 OR”“误将 x > 1 写为了 x >= 1” 一类的分支语句错误的话,是无法被语句覆盖测试所发现的。这也是认为 “语句覆盖测试是一种效果较差的测试方法” 的原因之一。

5. 条件组合覆盖测试

条件组合覆盖:指的是制定足够多的软件测试用例,使得软件中的所有条件的各种组合都能被至少执行一次的软件测试方法。这是效果最强仍不完美的逻辑驱动覆盖测试方法。

以上述的代码块为例,可以将程序中的每个判定条件都进行拆分,绘制为下方新的流程图:

外链图片转存中...(img-oFyimvV0-1721040552208)]

软件测试工程师可以制定足够多的软件测试用例,使得软件中的所有条件的各种组合都能被至少执行一次(此处不再展示测试用例)。对比上述其他四种逻辑驱动覆盖测试方法的特点,可以发现:条件组合覆盖也是不完美的。但是,条件组合覆盖测试方法足以应对绝大多数的情况,没有必要再设计更加详细的逻辑驱动覆盖测试方法,到此为止即可。

示测试用例)。对比上述其他四种逻辑驱动覆盖测试方法的特点,可以发现:条件组合覆盖也是不完美的。但是,条件组合覆盖测试方法足以应对绝大多数的情况,没有必要再设计更加详细的逻辑驱动覆盖测试方法,到此为止即可。

在实际的软件测试工作中,通常不必直接使用条件组合覆盖测试方法,因为会大幅度的增加测试工程师的工作量。一般情况下,大多数的软件测试工作只需使用语句覆盖判定覆盖这两种逻辑驱动覆盖测试方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

秒懂设计模式--学习笔记(9)【结构型-装饰器模式】

目录 8、装饰器模式8.1 装饰器模式(Decorator)8.2 装修(举例)8.3 化妆(示例)8.4 化妆品的多样化8.5 装饰器8.6 自由嵌套8.7 装饰器模式的各角色定义8.8 装饰器模式 8、装饰器模式 8.1 装饰器模式&#xff…

MySQL运维实战之ProxySQL(9.6)SQL黑名单

作者:俊达 利用mysql_query_rules表中的error_msg字段,可以实现SQL黑名单的功能。如果规则设置了error_msg,当SQL语句匹配这条规则时,proxysql会直接将error_msg的内容返回给客户端。 当遇到一些大查询严重影响数据库性能时&…

【开源项目】Rust开发复制文件夹目录结构工具

说明 由于我经常需要在多个大容量的移动硬盘中查找和新增文件,我希望把硬盘的目录结构放到服务器的自建网盘中,因此开发了这个工具,使得在不同硬盘之间的文件管理变得更加便捷 项目地址:https://github.com/VinciYan/folder_clon…

红色文化3D虚拟数字展馆搭建意义深远

在房地产与土地市场的浪潮中,无论是新城规划、乡村振兴,还是商圈建设,借助VR全景制作、虚拟现实和web3d开发技术打造的全链条无缝VR看房新体验。不仅极大提升了带看与成交的转化率,更让购房者足不出户,即可享受身临其境…

Linux Cgroups

Linux CGroup全称Linux Control Group, 是Linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等)。这个项目最早是由Google的工程师在2006年发起(主要是Paul Menage和R…

能把进程和线程讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

【verilog】Verilog 中的 ifdef 语法指南:Verilog-2001 与 SystemVerilog

目录 简介 Verilog-2001 中的 ifdef 基本语法 示例 1:Verilog-2001 风格 SystemVerilog 中的 ifdef 基本语法 示例 2:SystemVerilog 风格 示例 3:调试与发布配置 注意事项 简介 在 Verilog 硬件描述语言中,ifdef 是一种…

SQL Server 创建用户并授权

创建用户前需要有一个数据库,创建数据库命令如下: CREATE DATABASE [数据库名称]; CREATE DATABASE database1; 一、创建登录用户 方式1:SQL命令 命令格式:CREATE LOGIN [用户名] WITH PASSWORD 密码; 例如,创建…

Vue项目中禁用ESLint的几种常见方法

1. 通过 vue.config.js 禁用 这是最直接且推荐的方式,因为它直接在Vue CLI的配置中禁用ESLint。通过在项目根目录下创建或修改 vue.config.js 文件,并设置 lintOnSave 为 false,可以彻底禁用保存时的ESLint检查。 // vue.config.js module…

FlinkErr:org/apache/hadoop/hive/ql/parse/SemanticException

在flink项目中跑 上面这段代码出现如下这个异常&#xff0c; java.lang.NoClassDefFoundError: org/apache/thrift/TException 加上下面这个依赖后不报错 <dependency> <groupId>org.apache.thrift</groupId> <artifactId>libthrift</artifactId…

Python绘制相关系数热力图

相关系数热力图是一种可视化工具&#xff0c;用于展示变量之间的相关性。它在数据分析和统计中非常有用&#xff0c;尤其是在探索数据集的内在关系时。本文将介绍如何使用Python绘制相关系数热力图。 一、准备——导入库 使用Pandas来处理数据&#xff0c;Matplotlib和Seabor…

力扣第233题“数字1的个数”

在本篇文章中&#xff0c;我们将详细解读力扣第233题“数字1的个数”。通过学习本篇文章&#xff0c;读者将掌握如何计算从1到n的数字中出现的“1”的个数&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释&#xff0c;以便于理解。 问题描述 力…

redis笔记2

redis是用c语言写的,放不频繁更新的数据&#xff08;用户数据。课程数据&#xff09; Redis 中&#xff0c;"穿透"通常指的是缓存穿透&#xff08;Cache Penetration&#xff09;问题&#xff0c;这是指一种恶意或非法请求直接绕过缓存层&#xff0c;直接访问数据库或…

力扣 144题 二叉树的前序遍历 记录

题目描述 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]思路 辅助函数 traversal:- 参数: 接受两个参数&#xff0c;一个是指向树节点的指针 cur&#xff08;表示当前访问的节点&#xff09;&…

Qt | 绘制椭圆、弧、弦、扇形、圆角矩形

点击上方"蓝字"关注我们 01、简介 1、需要使用到的 QPainter 类中的函数 2、绘制椭圆的方法有 绘制给定矩形的内接椭圆和根据中心点与椭圆 x 方向和 y 方向的半径绘制,原理见下图 3、绘制弧、弦、扇形的原理: 1)、弧是椭圆上的一段曲线,因此其绘制方法就是首先…

STM32之八:IIC通信协议

目录 1. IIC协议简介 1.1 主从模式 1.2 2根通信线 2. IIC协议时序 2.1 起始条件和终止条件 2.2 发送一个字节 2.3 接收一个字节 2.4 应答信号 1. IIC协议简介 IIC协议是一个半双工、同步、一主多从、多主多从的串行通用数据总线。该通信模式需要2根线&#xff1a;SCL、…

ubuntu22.04安装SecureCRT8.7.3,完成顺利使用

材料准备 scrt-sfx安装包 &#xff0c; securecrt_linux_crack.pl 补丁脚本&#xff0c;和两个依赖库 其中securecrt_linux_crack.pl是找的专门适合 8.7.3版本的&#xff0c;网上很多版本的crack.pl只能打补丁以前的老版本。 而更老版本的SecureCRT对ubuntu22支持更不好&#…

【低照度图像增强系列(8)】URetinex-Net算法详解与代码实现(2022|CVPR)

前言 ☀️ 在低照度场景下进行目标检测任务&#xff0c;常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题&#xff0c;给检测带来一定的难度。 &#x1f33b;使用图像增强模块对原始图像进行画质提升&#xff0c;恢复各类图像信息&#xff0c;再使用目标检…

hmallox勒索病毒科普:了解其威胁与防御策略

hmallox勒索病毒科普&#xff1a;了解其威胁与防御策略 一、引言 在数字化时代&#xff0c;网络安全威胁日益严峻&#xff0c;勒索病毒作为其中的一类恶意软件&#xff0c;给个人和企业带来了巨大损失。hmallox勒索病毒作为Mallox勒索软件家族的新变种&#xff0c;以其高度的…

求职学习笔记day1

自己一直算是一个内耗拖延的人&#xff0c;内耗着考了研&#xff0c;内耗着拖着不找工作&#xff0c;一直拖到了毕业。研究生没考上&#xff0c;工作没有&#xff0c;也羡慕着别人成功的生活&#xff0c;最后毕业的也不太开心。 一、最近总结 游戏 高考结束以来和大学期间作息…