转载自: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. js区分图片加载中和加载完成状态

    var _ent = document.getElementById("test"); if (_ent.complete) { //图片已经加载完成 _ent.stop(); } ...

  2. java之路总结

    2019-12-5 20:50:47 2019-10-7 18:01:37 总结学习java的各种知识! 越努力,越幸运! 永远不要高估自己! 吃的苦中苦,方为人上人! java基础 java进阶 j ...

  3. Linux基础环境的各项配置(三)

    接上篇,安装centos操作系统后,需对系统的基础环境做一些配置,如下: 1.设置静态IP(防止每次开机可能生成不一样的IP,导致与此虚拟机通信时出现错误):DNS解析,可以ping通外网: 1.1 ...

  4. Java密码加密的两种保存方式

    密码加密的两种方式(md5和base64) 常见的加密方式有盐值,md5和jdk自带的base64,这里我记录的是base64如何使用,以及破解的方式,话不多说,直接贴代码! 其实md5和加盐值都差不 ...

  5. WampServer3.0服务器端开启ssl认证后重启Apache失败,解决办法

    最近项目中需要访问网站的 https 地址,于是进行部署,什么事情都是想起来简单,做起来难,想着一天就能搞定的事儿,结果前后折腾了三天. 现在把部署的经历记录下来,希望对朋友们有所帮助. 1.在西部数 ...

  6. Chrome禁用开发者工具

    在一次工作中,所做的项目要求页面中不能右击,不能打开F12.一般来说可以禁用F12的按键,但是可以通过开发者工具进入.经过个人实验,以下方法适用于谷歌浏览器.火狐浏览器,以及使用谷歌内核的浏览器(如Q ...

  7. cuda、cudnn、tnesorrt的查看安装

    1.首先本地查看cuda已安装的版本 11.7输入命令:[nvcc -V]输出:nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2022 ...

  8. 19JS输出杨辉三角

    <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF ...

  9. ubuntu 20.04 ibus添加五笔输入法

    ubuntu 20.04 ibus添加五笔输入法:虽然现在五笔输入法已经没有什么新人使用,如果还有一两个人,找不到系统自带的极点五笔输入,可以按如下方式操作:以前是用ibus-setup,点添加,现在 ...

  10. python 删除大于超过一定时间文件

    import os from datetime import datetime, timedelta path = "." if __name__ == '__main__': f ...