转载自: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. PV动态供给之nfs

    需求描述:利用nfs实现PV动态供给 前提:部署好nfs服务器  这里地址是 192.168.1.35  path: /ifs/k8s NFS:是一个主流的文件共享服务器. # yum install ...

  2. Windows Service调试方法小结

    方法1:log记录 这是一个通用的调试方法,效率比较低,但比较实用,通过查看日志,总能达到调试的目的 方法2:附加到进程 这是Windows Service程序调试的常用方法,缺点是对Windows环 ...

  3. iOS设备和模块解耦-方案对比

     问题: 第一点,我们的设备之间,通过设备类型进行区分,然后分别跳转到不同的界面.导致不同设备会对同一个类别进行操作. 就会造成代码耦合,后续对类别进行增删改就会导致并行开发中容易出现代码冲突或者代码 ...

  4. Jmeter使用文档(循环怎么用)

    Jmeter使用文档(循环怎么用) 基础用法 修改语言 Jmeter之界面语言设置 下面使用简体中文的命名进行说明 打开日志 启动后,右上角有个黄色的感叹号图标,点击即可打开即时日志 如果没有看到重启 ...

  5. RabbitMQ-01-使用Java进行简单消息发送与接收

    前言 这里使用手动管理jar与使用Maven管理jar两种方式,分别演示消息的发送和接收. 手动管理jar实现消息发送与接收 添加jar amqp-client-5.7.1.jar slf4j-api ...

  6. 题解[CF1628F]A_Random_Code_Problem

    题意 给定一个数组 \(a\),进行 \(k\) 次操作.第 \(i\) 操作等概率随机 \(a\) 中一个元素 \(a_x\),将这个元素的值加入答案,并使其减去 \(a_x\bmod i\) .问 ...

  7. csv文件导入数据库中文乱码

    在向数据库的表中导入csv数据时,出现了中文乱码的问题,解决办法是在选择编码格式时选择10008 (MAC - Simplified Chinese GB 2312)即可

  8. [Err] [Dtf] 1044 - Access denied for user 'root'@'localhost' to database 'information_schema'

    在从Oracle向mysql数据库传输数据时,报出来这个错误,原因是因为没有打开mysql数据库,在navicat里打开mysql,并选中要传输的数据库 再重复传输一下即可

  9. rtsp协议转换m3u8

    目前项目中使用海康的摄像头,但需要提供实时预览.目前通过转换协议实现预览.同时能够尽量减少服务器的压力,比如生成的ts文件个数. 思路 通过ffmpeg 将rtsp协议转换成hls协议 具体步骤 1. ...

  10. PyTorch Geometric(pyg)学习

    参考2个链接: 第十六课.Pytorch-geometric入门(一)_tzc_fly的博客-CSDN博客_pytorch-geometric 第十七课.Pytorch-geometric入门(二)_ ...