白盒测试及用例设计

合集下载

白盒测试用例设计方法

白盒测试用例设计方法

1白盒测试用例设计方法1.1白盒测试简介白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,一般多发生在单元测试阶段。

白盒测试方法主要包括逻辑覆盖法,基本路径法,程序插装等。

这里重点介绍一下常用的基本路径法,对于逻辑覆盖简单介绍一下覆盖准则。

1.2基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出独立路径集合,从而设计测试用例,设计出的测试用例要保证在测试中程序的每一个可执行语句至少执行一次。

在介绍基本路径测试方法(又称独立路径测试)之前,先介绍流图符号:图1如图1所示,每一个圆,称为流图的节点,代表一个或多个语句,流程图中的处理方框序列和菱形决策框可映射为一个节点,流图中的箭头,称为边或连接,代表控制流,类似于流程图中的箭头。

一条边必须终止于一个节点,即使该节点并不代表任何语句,例如,图2中两个处理方框交汇处是一个节点,边和节点限定的范围称为区域。

图2任何过程设计表示法都可被翻译成流图,下面显示了一段流程图以及相应的流图。

注意,程序设计中遇到复合条件时(逻辑or, and, nor 等),生成的流图变得更为复杂,如(c)流图所示。

此时必须为语句IF a OR b 中的每一个a 和b 创建一个独立的节点。

(c)流图独立路径是指程序中至少引进一个新的处理语句集合,采用流图的术语,即独立路径必须至少包含一条在定义路径之前不曾用到的边。

例如图(b)中所示流图的一个独立路径集合为:路径1:1-11路径2:1-2-3-4-5-10-1-11路径3:1-2-3-6-8-9-10-1-11路径4:1-2-3-6-7-9-10-1-11上面定义的路径1,2,3 和4 包含了(b)流图的一个基本集,如果能将测试设计为强迫运行这些路径,那么程序中的每一条语句将至少被执行一次,每一个条件执行时都将分别取true 和false(分支覆盖)。

应该注意到基本集并不唯一,实际上,给定的过程设计可派生出任意数量的不同基本集。

白盒测试案例

白盒测试案例

白盒测试案例白盒测试是软件测试中的一种重要测试方法,它主要针对软件内部结构进行测试,旨在检验程序中的逻辑错误、代码覆盖率和路径覆盖等问题。

下面我们将通过几个具体的案例来介绍白盒测试的应用和方法。

案例一,函数逻辑测试。

假设我们有一个简单的函数,用于计算两个整数的和。

在进行白盒测试时,我们需要考虑函数的各种可能输入和边界情况。

比如,输入为正数、负数、零等不同情况下,函数的返回值是否符合预期;输入边界情况下,比如最大值、最小值、边界值加一等情况下,函数是否能够正确处理。

同时,我们还需要测试函数的异常情况,比如输入非整数、输入为空等情况下,函数是否能够正确处理并给出合理的错误提示。

案例二,条件覆盖测试。

在一个复杂的程序中,通常会存在多个条件判断的情况,这时候我们需要进行条件覆盖测试来确保程序的每个条件都能够得到正确的覆盖。

比如,一个函数中包含了多个if-else语句,我们需要设计测试用例,使得每个条件都能够被至少一次触发,以确保程序的完整性和准确性。

在进行条件覆盖测试时,我们需要考虑各种可能的组合情况,以及条件的嵌套关系,确保每个条件都能够得到充分的测试覆盖。

案例三,路径覆盖测试。

路径覆盖测试是白盒测试中的一种重要方法,它旨在测试程序中的各个路径是否都能够被正确执行。

在进行路径覆盖测试时,我们需要分析程序的控制流图,找出所有可能的执行路径,并设计测试用例来覆盖这些路径。

通过路径覆盖测试,我们可以发现程序中隐藏的逻辑错误和潜在的漏洞,提高程序的稳定性和可靠性。

结语。

通过以上几个具体的案例,我们可以看到白盒测试在软件开发中的重要性和应用价值。

在进行白盒测试时,我们需要充分理解程序的内部结构和逻辑,设计合理的测试用例,确保程序的各个部分都能够得到充分的覆盖和测试,从而提高程序的质量和稳定性。

希望本文能够帮助大家更好地理解白盒测试,并在实际工作中加以应用。

测试用例的设计

测试用例的设计
对于测试对象中可能存在何种类型的 错误,是挑选测试用例应该考虑的重要因 素。推测的重要依据是程序设计规格说明 书(或者代码的序言性注释),不但要考虑 它告诉了我们什么,还应该考虑说明中遗 漏了什么,或者是否存在可能的冲突。
软件工程
测试用例设计小结
在实际应用中通常以黑盒测试法设计 测试用例为主,白盒测试法设计测试用例 为辅。并可以考虑以下测试策略: l任何情况下都应该使用边界值分析设计测 试用例; l必要时采用等价类划分法补充用例; l必要时再用错误推测法补充用例; l对照程序内部逻辑,检查已设计用例的逻 辑覆盖。根据程序可靠性要求,补充用例 使之达到规定的逻辑覆盖要求。
第一步:将详细设计结果或程序编码映射成程 序控制结构图。
第二步:根据程序控制结构图计算程序的环形 复杂度。
第三步:确定线性独立路径的基本集合。 第四步:设计测试用例,确保基本路径集中每 条路径的执行。
软件工程
1.2 黑盒测试法用例的设计
黑盒测试法用例的设计有等价类划分、 边界值分析、错误推测等。根据这些方法来 生成测试用例,可以提前到需求分析阶段或 设计阶段。同时使用这些方法很可能发现白 盒测试不易发现的其他类型的错误。
(满足A≤1,B=O,A≠2和x>1的条件) 【{A=1,B=1,X=1},{A=1,B=1,X=1}】
(满足A≤1,B≠O,A≠2和x≤1的条件)
覆盖sacbed 覆盖sabed 覆盖sabed 覆盖sabd
软件工程
2. 基本路径测试
使用这种技术设计测试用例时,首先计算程 序的环形复杂度,并用该复杂度为指南定义执行 路径的基本集合,从该基本集合导出的测试用例 可以保证程序中的每条语句至少执行一次,而且 每个条件在执行时都将分别取真、假两种值。基 本路径测试技术设计测试用例的步骤:

基于白盒测试的用例设计与验证(一)

基于白盒测试的用例设计与验证(一)

学号:《软件测试技术》实验报告与习题册2014 / 2015 学年第2学期系别计算机科学与技术专业计算机软件班级一班姓名指导教师目录实验一:基于白盒测试的用例设计与验证(一)一.实验目的(1)熟悉Eclipse开发环境(2)掌握Java语言的基本语法,能够利用Java实现简单的程序开发(3)熟悉白盒测试基本原理(4)掌握白盒测试的逻辑覆盖法,能够依据语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理进行相应测试用例的设计工作。

二.实验内容(1)选择一门语言,完成指定的单元程序开发。

(2)分别依据白盒测试逻辑覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定\条件覆盖、条件组合覆盖的原理设计相应的测试用例。

(3)根据给定的流程图,实际运行测试用例,检测程序的实现是否正确。

三.程序流程图运行结果示例程序源码#include<stdio.h>void main(){int m;int n;int p;int q;printf("请输入m的值:");scanf("%d",&m);printf("请输入n的值:");scanf("%d",&n);printf("请输入p的值:");scanf("%d",&p);printf("请输入q的值:");scanf("%d",&q);printf("输入完毕\n");if(m>0 && n<6){m=n+3;n=n*2;}if(p>5 || q<0){p=2*q+5;q=q++;}printf("m:%d\n",m);printf("n:%d\n",n);printf("p:%d\n",p);printf("q:%d\n",q);}1.语句覆盖程序中的每个可执行语句至少被执行一次2.判定覆盖3.条件覆盖4.判定-条件覆盖判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次。

软件测试-实验2-白盒测试案例分析

软件测试-实验2-白盒测试案例分析

实验 2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。

这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。

1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。

无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。

2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。

判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。

3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。

条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。

4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。

线性地增加了测试用例的数量。

5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。

测试用例设计--黑盒测试、白盒测试

测试用例设计--黑盒测试、白盒测试

测试⽤例设计--⿊盒测试、⽩盒测试测试⽤例设计设计数据库测试⽤例就是针对数据库的功能和性能⽽设计的测试⽅案,并编⼊测试计划中。

测试⽤例的设计既要考虑正常情况,也应考虑极限情况以及字段取最⼤值和最⼩值等边界情况。

因为测试的⽬的是暴露数据库中隐藏的错误和缺陷,所以在设计测试⽤例时要充分考虑那些易于发现错误和缺陷的测试⽤例。

好的测试⽤例应该有较⾼的发现错误和缺陷的概率。

⽩盒测试的测试⽤例设计逻辑覆盖法和基本路径测试法是计算机软件⽩盒测试⽤例设计的两个重要⽅法。

这两个⽅法也适合存储过程、触发器、嵌⼊式SQL等数据库程序的测试。

语句覆盖语句覆盖语句覆盖是设计⾜够多的测试⽤例,运⾏所测程序,使得程序中每条可执⾏语句⾄少被执⾏⼀次。

不过,每条可执⾏语句⾄少执⾏⼀次是最基本的要求,但是它不能保证发现逻辑运算和程序逻辑错误,且并不是所有的分⽀被执⾏过。

例6-1 考虑图6-2,语句覆盖的测试⽤例如表6-1所⽰。

注意,该组测试⽤例不能覆盖判断E为假的分⽀。

⽽且,如果判断C误写为X>2 or Y>3,该组测试⽤例仍能够实现语句覆盖,因此该组测试⽤例发现不了这个错误。

测试⽤例⼀般不是唯⼀的。

例如,表6-2的测试⽤例也可以实现语句覆盖。

判定覆盖判定覆盖⼜称分⽀覆盖,是设计⾜够多的测试⽤例,运⾏所测程序,使得程序中每个判断的取真分⽀和取假分⽀分别⾄少执⾏⼀次。

例6-2 考虑图6-2,其中C、E为判断。

判定覆盖的测试⽤例如表6-3所⽰。

虽然判定覆盖能够保证所有判断的取真分⽀和取假分⽀执⾏⾄少⼀次,但判定覆盖不能保证发现条件表达式错误。

例如,如果语句C误写为X>2 or Y>3,表6-3给出的测试⽤例仍能够实现判定覆盖,因此该组测试⽤例发现不了这个错误。

条件覆盖条件覆盖是设计⾜够多的测试⽤例,运⾏所测程序,使得每个判断的每个条件成分取真值和假值分别⾄少执⾏⼀次。

例6-3 考虑图6-2。

⾸先对所有判断的条件成分取值进⾏标记:v条件覆盖的测试⽤例如表6-4所⽰。

软件测试-实验2-白盒测试案例分析

软件测试-实验2-白盒测试案例分析

实验2 白盒测试一、实验目的与要求1、掌握白盒测试的语句覆盖和判定覆盖测试方法的原理及应用2、掌握条件覆盖、条件组合覆盖的方法,提高应用能力3、掌握路径法测试二、实验设备1、电脑PC三、实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。

这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作,其又称为结构测试。

1、语句覆盖语句覆盖指代码中的所有语句都至少执行一遍,用于检查测试用例是否有遗漏,如果检查到没有执行到的语句时要补充测试用例。

无须细分每条判定表达式,该测试虽然覆盖了可执行语句,但是不能检查判断逻辑是否有问题。

2、判定覆盖又称判断覆盖、分支覆盖,指设计足够的测试用例,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假取值均曾被满足。

判定覆盖比语句覆盖强,但是对程序逻辑的覆盖度仍然不高,比如由多个逻辑条件组合而成的判定,仅判定整体结果而忽略了每个条件的取值情况。

3、条件覆盖、条件判定覆盖条件覆盖指程序中每个判断中的每个条件的所有可能的取值至少要执行一次,但是条件覆盖不能保证判定覆盖,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

条件判定覆盖是条件覆盖和判定覆盖的组合,指设计足够的测试用例,使得判定中每个条件的所有可能的取值至少出现一次,并且每个判定取到的各种可能的结果也至少出现一次。

条件判定覆盖弥补了条件和判定覆盖的不足,但是未考虑条件的组合情况。

4、条件组合覆盖又称多条件覆盖,设计足够的测试用例,使得判定条件中每一个条件的可能组合至少出现一次。

线性地增加了测试用例的数量。

5、基本路径法在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行的路径集合,从而设计测试用例的方法。

白盒测试用例设计方法

白盒测试用例设计方法

白盒测试用例设计方法
白盒测试用例设计方法是通过了解软件系统的内部结构和代码的执行路径来设计测试用例。

下面是几种常用的白盒测试用例设计方法:
1. 语句覆盖:确保每个代码语句至少被执行一次。

设计测试用例以覆盖代码中的每个语句。

2. 判定覆盖:设计测试用例以覆盖代码中的每个条件判断语句的每个路径。

包括覆盖判断条件为真和为假的两个路径。

3. 条件覆盖:确保每个条件判断语句中的每个条件都被测试覆盖。

为此,需要设计多个测试用例来测试各种组合情况。

4. 路径覆盖:设计测试用例以覆盖代码中的每个可能路径。

这种方法通常会生成大量的测试用例,因为需要测试所有可能的路径组合。

5. 循环覆盖:确保所有的循环结构被至少测试一次。

设计测试用例以覆盖循环的各种情况,如循环未执行、执行一次、多次等。

6. 数据流覆盖:设计测试用例以覆盖代码中使用的各种数据流。

包括输入数据、输出数据和中间数据的覆盖。

以上是一些常用的白盒测试用例设计方法,根据具体的软件系统和测试目标,可以选择合适的方法来设计测试用例。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

白盒测试白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。

利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。

白盒测试又称为结构测试和逻辑驱动测试。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。

其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。

语句覆盖每条语句至少执行一次。

判定覆盖每个判定的每个分支至少执行一次。

条件覆盖每个判定的每个条件应取到各种可能的值。

判定/条件覆盖同时满足判定覆盖条件覆盖。

条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

路径覆盖使程序中每一条可能的路径至少执行一次。

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。

"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。

"白盒"法是穷举路径测试。

在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。

贯穿程序的独立路径数是天文数字。

但即使每条路径都测试了仍然可能有错误。

第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。

第二,穷举路径测试不可能查出程序中因遗漏路径而出错。

第三,穷举路径测试可能发现不了一些与数据相关的错误。

白盒测试六种覆盖方法摘要:白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。

白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。

因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。

本文介绍六种白盒子测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。

由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。

由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。

白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。

白盒的测试用例需要做到:●保证一个模块中的所有独立路径至少被使用一次●对所有逻辑值均需测试●在上下边界及可操作范围内运行所有循环●检查内部数据结构以确保其有效性白盒测试的目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

白盒测试的特点:依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。

白盒测试的实施步骤:1.测试计划阶段:根据需求说明书,制定测试进度。

2.测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。

3.测试执行阶段:输入测试用例,得到测试结果。

4.测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。

白盒测试的方法:总体上分为静态方法和动态方法两大类。

静态分析是一种不通过执行程序而进行测试的技术。

静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后, 对软件系统行为的分析。

动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。

它显示了一个系统在检查状态下是正确还是不正确。

在动态分析技术中,最重要的技术是路径和分支测试。

下面要介绍的六种覆盖测试方法属于动态分析方法。

白盒测试的优缺点1、优点●迫使测试人员去仔细思考软件的实现●可以检测代码中的每条分支和路径●揭示隐藏在代码中的错误●对代码的测试比较彻底●最优化2、缺点●昂贵●无法检测代码中遗漏的路径和数据敏感性错误●不验证规格的正确性六种覆盖方法首先为了下文的举例描述方便,这里先给出一张程序流程图。

(本文以1995年软件设计师考试的一道考试题目为例,图中红色字母代表程序执行路径)。

1、语句覆盖1)主要特点:语句覆盖是最起码的结构覆盖要求,语句覆盖要求设计足够多的测试用例,使得程序中每条语句至少被执行一次。

2)用例设计:(如果此时将A路径上的语句1—〉T去掉,那么用例如下)3)优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。

4)缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。

在本例中去掉了语句1—〉T去掉,那么就少了一条测试路径。

在if结构中若源代码没有给出else后面的执行分支,那么语句覆盖测试就不会考虑这种情况。

但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。

再如,在Do-While结构中,语句覆盖执行其中某一个条件分支。

那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。

2、判定覆盖1)主要特点:判定覆盖又称为分支覆盖,它要求设计足够多的测试用例,使得程序中每个判定至少有一次为真值,有一次为假值,即:程序中的每个分支至少执行一次。

每个判断的取真、取假至少执行一次。

23)优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。

同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

4)缺点:往往大部分的判定语句是由多个逻辑条件组合而成(如,判定语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

3、条件覆盖1)主要特点:条件覆盖要求设计足够多的测试用例,使得判定中的每个条件获得各种可能的结果,即每个条件至少有一次为真值,有一次为假值。

2)用例设计:3)优点:显然条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。

4)缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。

条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

4、判定/条件覆盖1)主要特点:设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身所有可能结果也至少出现一次。

2)用例设计:3)优点:判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足。

4)缺点:判定/条件覆盖准则的缺点是未考虑条件的组合情况。

5、组合覆盖:1)主要特点:要求设计足够多的测试用例,使得每个判定中条件结果的所有可能组合至少出现一次。

2)用例设计:3)优点:多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。

更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。

并且每个条件都显示能单独影响判定结果。

4)缺点:线性地增加了测试用例的数量。

6、路径覆盖1)主要特点:设计足够的测试用例,覆盖程序中所有可能的路径。

23)优点:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。

4)缺点:由于路径覆盖需要对所有可能的路径进行测试(包括循环、条件组合、分支选择等),那么需要设计大量、复杂的测试用例,使得工作量呈指数级增长。

而在有些情况下,一些执行路径是不可能被执行的,如:If (!A)B++;If (!A)D--;这两个语句实际只包括了2条执行路径,即A为真或假时候对B和D的处理,真或假不可能都存在,而路径覆盖测试则认为是包含了真与假的4条执行路径。

这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。

总结白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的一种单元测试方法。

只有对程序内部十分了解才能进行适度有效的白盒测试。

但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。

因此我们不能穷举所有的逻辑路径,即使穷举也未必会带来好运(穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程序遗漏的路径)。

那么正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。

任何一个高效的测试用例,都是针对具体测试场景的。

逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径用例设计一、白盒测试根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。

这种测试方法就是白盒测试。

白盒测试把测试对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

不论是黑盒测试,还是白盒测试,都不可能把所有可能的输入数据都拿来进行所谓的穷举测试。

因为可能的测试输入数据数目往往达到天文数字。

下面让我们看两个例子。

假设一个程序P有输入X和Y及输出Z,参看图10-4-1。

在字长为32位的计算机上运行。

如果X 、Y只取整数,考虑把所有的X 、Y值都做为测试数据,按黑盒测试方法进行穷举测试,力图全面、无遗漏地“挖掘”出程序中的所有错误。

这样做可能采用的测试数据组(Xi,Yi)的最大可能数目为:。

如果程序P测试一组X、Y数据需要 1毫秒,且一天工作24小时,一年工作365天,要完成264组测试,需要5亿年。

图 10-4-1 黑盒子而对一个具有多重选择和循环嵌套的程序,不同的路径数目也可能是天文数字。

设给出一个如图 10-4-2所示的小程序的流程图,其中包括了一个执行达20次的循环。

那么它所包含的不同执行路径数高达条,若要对它进行穷举测试,覆盖所有的路径。

假使测试程序对每一条路径进行测试需要1毫秒,同样假定一天工作24小时,一年工作365 天,那么要想把如图 10-4-2所示的小程序的所有路径测试完,则需要3170年。

图 10-4-2 白盒测试中的穷举测试以上的分析表明,实行穷举测试,由于工作量过大,实施起来是不现实的。

相关文档
最新文档