转载自:https://blog.csdn.net/iteye_13411/article/details/82158591

[概述]

白盒测试,有时候又称为基于结构的测试,特别适用于低级别的测试。根据测试强度的不同,存在各种不同的白盒测试技术。本文尽量通过简单的方式,阐述不同白盒测试技术之间的区别和在测试强度方面的不同。

[正文]

白盒测试,有时候又称为基于结构的测试,是基于测试对象的代码、数据,或者系统架构而进行测试的一种技术,它关注的是测试对象的内部结构。白盒测试技术的共同特点有:

测试对象的内部结构信息是设计测试用例的依据,例如:程序代码和设计架构。

测试对象的覆盖率可以通过已有的测试用例来测量,并且可以系统的增加测试用例来提高覆盖率。

满足白盒测试的相关测试准则,并不意味整个测试已完成,而只能说明测试对象已不需要基于此技术再进行额外的测试,但是可以继续应用其他测试技术。

在测试过程中,测试人员可以根据测试强度的不同,应用各种不同的白盒测试设计。常见的白盒测试技术包括:

ü  语句测试(Statement testing),指的是设计若干测试用例来执行程序代码中的语句。语句覆盖指的是被执行的语句数与所有可能的语句数之间的比值,例如:有些项目要求程序代码达到100%的语句覆盖。

ü  判定测试(Decision testing)是一种针对判定结果设计测试用例的技术。判定覆盖指的是执行测试套件能够覆盖的判定结果的百分比,即被执行的判定和总的判定的比值。在低级别的测试中,判定覆盖常常可以作为出口准则之一,例如:测试出口准则可以要求测试对象达到100%的判定覆盖。100%的判定覆盖可以保证100%的语句覆盖。

ü  条件测试(Condition testing)指的是设计若干测试用例来执行不同的条件结果。条件覆盖指的是执行测试套件能够覆盖到原子条件的百分比,即被执行的原子条件和总的原子条件的比值。100%的条件覆盖要求测试覆盖到每一个原子条件语句分别取值为真和假的情况。需要注意的是,条件覆盖并不比判定覆盖更强。

ü  判定条件测试(Decision condition testing)指的是设计若干测试用例来执行条件结果和判定结果。判定条件覆盖指的是执行测试用例套件能够覆盖的条件结果和判定结果的百分比。100%的判定条件覆盖意味着100%的判定覆盖和100%的条件覆盖。

ü  条件决定测试(Condition determination testing)是对能够独立影响判定结果的单独条件的测试(测试对象中的每个条件必须产生所有可能的输出结果至少一次,并且每个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,就可以使判定结果发生改变)。条件决定覆盖指的是执行测试套件覆盖到的能够独立影响判定结果的单个条件的百分比。100%的条件决定覆盖意味着100%的判定条件覆盖。

ü  条件组合测试(Multiple condition testing,也称为Condition combination testing)是指设计测试用例覆盖每条语句中的原子条件所有可能的取值结果组合(即每个判定中的所有可能的原子条件取值组合至少执行一次)。条件组合覆盖指的是测试套件覆盖每条语句内的所有原子条件取值结果组合的百分比。100%条件组合覆盖意味着100%条件决定覆盖。

ü  路径测试(Path testing)是指设计测试用例用来执行不同的路径。路径覆盖指的是测试套件执行的路径占总的路径的百分比。100%的路径覆盖可以确保100%的语句覆盖和判定覆盖。

根据测试对象的复杂程度和不同的覆盖率的要求,可以选择和应用不同的白盒测试设计技术。根据源代码的特点和选择的白盒测试设计技术,就可以定义测试的强度。图1是不同白盒测试设计技术的测试覆盖率强度关系。

图1 白盒测试技术测试强度对比

【转载】ISTQB AL-TA/TTA连载系列06:白盒测试技术的精炼总结的更多相关文章

  1. Java 集合系列 06 Stack详细介绍(源码解析)和使用示例

    java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java ...

  2. 【测试123】ISTQB AL

    近一年时间加强了金融领域基础知识,希望能顺利获得FRM认证. 接下来因为工作需要,在测试工程师的角色上有所深入发展. 仔细想了下,一是管理上的角色转换,如何协调各个不同测试级别,以及如何成为一个称职满 ...

  3. JavaScript进阶系列06,事件委托

    在"JavaScript进阶系列05,事件的执行时机, 使用addEventListener为元素同时注册多个事件,事件参数"中已经有了一个跨浏览器的事件处理机制.现在需要使用这个 ...

  4. 委托、Lambda表达式、事件系列06,使用Action实现观察者模式,体验委托和事件的区别

    在"实现观察者模式(Observer Pattern)的2种方式"中,曾经通过接口的方式.委托与事件的方式实现过观察者模式.本篇体验使用Action实现此模式,并从中体验委托与事件 ...

  5. 线程系列06,通过CLR代码查看线程池及其线程

    在"线程系列04,传递数据给线程,线程命名,线程异常处理,线程池"中,我们已经知道,每个进程都有一个线程池.可以通过TPL,ThreadPool.QueueUserWorkItem ...

  6. C#程序集系列06,程序集清单,EXE和DLL的区别

    CLR在加载程序集的时候会查看程序集清单,程序集清单包含哪些内容呢?可执行文件和程序集有什么区别/ 程序集清单 □ 查看程序集清单 →清空F盘as文件夹中的所有内容→创建MainClass.cs文件→ ...

  7. X-MagicBox-820的luatOS之路连载系列6

    继上次用Qt实现了显示地图和MQTT通信之后(X-MagicBox-820的luatOS之路连载系列5),说是要研究下地图的开放接口,也看了标记点和线的方法(地图上自定义标记点和轨迹线的实现).这次就 ...

  8. 顽石系列:Java技术面试

    顽石系列:Java技术面试 JDBC相关 1.Statement与PreparedStatement的区 别,什什么是SQL注⼊入,如何防⽌止SQL注⼊? PreparedStatement支持动态设 ...

  9. 大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app

    大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWx ...

  10. 异步编程系列06章 以Task为基础的异步模式(TAP)

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

随机推荐

  1. Head First Python(第2版)书籍 重视大脑的学习指南

    Head First Python(第2版)PDF高清版书籍免费下载地址 提取码:08eo 内容简介  · · · · · · 你想过可以通过一本书就学会Python吗?<Head First ...

  2. pypeeter 自动化

    Pypputeer Puppeteer 是 Google 基于 Node.js 开发的一个工具,而 Pyppeteer 又是什么呢?它实际上是 Puppeteer 的 Python 版本的实现,但它不 ...

  3. Echarts 设置Y轴 || X轴的刻度只显示整数

    目前的效果如下:(有小数) 想要的效果如下:(整数) 解决方案: 在配置项的yAxis或者xAxis对象中添加属性:minInterval: 1,表示将刻度的最小间距设置为1 注意: minInter ...

  4. 题解[LuoguP6222]「P6156简单题」加强版

    题解[LuoguP6222]「P6156简单题」加强版 加强版很好地体现了这个题的真正价值.(当然是指卡常 本题解给出了本题更详尽的推倒导和思考过程,思路与 CYJian 的类似,具体式子的个别地方换 ...

  5. centos 换源

    原文: https://blog.csdn.net/MateSnake/article/details/124088310 备份原来的源:sudo mv /etc/yum.repos.d/CentOS ...

  6. parse data from Nacos error

    SpringCloud Alibaba从Nacos读取配置文件. 在开发工具运行,没有问题,正常启动. 打包后,jar包启动 xxxx.jar,出现错误: 2022-10-11 11:20:25.28 ...

  7. maven :Cannot start maven service

    问题报错信息:maven启动失败 java.lang.RuntimeException: Cannot start maven service at org.jetbrains.idea.maven. ...

  8. 实验一 Python程序设计入门 20203412马畅若

    课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2021年4月13日必修/选修: 公选课 实验一 (一)实验内容 1.熟悉Pyt ...

  9. 关于jsp 中数字格式化<fmt:formatNumber>标签的用法

    刚刚一个我负责的网站,出现了一个bug ,在之前没有遇到过,而且生产环境运行了4/5年了也没有发生该问题,今天发生了.所以查了一下<fmt:formatNumber>标签的用法,自己记录一 ...

  10. Linux内核红黑树1—Documentation/rbtree.txt翻译

    转自:https://www.cnblogs.com/hellokitty2/p/15362630.html 1. 什么是红黑树,它们有什么用?---------------------------- ...