软件测试第二部分:白盒测试

news2025/5/25 16:06:29

概念与定义

  1. 白盒测试:侧重于系统或部件内部机制的测试,类型分为分支测试(判定节点测试)、路径测试、语句测试。

  2. 控制流分析(基于程序结构):控制流分析是一类用于分析程序控制流结构的静态分析技术,目的在于生成程序的控制流图,在编译器设计程序分析、程序理解等领域都有重要应用。

  3. 逻辑覆盖测试(对判定的测试)的原理:以程序内部的逻辑结构为基础的用例设计方法,它通过对程序的逻辑结构的遍历,来实现测试对程序的覆盖。

  4. 测试覆盖率:度量测试完整性的指标,是测试有效性的一个度量。

    覆盖率至少被执行一次的总数总数覆盖率至少被执行一次的总数总数覆盖率=至少被执行一次的����总数����总数

    测试覆盖率不需要100%,因为覆盖率越高,测试成本越高。

    通常可以设置一个覆盖率达标标准。

  5. 语句覆盖:设计测试用例时应保证程序中每一条可执行语句至少应执行一次。(点覆盖)

  6. 判定覆盖(分支覆盖):设计测试用例时应保证程序中每个判定节点取得每种可能的结果至少一次。或者程序中每个判定的真分支和假分支至少执行一次。(边覆盖)

  7. 条件覆盖:设计测试用例时应保证程序中每个复合判定表达式中,每个简单判定条件(子条件)的取真和取假情况至少执行一次。

  8. 判定-条件覆盖:设计测试用例时应满足判定节点的取真、取假分支至少执行一次,且每个简单判定条件(子条件)的取真和取假情况也至少执行一次。即判定覆盖+条件覆盖。

  9. 条件组合覆盖:条件组合覆盖,设计测试用例时应满足每个判定节点中,所有简单判定条件(子条件)的所有可能的取值组合情况至少执行一次。通过列出真值表的方式来得到完全的覆盖。

  10. 路径覆盖:要求设计足够的测试用例,运行被测程序,覆盖程序中所有可能组合的路径。

  11. 程序图:简化的程序流程图,不关注源代码细节,只关注程序的基本结构。

  12. 环复杂度:用于描述程序结构复杂度的度量。

  13. 基本路径测试:在程序的控制流图的基础上,通过分析控制流程的环路复杂性,导出独立可执行路径集合,从而设计测试用例的方法。

  14. 静态白盒测试:又称为结构分析,是在不执行程序的条件下审查软件设计、体系结构和代码,从而找出软件缺陷的过程。测试对象是文档、代码等非计算机执行的部分。

同时,在这我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看就行,希望对你有所帮助!【公众号:互联网杂货铺】免费领取软件测试资料!

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

 

简答

白盒测试关注的对象

源代码和程序结构。

白盒测试的优缺点

优点

  • 针对性强,便于快速定位,测试效率高;
  • 在函数级别开始测试工作,缺陷修复的成本低;
  • 通过不同的白盒覆盖指标有助于了解和衡量对被测对象的测试覆盖程度,
  • 有助于代码优化和缺陷预防。

缺点

  • 对测试人员的技术要求高。
  • 成本高。

白盒测试的问题

  • 软件测试是不完备的;
  • 软件测试是有风险的;
  • 测试设计应达到的目标:提高效率、降低风险、在代码级别上提高软件质量。

各种程序结构以及它们的复杂程度

程序结构有:线性结构(顺序结构),条件判定结构,循环结构,以及这些结构的组合。

复杂程度:

线性结构二分支的条件判定多分支的条件判定循环结构线性结构二分支的条件判定多分支的条件判定循环结构线性结构<二分支的条件判定<多分支的条件判定<循环结构

逻辑覆盖测试的六种测试方法

image-20231230162427773

  1. 语句覆盖

    缺点:关注语句,而非关注判定节点。对隐式分支无效。

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

    局限性:判定覆盖仅关心表达式的整体取值,并不关心表达式如何构成,不能覆盖到每个子条件的所有取值情况,由此导致测试的漏洞。

  3. 条件覆盖

    局限性:条件覆盖并不能确保满足判定覆盖。

  4. 判定-条件覆盖(分支-条件覆盖)

  5. 条件组合覆盖

    优点:

    • 条件组合覆盖准则满足语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖准则;
    • 方法简单;只需要找到所有简单条件,并列出真值表,穷尽所有组合情况即可。

    局限性:

    • 条件组合覆盖不能保证所有组合的路径被执行;
    • 测试用例太多;
    • 冗余严重。
  6. 路径覆盖

    覆盖面最广。

    100%满足路径覆盖,一定能100%满足判定覆盖标准;但并不一定能100%满足条件覆盖和判定-条件覆盖,也就不能满足100%条件组合覆盖。

各种覆盖之间的关系

  • 语句覆盖太弱;
  • 判定覆盖、条件覆盖不够全面;
  • 判定-条件覆盖设计难度大;
  • 条件组合覆盖的测试用例数量太多,不能将所有路径覆盖;
  • 路径覆盖的测试用例复杂且数量多,不能将所有的条件组合覆盖。

单独采用任何一种逻辑覆盖方法都不能完全覆盖所有的测试用例,任何一个高效的测试用例,都是针对具体测试场景的。

环复杂度的计算

直观观察法

观察程序图将二维平面分割为封闭区域和开放区域的个数。

image-20231230163410807

公式计算法

方法一:

�(�)=�−�+2

其中,� 是边数, � 是节点或顶点数。

前提条件:单入口单出口。

例题:

image-20231230163845973

�(�)=�−�+2=10−7+2=5

方法二:

�(�)=�−�+1

前提条件:无孤立节点,强连通图。如果非强连通图,则需要先添加辅助线。如下图的蓝线。

简单地说,强连通图就是图中任意两个点相互可达。

image-20231230164134629

�(�)=�−�+1=11−7+1=5

判定节点法

�(�)=�+1

其中,� 是二分支判定节点的个数。

前提条件:仅计算二分支的判定节点。

如果没有判定节点,只有一条执行路径,则�=1。

image-20231230163845973

如上图,二分支判定节点分别有:A,B,C,D。

因此,�(�)=�+1=4+1=5.

特殊情况的计算

环复杂度的计算公式都有特定的前提条件,遇到特殊情况,则使用其它可以使用的公式。

image-20231230164854250

  • 左图,非单入单出,不能使用公式计算法的方法一,可以使用判定节点法,V=5
  • 右图,非二分支判定节点,不能使用判定节点法,可以使用公式计算法方法一,V=13

基本路径测试的流程

  1. 生成路径地图

    image-20231230163845973

  2. 确定独立路径集合的规模

    计算环复杂度�,则需要�条独立路径。

  3. 找出一组独立路径。

    1. 确定主路径(出错概率最高的路径,或者缺陷对用户影响最大的路径)。
    2. 根据主路径抽取其它独立路径。

image-20231230165602659

静态白盒测试的方法

  1. 代码检查
  2. 静态结构分析
  3. 静态质量度量

image-20231230173754769

同行评审的一般流程

  1. 计划评审会议
  2. 召开评审预备会
  3. 准备评审会议
  4. 召开评审会议
  5. 召开第三小时会议
  6. 修复缺陷
  7. 确认修复

同行评审的五种角色

  1. 主持人:负责组织评审会议;
  2. 讲解员:负责讲解被评审的工作产品;
  3. 记录员:负责记录缺陷和决议;
  4. 作者:程序编写者,负责提供被提审的工作产品;
  5. 评审员:程序设计者、测试专家,负责评审工作产品,也负责设计测试用例。

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

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

相关文章

8个流行的Python可视化工具包,你喜欢哪个?

用 Python 创建图形的方法有很多&#xff0c;但是哪种方法是最好的呢&#xff1f;当我们做可视化之前&#xff0c;要先明确一些关于图像目标的问题&#xff1a;你是想初步了解数据的分布情况&#xff1f;想展示时给人们留下深刻印象&#xff1f;也许你想给某人展示一个内在的形…

芯课堂 | LVGL基础知识(二)

引言 在 LVGL 中&#xff0c;用户界面的基本构建块是对象&#xff0c;也称为小部件(widget)。默认情况下&#xff0c;LVGL在背景上绘制旧对象&#xff0c;在前景上绘制新对象。 对象层级(Layers) 创建对象层级顺序 默认情况下&#xff0c;LVGL在背景上绘制旧对象&#xff0c…

【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】

【导出与导入Virtualbox虚拟机和启动连接openGauss数据库】 一、导出虚拟机二、导入虚拟机三、启动数据库四、使用Data Studio连接数据库 一、导出虚拟机 选择关机状态的虚拟机 -> 管理菜单 -> 导出虚拟电脑 点击完成后&#xff0c;需要等待一小段时间&#xff0c;如…

基于gitlab 12.8.0版本的完整镜像过程

目前已在一台服务器上安装了gitlab 12.8.0&#xff0c;并且稳定运行了有几年了&#xff0c;其上面也创建了大量的项目。目前要求对该gitlab及其上面的所有仓库做一个完整的镜像。具体操作过程如下&#xff1a; 1、确认现有的gitlab的版本号 2、到gitlab官网下载相同版本号的gi…

【干货】Windows中定时删除system32目录下的.dmp文件教程

旭帆科技的技术人员除了给用户答疑解惑以外&#xff0c;还会主动测试软件性能&#xff0c;进行平台优化&#xff0c;除此之外&#xff0c;技术人员还会总结一些技术干货&#xff0c;这不&#xff0c;近期又提供了一份如何在Windows中定时删除system32目录下的.dmp文件的教程。感…

目标检测COCO数据集与评价体系mAP

1.mAP 2.IoU IoU也就是交并比&#xff0c;也称为 Jaccard 指数&#xff0c;用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框&#xff0c;用于指定对象图像的位置以及预测的边界框…

软件安全测试有哪些测试方法?安全测试报告如何申请?

随着网络条件越来越好&#xff0c;软件产品质量和软件安全处于同等重要的地位&#xff0c;一款好的软件产品安全系数至关重要&#xff0c;因此安全测试必不可少&#xff0c;那么软件安全测试有哪些测试方法呢?安全测试报告又该如何申请&#xff1f; 软件安全测试是指测试人员…

BUUCTF--ciscn_2019_n_31

这是一题32位的堆题&#xff0c;照常看看保护&#xff1a; 没有开启PIE&#xff0c;接着进行黑盒测试&#xff1a; 菜单题&#xff0c;扔进IDA看看代码逻辑&#xff1a; 4这个功能是提供所谓的进阶版&#xff0c;当时我测试的时候以为是里面有后门还是什么的。结果发现是虚晃一…

(17)Linux的进程阻塞进程程序替换 exec 函数簇

前言&#xff1a;本章我们讲解它的 options 参数。在讲解之前我们需要理解进程阻塞&#xff0c;然后我们重点讲解二进程程序替换&#xff0c;这是本章的重点&#xff0c;然后介绍一个进程替换函数 execl&#xff0c;通过介绍这个函数来打开突破口&#xff0c;引入进程创建的知识…

dubbo使用的三种配置

一. 准备注册中心 dubbo的注册中心在生产环境中&#xff0c;一般都会选择 ZooKeeper 下载 ZooKeeper ZooKeeper_3.4.14下载地址启动ZK # 解压安装包 tar -zxvf zookeeper-3.4.14.tar.gz# 进入安装目录&#xff0c; cp conf/zoo_sample.cfg conf/zoo.cfg# 启动ZK ./bin/zkServ…

Vue3-33-路由-路由的别名配置 alias

别名的作用 路由中的别名配置&#xff0c;可以实现 多个路径 对应 同一个路由。 例如 &#xff1a; 路由的路径是 /a; 配置别名为 &#xff1a; /a2; 则 访问 /a 或 /a2 的时候&#xff0c;都可以访问到 同一个组件。 别名的特点 关键字 &#xff1a; alias 当通过别名进行路由…

【期末复习向】数据可视化技术

一、重点复习 题型&#xff1a;填空题&#xff08;15道&#xff0c;2分一个&#xff09;与简答题&#xff08;3道题目&#xff0c;10分一个&#xff09;与绘图题&#xff08;选画2个类型的图&#xff09; 1.什么是数据可视化 在计算机视觉领域&#xff0c;数据可视化是对数据的…

Docker入门教程(详解)

Docker容器化 一 入门 1. 引言 &#xff08;1&#xff09;单机部署 场景&#xff1a; 将多个应用部署一台服务器上。 问题 每个应用软件&#xff0c;都会消耗物理资源&#xff0c;共用计算机资源&#xff0c;彼此之间会形成竞争关系。 &#xff08;2&#xff09;多机部署 …

技术大拿私房课:掌握Task、Thread、ThreadPool的终极秘籍!

大家好&#xff0c;我是小米&#xff01;在这个充满技术和创新的时代&#xff0c;作为一名喜欢分享的技术探索者&#xff0c;我想和大家聊一聊一些在社招面试中常常被提到的热门话题——task、thread、threadpool。这是一组关于并发编程的核心问题&#xff0c;也是我们在日常工…

速学python·变量和类型

变量是什么 变量是在计算复杂程序过程中&#xff0c;用于保存中间结果的东西&#xff0c;这个东西一般是可变的量&#xff0c;也就是变量。 例如&#xff1a; 计算方差 1.计算平均值 2.计算每个数字与平均值的差值再平方 3.相加每一项平方值 4.除项数 Average (77.588.599.510…

C语言——表达式的求值

表达式求值有以下几种决定因素。 一、操作符优先级和结合性 类别 操作符 结合性 后缀 () [] -> . - - 从左到右 一元 - ! ~ - - (type)* & sizeof 从右到左 乘除 * / % 从左到右 加减 - 从左到右 移位 << >> 从左到右 关系 < < > > 从左…

Spark内核解析-内存管理7(六)

1、Spark内存管理 Spark 作为一个基于内存的分布式计算引擎&#xff0c;其内存管理模块在整个系统中扮演着非常重要的角色。理解 Spark 内存管理的基本原理&#xff0c;有助于更好地开发 Spark 应用程序和进行性能调优。本文中阐述的原理基于 Spark 2.1 版本。 在执行 Spark 的…

聚丙烯腈,到预测期结束时将达到36亿美元的市场规模

聚丙烯腈 (PAN) 是一种合成聚合物&#xff0c;广泛用于各种应用&#xff0c;包括纺织品、碳纤维生产和水处理。近年来&#xff0c;受航空航天、汽车和建筑行业对碳纤维增强复合材料需求不断增长的推动&#xff0c;全球 PAN 市场稳步增长。 全球 PAN 市场预计从 2020 年到 2025 …

Typora+PicGo+Gitee构建云存储图片

创建Gitee仓库 首先&#xff0c;打开工作台 - Gitee.com&#xff0c;自行注册一个账户 注册完后&#xff0c;新建一个仓库&#xff08;记得仓库要开源&#xff09; 然后创建完仓库后&#xff0c;鼠标移动到右上角头像位置&#xff0c;选择设置&#xff0c;并点击&#xff…

prometheus grafana redis安装配置监控

文章目录 前传安装redis-exporterredis_exporter参数配置参考配置prometheus查看promethues redis job节点grafana配置外传 前传 prometheus grafana的安装使用&#xff1a;https://nanxiang.blog.csdn.net/article/details/135384541 本文说下监控nginx&#xff0c;promethe…