转载自: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. djangoDRF查询

    DRF全部查询基础示例 from django.db.models import Q, F, Sum, Avg, Count, Min, Max from rest_framework.respons ...

  2. js数字取整的方法

    parseInt(123.34)=123(保留整数) Math.ceil(123.34)=124(向上取整) Math.floor(123.34)=123(向下取整) Math.round(123.3 ...

  3. CSS3图片自适应各种尺寸的屏幕

    img {    max-width: 100%;    height: auto;} 设置最大宽度,高度自适应.

  4. API的风格

    好奇怪呀,感觉所有风格不都差不多嘛 1.REST REST(REpresentational State Transfer),首次出现在 2000 年 Roy Thomas Fielding 的博士论 ...

  5. React函数式组件值之useRef()和useImperativeHandle()

    一.useRef useRef共有两种用法,获取子组件的实例(只有类组件可用),在函数组件中的一个全局变量,不会因为重复 render 重复申明, 类似于类组件的 this.xxx. 1. useRe ...

  6. GPS北斗卫星时钟同步系统提升电信支撑网性能

    GPS北斗卫星时钟同步系统提升电信支撑网性能 京准科技提供参考--更多资料VX(ahjzsz) 各项新的数据业务,如电子商务.多媒体通信.IP电话等都是电信业务发展的新增长点,而传统业务也存在多家企业 ...

  7. xpath、css元素定位

    xpath 1.利用元素唯一属性 //*[@id='xxx'] 2.属性与逻辑结合 解决元素之间多个相同属性重名问题 //*[@id='xxx' and @class='xxx'] 3..//*[te ...

  8. php 常用助手函数

    1 <?php 2 3 if (!function_exists('bcSum')) { 4 function bcSum($scale, ...$args): string 5 { 6 $re ...

  9. Amd,Cmd, Commonjs, ES6 import/export的异同点

    Amd,Cmd, Commonjs, ES6 import/export等均是模块化方案 1.Commonjs使用在Nodejs上,加载模块是同步的. 2.Amd是requirejs在推广过程中对模块 ...

  10. HIVE 调优思路和实践

    1,数据存储调优 1.1 设置压缩: 设置中间数据/输出结果压缩传输,使用snappy格式. hive-site.xml: set hive.exec.compress.output = true # ...