白盒测试中的六种覆盖方法

一、语句覆盖

念:语句覆盖是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

 

测试用例:A=2,B=0,X=3

缺陷:如果代码中第一个if条件中,“A>1&&B=0”错写成“ A>1 || B=0”。该错误语句覆盖是测试不出问题

二、判定覆盖

概念:程序中的每一个分支至少都通过一次

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

举例:

(1)A=3, B=0, X=1

(2)A=2, B=1, X=3

缺陷:如果异常是必须两个if里都为真的情况下才会出现,那么判定覆盖就没有测试到该情况

三、条件覆盖

定义:判定中的每个条件获得各种可能的结果

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

举例:

(1)A=2, B=1, X=4

(2)A=1, B=0, X=1

缺陷:虽然4个条件的真假都出现了一次,满足条件覆盖100%。但其中X=X/A语句并未测试到

四、判定/条件覆盖

定义:判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

举例:

(1)A=2,B=0,X=4,

(2)A=1,B=1,X=1

缺陷:“判定/条件覆盖”似乎是比较合理的,但事实并非如此,因为大多数计算机不能用一条指令对多个条件作出判定,

而必须将源程序中对多个条件的判定分解成几个简单判定,所以较彻底的测试应使每一个简单判定都真正取到各种可能的结果

五、条件组合覆盖

定义:每个判定中条件的各种可能组合都至少出现一次

if ((A > 1)&&( B == 0))
{
   X  = X / A;
}
if ((A == 2) || ( X > 1))
{
   X = X + 1;
}

举例:

(1)A>1, B=0

(2)A>1, B!=0

(3)A≤1, B=0

(4)A≤1, B≠0

(5)A=2, X>1

(6)A=2,X≤1

(7)A≠2, X>1

(8)A≠2, X≤1

缺陷:虽然8种组合都出现了,但最基本的第一个if为真,第二个if为假的情况并未出现

六、路径覆盖

定义:程序中每条路径都需要覆盖

缺陷:路径覆盖也是一种比较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖

原文地址:https://www.cnblogs.com/yinqanne/p/9655652.html

时间: 2024-10-29 00:13:00

白盒测试中的六种覆盖方法的相关文章

白盒测试中的六种覆盖方法案例分析

一.语句覆盖(Statement coverage) "语句覆盖"是一个比较弱的测试标准,它的含义是:选择足够的测试用例,使得程序中每个语句至少都能被执行一次.                                          图6.4是一个被测试的程序,它的源程序是: PROCEDURE M(VAR A,B,X:REAL): BEGIN IF(A>1) AND (B=0)  THENX:=X/A: IF(A=2)OR (X>1)  THENX:=X+1:

Python之编写测试用例,unittest模块中的TestCase类中的六种断言方法,以及setUp()函数。

unittest是Python自带的标准库中的模块,其中包括: 1.TestCase类 2.TestSuite类 3.TestLoader类 4.TextTestRunner类 5.TextTestResult类 下面是TestCase中的六种断言方法的测试用例. # -*- coding:UTF-8 -*- import unittestclass TestStringMethods(unittest.TestCase): def test_one(self): '''测试两个字符串是否相等'

白盒测试中的几种逻辑覆盖

白盒测试又称为结构测试.透明盒测试.逻辑驱动测试或基于代码的测试.就是在知道软件代码,和内部逻辑结构后进行的一项测试.主要目的是检查内部结构,逻辑.方法是检查每一条路径.与黑盒测试相比,黑盒测试更偏向用户,白盒测试更偏向于开发者.黑盒测试只需要输入和结果.而白盒测试更需要测试,软件内部是如何运行的. 今天我想说一说,白盒测试中的几种逻辑覆盖 白盒测试,为了保证测试的完整性,就要测试软件内部的每一条路径.逻辑覆盖方法能帮助我们设计测试用例,以减少不必要的消耗: 逻辑覆盖包括语句覆盖.判定覆盖.条件

JSPatch 中 defineClass 中覆盖方法的使用

今天研究了一下JSPatch,发现好神奇好奇妙,感觉这几天我都会乐此不彼的去研究这个高大上的东西. 出处来着:https://github.com/bang590/JSPatch 简单介绍一下这个 defineClass 方法,文档中是这样写的(bang590/JSPatch ) defineClass(classDeclaration, instanceMethods, classMethods) @param classDeclaration: 字符串,类名/父类名和Protocol @pa

浅析白盒测试中的逻辑覆盖测试

在白盒测试中,逻辑覆盖测试是使用较多的方法.按照其对测试的有效程度,又将其划分为由弱到强的6种:语句覆盖.判定覆盖.条件覆盖.判定-条件覆盖.条件组合覆盖.路径覆盖. 在这里,不深究各个覆盖的优缺点,仅仅根据一个实际例子来看看如何写出6种覆盖的测试用例. public void function(int a, int b, int c) { if ((a > 1) && (b == 0)) { c /= a; } if ((a == 5) || (c > 1)) { c +=

[白盒测试学习] 从逻辑覆盖实例学起

1. 什么是白盒测试 白盒测试也称结构测试.逻辑驱动或基于程序的测试,是一种测试用例设计方法. 一般用于分析程序的内部结构. 针对特定的条件和循环设计测试用例,对程序的逻辑路径进行测试. 用这种发方法进行程序设计时,测试者可以看到被测程序,并分析其内部结构,白盒测试要求对被测程序的结构特性做到一定程度的覆盖. 从这个角度上说,白盒测试也是基于覆盖的测试技术. 2. 白盒测试方法概述 白盒测试通常分为静态和动态两种类型,包含很多常用的方法. 静态分析: 按照一定步骤直接见车源代码或代码的测试方法.

在.net中序列化读写xml方法的总结

在.net中序列化读写xml方法的总结 阅读目录 开始 最简单的使用XML的方法 类型定义与XML结构的映射 使用 XmlElement 使用 XmlAttribute 使用 InnerText 重命名节点名称 列表和数组的序列化 列表和数组的做为数据成员的序列化 类型继承与反序列化 反序列化的实战演练 反序列化的使用总结 排除不需要序列化的成员 强制指定成员的序列化顺序 自定义序列化行为 序列化去掉XML命名空间及声明头 XML的使用建议 XML是一种很常见的数据保存方式,我经常用它来保存一些

为何使用二次参数拦截器栈,,为何需要在beforeInput() [即prepareInput(),本项目中分装为beforeInput()方法] 方法中获取employee

因为,使用模型驱动,可以将不为空的employee压入栈顶,从而使得页面中以employee的属性名作为name的Struts标签元素能够获取到对应属性名的属性值,在点击修改后,可以实现回显. 具体的: 由于modelDriven拦截器先于input()方法执行,因此需要将获取employee的方法提前到modelDriven拦截器之前,即在prepareInput()方法获取employee,此时employee就不空了,再在后面执行到modelDriven拦截器时就将employee对象放入

c# 中面相对性的三个特点:封装,继承,多态, 以及c#中隐藏(new)和方法重写(override)和重载(overload)的区别

封装 1)封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问,通常有两种访问方式:set 设置,get 获取. 2)封装结果:存在但是不可见. 3) 访问修饰符 声明的可访问性                                 含义 public                                    访问不受限制. protected                              访问仅限于本类或者其子类(可以跨程序集). p