当前位置:网站首页 > 科技动态 > 正文

黑盒白盒灰盒测试

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情

一.介绍

基本原理

侧重于系统或部件内部机制的测试,类型分为分支测试,路径测试,语句测试。

别名

结构测试,透明盒测试,逻辑驱动测试或基于代码的测试

关注的对象
  • 源代码
  • 程序结构
优势
  1. 针对性强
  2. 缺陷修复成本低
  3. 有助于了解和衡量对被测对象的测试覆盖程度
  4. 有助于代码优化和缺陷预防
不足
  • 对技术人员要求高
  • 成本高

二.技术概述

(1)控制流分析技术(基于程序结构)

一类用于分析程序控制流结构的静态分析技术

控制流图(程序图):

  • 圆圈(节点)执行语句
  • 有向线段:程序执行方向 image.png

程序结构:

  • 线性结构
  • 条件判定结构
  • while循环结构
  • do-while循环结构
  • 嵌套结构
  • 串联结构
分析的内容:
关注判定节点固有的复杂性
焦点:判定表达式 方法:逻辑覆盖测试 
关注判定结构与循环结构对执行路径产生的影响
焦点:路径 方法:基本(独立)路径测试 
关注循环结构本身的复杂性
焦点:循环体 方法:基于数据的静态分析 

白盒测试的分类 动态白盒测试(结构化测试):逻辑覆盖测试、基本(独立)路径测试等 静态白盒测试:静态结构分析,静态质量度量,代码检查方法等

三.逻辑覆盖测试

逻辑覆盖测试:可以分为语句覆盖,判定覆盖(分支覆盖),条件覆盖,判定-条件覆盖(分支-条件覆盖),条件组合覆盖,路径覆盖六种覆盖测试方法

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

  • 最弱的:语句覆盖
  • 最强的:条件组合覆盖

1.语句覆盖

设计测试用例时应保证程序中每一条可执行语句至少应执行一次 特点:最弱的一种覆盖标准,关注语句而非关注判定节点,对隐式分支无效

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

设计测试用例时应保证程序中每个判定节点取的每种可能的结果至少一次i,或者程序中每个判定的真分支和假分支至少执行一次。 特点:如果判断节点包含的是复合判定表达式,仅关心表达式的整体取值。

3.条件覆盖

设计测试用例时应保证程序中每个复合判定表达式中,每个简单判定条件(子条件)的取真和取假情况至少执行一次。 特点:并不能确保满足判定覆盖,相比判定覆盖,条件覆盖虽然进一步深入检查了判定节点中的每个子条件,但判定节点局部的完全覆盖并不能保证对判定节点整体的完全覆盖

4.判定-条件覆盖

测试用例应满足判定节点的取真,取假至少执行一次。且每个简单判定条件(子条件)的取真和取假情况也至少执行一次。

5.条件组合覆盖

本质:通过列出真值表的方法来得到完全的覆盖 优势:条件组合覆盖准则满足语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖准则;方法简单,只需要找到所有简单条件,并列出真值表,穷尽所有组合情况。 弱势:条件组合覆盖不能保证所有组合的路径被执行,测试用例太多,冗余严重

5.路径覆盖

要求设计足够的测试用例,运行被测程序,覆盖程序中所有可能组合的路径。 特点:路径覆盖测试方法可以对程序进行彻底的测试,比前五种覆盖面都广。

各种覆盖之间的关系

image.png

版权声明


相关文章:

  • can总线是什么样子2025-04-12 23:01:08
  • 数字语音处理及matlab仿真2025-04-12 23:01:08
  • 前端创建项目2025-04-12 23:01:08
  • js中get和post的区别2025-04-12 23:01:08
  • 提升产业链供应链完整性2025-04-12 23:01:08
  • 白盒测试方法及示例2025-04-12 23:01:08
  • 深拷贝怎么用2025-04-12 23:01:08
  • romberg测试2025-04-12 23:01:08
  • 反向传播算法的作用是什么?2025-04-12 23:01:08
  • 低功耗模块2025-04-12 23:01:08