文章目录

  • 白盒测试简介
  • 逻辑覆盖测试法
    • SC
    • DC
    • CC
    • CDC
    • MCC
    • MCDC
  • 基本路径测试法
    • BPC测试的四个步骤
  • 循环路径覆盖法

白盒测试简介

静态白盒测试也称为结构化分析。
动态白盒测试又称为结构化测试。
以下所说的应该均属于动态白盒测试

逻辑覆盖测试法

SC

sentence coverage 语句覆盖
设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。

DC

decision coverage 判定覆盖/分支覆盖
使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。

CC

condition coverage 条件覆盖
使每个判断中每个条件的可能取值至少满足一次。

CDC

condition-decision coverage 条件-判定覆盖(条件的粒度比判定小
判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次

MCC

multiple condition coverage 条件组合覆盖/多重条件覆盖
得判断中每个条件的所有可能组合至少出现一次,并且每个判断本身的判定结果也至少出现一次。
满足条件组合覆盖,一定满足判定覆盖、条件覆盖、条件判定组合覆盖
问题:
①效率不高,有些测试没必要
②条件/判定还不够强,有些路径仍未覆盖

MCDC

modified condition decision coverage
修正条件-判定覆盖
①每个判定的所有可能结果至少能取值一次;
②判定中的每个条件的所有可能结果至少取值一次;
③一个判定中的每个条件曾经独立地对判定的结果产生影响;
④每个入口和出口至少执行一次
主要改进之处在于加了这样一条约束:
一个判定中的每个条件曾经独立地对判定的结果产生影响

基本路径测试法

BPC测试的四个步骤

  1. 依据代码画出流程图/控制流图

  2. 确定控制流图的圈复杂度
    圈复杂度V(G)是基本路径的上限,起参考作用。有三种计算方式

    其中第二种慎用,因为简单判断不好确定。

  3. 确定线性独立路径的基本集合(基本路径集)
    独立路径: 至少引入一系列新的处理语句或条件的任何路径
    基本集: 由独立路径构成的集合

  4. 设计测试用例覆盖每条基本路径
    小结以上覆盖的关系

循环路径覆盖法

未完待续,敬请赐候

白盒测试的3中主要方法(cont.)相关推荐

  1. 论黑盒测试与白盒测试在软件测试中的不同作用

    一.引言: 黑盒测试着眼于外部结构,不考虑内部结构,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明:而白盒测试着眼于内部结构,对软件的过程性细节做细致的检查.随着软件市场的成熟,人们对 ...

  2. 白盒测试-覆盖测试(六种覆盖方法)

    白盒测试-覆盖测试(六种覆盖方法) 测试覆盖率 测试覆盖率:用于确定测试所执行到的覆盖项的百分比.其中的覆盖项是指作为测试基础的一个入口或属性,比如语句.分支.条件等.测试覆盖率可以表示出测试的充分性 ...

  3. 使用java中replaceAll方法替换字符串中的反斜杠

    今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: 1 java.util.regex. ...

  4. java中collection方法_Java 8中的Collector toCollection()方法

    toCollection()Java中的Collector类的方法返回一个Collector,该Collector以遇到的顺序将输入元素累积到一个新的Collection中. 语法如下static & ...

  5. 【面向对象编程】(4) 类的继承,重构父类中的方法

    各位同学好,今天和大家分享一下面向对象编程中,类的三大特征之继承.主要介绍:子类继承父类的基本方法:重写父类的类方法:重构父类的初始化方法:super() 方法.本节主要是单继承,多继承在下一节中介绍 ...

  6. PHP中魔术方法的用法

    PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */// __toString.__set.__get__ ...

  7. Java中父类方法重写有哪些需要注意的?

    在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写.需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名.参数列表以及返回 ...

  8. Java 8 中的方法引用,轻松减少代码量,提升可读性!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 1. 引言 Java8中最受广大开发中喜欢的变化之一是因为 ...

  9. Vue 中定义方法页面上使用

    vue中定义方法的格式 为什么要这样定义 最近在学习前段,特别是HBuildX 我看里面很多方式都是这样使用,所以想强加练习 如何引用 当然我们的editArticle也可以直接放到js中,如下: 都 ...

最新文章

  1. python自动开发之(算法)第二十七天
  2. 人工智能思维导图一张,收藏!
  3. HibernateDaoSupport的使用
  4. 小程序 座位管理系统(一)(纯前端)
  5. [Leedcode][JAVA][第198题][打家劫舍][动态规划]
  6. 二层交换网络_网络中的第2层交换
  7. 各类科技活动获奖公示网站
  8. 轻量级的Canvas类库zrender使用笔记 :简单自定义图件开发
  9. 微软 HoloLens 2 的幕后故事
  10. 一系列JavaScript的基础工具
  11. 使用so动态链接库g++正确,gcc undefined reference错误
  12. 黑马程序员,黑马论坛---云2期,已就业45人,平均薪水6806【8月23日更新】
  13. js获取当前日期yyyymmdd
  14. ( cf1249 )Codeforces Round #595 (Div. 3)部分题解
  15. gini函数和entropy 函数 数据分类效果对比
  16. Python基础知识——函数的基本使用、函数的参数、名称空间与作用域、函数对象与闭包、 装饰器、迭代器、生成器与yield、函数递归、面向过程与函数式(map、reduce、filter)
  17. 2421:Exchange Rates——动态规划
  18. Element UI(一)
  19. 声网如何添加与配置项目
  20. 用NetTerm连接虚拟机的telnet服务,打造轻松自如的虚拟机实验环境

热门文章

  1. java——慎用可变参数列表
  2. 参加第一届宇宙 JavaScript 大会是怎样的体验
  3. OpenGL学习(hello)
  4. 手把手教你使用zabbix监控nginx
  5. zookeeper学习记录
  6. 获取文件最后修改时间的VC代码
  7. php.ini安全配置详细解释
  8. 使用 electron-updater 自动更新应用
  9. hive2.3.2安装使用
  10. phpstudy+phpstorm+debug