白盒测试的六种覆盖准则

白盒测试的六种覆盖准则
白盒测试的六种覆盖准则

白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。本文介绍六种白盒子测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。

白盒测试的概述

由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。

白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。

白盒的测试用例需要做到:

·保证一个模块中的所有独立路径至少被使用一次

·对所有逻辑值均需测试true 和false

·在上下边界及可操作范围内运行所有循环

·检查内部数据结构以确保其有效性

白盒测试的目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。

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

白盒测试的实施步骤:

1.测试计划阶段:根据需求说明书,制定测试进度。

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

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

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

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

静态分析是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。

动态分析的主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后, 对软件系统行为的分析。动态分析包含了程序在受控的环境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

白盒测试的优缺点

1. 优点

·迫使测试人员去仔细思考软件的实现

·可以检测代码中的每条分支和路径

·揭示隐藏在代码中的错误

·对代码的测试比较彻底

·最优化

2. 缺点

·昂贵

·无法检测代码中遗漏的路径和数据敏感性错误

·不验证规格的正确性

六种覆盖方法

首先为了下文的举例描述方便,这里先给出一张程序流程图。(本文以1995年软件设计师考试的一道考试题目为例,图中红色字母代表程序执行路径)。

1、语句覆盖

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

2)用例设计:(如果此时将A路径上的语句1—〉T去掉,那么用例如下)

X Y 路径

1 50 50 OBDE

2 90 70 OBCE

3)优点:可以很直观地从源代码得到测试用例,无须细分每条判定表达式。

4)缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。在本例中去掉了语句1—〉T去掉,那么就少了一条测试路径。在if结构中若源代码没有给出else后面的执行分支,那么语句覆盖测试就不会考虑这种情况。但是我们不能排除这种以外的分支不会被执行,而往往这种错误会经常出现。再如,在Do-While结构中,语句覆盖执行其中某一个条件分支。那么显然,语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他情况。

2、判定覆盖

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

2)用例设计:

X Y 路径

1 90 90 OAE

2 50 50 OBDE

3 90 70 OBCE

3)优点:判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。

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

3、条件覆盖

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

2)用例设计:

X Y 路径

1 90 70 OBC

2 40 OBD

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

4)缺点:要达到条件覆盖,需要足够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

4、判定/条件覆盖

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

2)用例设计:

X Y 路径

1 90 90 OAE

2 50 50 OBDE

3 90 70 OBCE

4 70 90 OBCE

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

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

5、组合覆盖

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

2)用例设计:

X Y 路径

1 90 90 OAE

2 90 70 OBCE

3 90 30 OBDE

4 70 90 OBCE

5 30 90 OBDE

6 70 70 OBDE

7 50 50 OBDE

3)优点:多重条件覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。并且每个条件都显示能单独影响判定结果。

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

6、路径覆盖

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

2)用例设计:

X Y 路径

1 90 90 OAE

2 50 50 OBDE

3 90 70 OBCE

4 70 90 OBCE

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

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

If (!A)B++;

If (!A)D--;

这两个语句实际只包括了2条执行路径,即A为真或假时候对B和D的处理,真或假不可能都存在,而路径覆盖测试则认为是包含了真与假的4条执行路径。这样不仅降低了测试效率,而且大量的测试结果的累积,也为排错带来麻烦。

总结

白盒测试是一种被广泛使用的逻辑测试方法,是由程序内部逻辑驱动的一种单元测试方法。只有对程序内部十分了解才能进行适度有效的白盒测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。因此我们不能穷举所有的逻辑路径,即使穷举也未必会带来好运(穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程序遗漏的路径)。

那么正确使用白盒测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。

如何进行白盒测试

摘要:单元测试是软件测试的基础,本文详细的论述了单元测试的两个步骤人工静态检查法与动态执行跟踪法,所需执行的工作项目及相关的策略和方法。通过对这两个步骤的描述作者将多年的单元测试经验及测试理论注入于全文。 关键词:单元测试、人工检查、白盒测试、测试用例、跟踪调试 1 概述 单元测试是针对软件设计的最小单位——程序模块,进行正确性检验的测试工作。其目的在于发现每个程序模块内部可能存在的差错。 单元测试也是程序员的一项基本职责,程序员必须对自己所编写的代码保持认真负责的态度,这是也程序员的基本职业素质之一。同时单元测试能力也是程序员的一项基本能力,能力的高低直接影响到程序员的工作效率与软件的质量。 在编码的过程中作单元测试,其花费是最小的,而回报却特别优厚的。在编码的过程中考虑测试问题,得到的将是更优质的代码,因为在这时您对代码应该做些什么了解得最清楚。如果不这样做,而是一直等到某个模块崩溃了,到那时您可能已经忘记了代码是怎样工作的。即使是在强大的工作压力下,您也还必须重新把它弄清楚,这又要花费许多时间。进一步说,这样做出的更正往往不会那么彻底,可能更脆弱,因为您唤回的理解可能不那么完全。 通常合格的代码应该具备以下性质:正确性、清晰性、规范性、一致性、高效性等(根据优先级别排序)。 1. 正确性是指代码逻辑必须正确,能够实现预期的功能。 2. 清晰性是指代码必须简明、易懂,注释准确没有歧义。 3. 规范性是指代码必须符合企业或部门所定义的共同规范包括命名规则,代码风格等等。 4. 一致性是指代码必须在命名上(如:相同功能的变量尽量采用相同的标示符)、风格上都保持统一。 5. 高效性是指代码不但要满足以上性质,而且需要尽可能降低代码的执行时间。 2 单元测试步骤 在代码编写完成后的单元测试工作主要分为两个步骤人工静态检查和动态执行跟踪。 人工静态检查是测试的第一步,这个阶段工作主要是保证代码算法的逻辑正确性(尽量通过人工检查发现代码的逻辑错误)、清晰性、规范性、一致性、算法高效性。并尽可能的发现程序中没有发现的错误。 第二步是通过设计测试用例,执行待测程序来跟踪比较实际结果与预期结果来发现错误。经验表明,使用人工静态检查法能够有效的发现30%到70%的逻辑设计和编码错误。但是代码中仍会有大量的隐性错误无法通过视觉检查发现,必须通过跟踪调试法细心分析才能够捕捉到。所以,动态跟踪调试方法也成了单元测试的重点与难点。 3 人工检查 通常在人工检查阶段必须执行以下项目的活动: 第一、检查算法的逻辑正确性;确定所编写的代码算法、数据结构定义(如:队列、堆栈等)是否实现了模块或方法所要求的功能。 第二、模块接口的正确性检查;确定形式参数个数、数据类型、顺序是否正确;确定返回值类型及返回值的正确性。 第三、输入参数有没有作正确性检查;如果没有作正确性检查,确定该参数是否的确无需做参数正确性检查,否则请添加上参数的正确性检查。经验表明,缺少参数正确性检查的代码是造成软件系统不稳定的主要原因之一。 第四、调用其他方法接口的正确性;检查实参类型正确与否、传入的参数值正确与否、

白盒测试用例设计方法

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(分支覆盖)。应该注意到基本集并不唯一,实际上,给定的过程设计可派生出任意数量的不同基本集。如何才能知道需要寻找多少条路径呢?可以通过如下三种方法之一来计算独立路径的上界: 1. V=E-N+2,E 是流图中边的数量,N 是流图节点数量。 2. V=P+1,P 是流图中判定节点的数量 3. V=R,R 是流图中区域的数量 例如,(b)流图可以采用上述任意一种算法来计算独立路径的数量 1. V=11 条边-9 个节点+2=4 2. V=3 个判定节点+1=4 3. 流图有4 个区域,所以V=4 由此为了覆盖所有程序语句,必须设计至少4 个测试用例使程序运行于这4 条路径。 在采用基本路径测试方法中,获取测试用例可参考以下方式:

白盒测试方法

一、白盒测试概念 1、定义 白盒测试又称结构测试、透明盒测试、逻辑驱动测试、基于代码的测试。盒子指被测试的软件,白盒指盒子是可视的。白盒测试是一种测试用例设计方法,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例。白盒测试主要针对被测程序的源代码,主要用于软件验证,不考虑软件的功能实现,只验证内部动作是否按照设计说明书的规定进行。 2、目的 我们一方面注重软件功能需求的实现,另一方面还要注重程序逻辑细节,主要是因为软件自身的缺陷,具体如下: 1)逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。日常处理往往被很好地了解,而“特殊情况”的处理则难于发现。 2)我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的基础上被执行。程序的逻辑流有时是违反直觉的,只有路径测试才能发现这些错误。 3)代码中的笔误是随机且无法杜绝的。笔误出现在主流上和不明显的逻辑路径上的机率是一样的。很多被语法检查机制发现,但是其他的会在测试开始时才会被发现。 4)功能测试本身的局限性。如果程序实现了没有被描述的行为,功能测试是无法发现的,例如病毒,而白盒测试很容易发现它。 3、目标 采用白盒测试必须遵循以下几条原则,才能达到测试的目标: 1)保证一个模块中的所有独立路径至少被测试一次。 2)所有逻辑值均需测试真(true) 和假(false)两种情况。 3)检查程序的内部数据结构,保证其结构的有效性。 4)在上下边界及可操作范围内运行所有循环。 4、黑白灰区别 黑盒测试技术:也称功能测试或数据驱动测试,只关注规格说明中的功能,测试者在程序接口对软件界面和软件功能进行测试,它只检查实现了的功能是否按照“用户需求说明书”的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。主要用于软件确认测试,结合兼容、性能测试等方面,但黑盒测试不能保证已经实现的各个部分都被测试到。黑盒测试适用于各阶段测试。 白盒测试技术:只关注软件产品的测试,深入到代码一级的测试,它是知道产品内部结构,通过测试来检测产品内部动作是否按照“设计规格说明书”的规定正常进行,按照程

白盒测试的基本路径测试法

白盒测试的基本路径测试法 一、白盒测试的主要测试方法 1、代码检查法 2、静态结构分析法 3、静态质量度量法 4、逻辑覆盖法 5、基本路径测 试法(应用最广泛)6、域测试7、符号测试8、Z路径覆盖9、程序变异 二、基本路径测试法 1、定义:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。 设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。 2、基本路径测试法的基本步骤 1) 程序的控制流图:描述程序控制流的一种图示方法。 2)程序圈复杂度:McCabe复杂性度量。从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行一次所必须的测试用例数目的上界。 3)导出测试用例:根据圈复杂度和程序结构设计用例数据输入和预期结果。 4)准备测试用例:确保基本路径集中的每一条路径的执行。 3、基本路径测试法的工具方法 1)图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动 地确定一个基本路径集。 三、程序的控制流图 控制流程图是描述程序控制流的一种图示方法。圆圈称为控制流图的一个结点,表示一个或多个无分支的语句或源程序语句流图只有二种图形符号:图中的每一个圆称为流图的结点,代表一条或多条语句。流图中的箭头称为边或连接,代表控制流。任何过程设计都要被翻译成控制流图。

1、根据程序流程图化成控制流图 在将程序流程图简化成控制流图时,应注意: 1)在选择或多分支结构中,分支的汇聚处应有一个汇聚结点。 2)边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。如下页图所示: 如果判断中的条件表达式是由一个或多个逻辑运算符(OR, AND, NAND, NOR) 连接的复合条件表达式,则需要改为一系列只有单条件的嵌套的判断。 例如: 1 if a or b 2 x 3 else 4 y 对应的逻辑为:

白盒测试的六种覆盖准则

白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。本文介绍六种白盒子测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 白盒测试的概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 白盒的测试用例需要做到: ·保证一个模块中的所有独立路径至少被使用一次 ·对所有逻辑值均需测试true 和false ·在上下边界及可操作范围内运行所有循环 ·检查内部数据结构以确保其有效性 白盒测试的目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。 白盒测试的特点:依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。 白盒测试的实施步骤: 1.测试计划阶段:根据需求说明书,制定测试进度。 2.测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。 3.测试执行阶段:输入测试用例,得到测试结果。 4.测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。 白盒测试的方法:总体上分为静态方法和动态方法两大类。

白盒测试方法习题及答案

[试题分类]:[04]白盒测试方法/[0400][综合]白盒测试方法 1. 下面不属于白盒测试能保证的是。 A. 模块中所有独立途径至少测试一次 B. 测试所以逻辑决策真和假两个方面 C. 在所有循环的边界内部和边界上执行循环体 D. 不正确或漏掉的功能 答案:D 分数:1 题型:单选题 难度:1 2. 因果图方法是根据()之间的因果关系来设计测试用例的。 A. 输入与输岀 B. 设计与实现 C. 条件与结果 D. 主程序与子程序 答案:A 分数:1 题型:单选题 难度:1 3. 使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准 A. 程序的内部逻辑 B. 程序的复杂程度 C. 使用说明书 D. 程序的功能 答案:A 分数:1 题型:单选题 难度:1 4. 软件测试中常用的静态分析方法是()和接口分析。 A. 引用分析 B. 算法分析 C. 可靠性分析 D. 效率分析 答案:A 分数:1 题型:单选题 难度:1 5. 软件测试中常用的静态分析方法是引用分析和()。 A. 引用分析 B. 算法分析 C. 可靠性分析 D. 接口分析 答案:D 分数:1 题型:单选题 难度:1 6. 白盒方法中常用的方法是()方法。 A. 路径测试 B. 等价类 C. 因果图 D. 归纳测试

答案:A 分数:1 题型:单选题 难度:1 7. 在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看作是() A. 路径的集合 B. 循环的集合 C. 目标的集合 D. 地址的集合 答案:A 分数:1 题型:单选题 难度:1 8. 软件测试白箱测试是对软件的结构进行测试,下述: I.边缘值分析n.语句测试 皿.分值测试IV .路经测试 )是其应包括的内容。 A. I B. n和皿 C.皿和V D. n .皿和V 答案:D 分数:1 题型:单选题 难度:1 9. 在进行单元测试时,常用的方法是()。 A. 采用白盒测试,辅之以黑盒测试 B. 采用黑盒测试,辅之以白盒测试 C. 只适用白盒测试 D. 只适用黑盒测试 答案:A 分数:1 题型:单选题 难度:1 10. 白盒测试法一般使用于()测试。 A. 单元 B. 系统 C. 集成 D. 确认 答案:A 分数:1 题型:单选题 难度:1 [试题分类]:[04] 白盒测试方法/[0401]逻辑覆盖法 11. 关于条件测试错误的是() A. 可以检查程序中所包含的逻辑条件 B. 条件中包含的错误有布尔算子错误 C. 条件中包含的错误有布尔变量错误 D. 条件中包含的错误有接口错误 答案:D 分数:1 题型:单选题 难度:1

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

白盒测试中的六种覆盖方法 摘要:白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。因为对于不同复杂度的代码逻辑,可以衍生出许多种执行路径,只有适当的测试方法,才能帮助我们从代码的迷雾森林中找到正确的方向。本文介绍六种白盒子测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。 白盒测试的概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行, 而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。 白盒的测试用例需要做到: ·保证一个模块中的所有独立路径至少被使用一次 ·对所有逻辑值均需测试 true 和 false ·在上下边界及可操作范围内运行所有循环 ·检查内部数据结构以确保其有效性 白盒测试的目的:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。 白盒测试的特点:依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。 白盒测试的实施步骤: 1.测试计划阶段:根据需求说明书,制定测试进度。 2.测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。 3.测试执行阶段:输入测试用例,得到测试结果。 4.测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。 白盒测试的方法:总体上分为静态方法和动态方法两大类。

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

白盒测试技术中的几种逻辑覆盖 白盒测试技术中的逻辑覆盖 一个或者多个条件组成一个判定,一个程序中可以有多个判定。 首要的是建立一个二维的真值表,各列为判定和条件,各行为每组值的T或者F。 1、语句覆盖 为了暴露程序中的错误,至少每个语句应该执行一次。 这也是最弱的逻辑覆盖标准咯。 2、判定覆盖 每个判定的每种可能结果都要执行一次。 建立判定表以后,要保证每种判定的结果中都包含了T和F,才满足判定覆盖。 3、条件覆盖 不但每个语句需要执行一次,而且判定表达式中的每个条件都要取到可能的结果。 建立判定表以后,要保证每种条件的结果中都包含了T和F,才满足条件覆盖。 4、判定/条件覆盖 使得每个判定以及每个判定中的每个条件都取到可能的结果。 建立判定表以后,要保证每个判定结果包含T和F,而且每种条件的结果包含T和F。 也就是综合了上面的条件覆盖和判定覆盖。 5、条件组合覆盖 使得每个判定中的条件的各种组合至少出现一次。 也就是说,先把程序中的条件列出来,排列组合,写出所有的可能性,看有没有那组值同时满足这些排列组合。 6、路径覆盖 每条可能的路径都至少执行一次。

就是看源程序中的判断,都有哪些组合,比如T ,FF,FT,等等,看看哪个满足包含了所有的组合。 因为这些不同的组合就代表了程序中执行的不同路径啊。 如何挑选白盒测试工具 白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。 对开发语言的支持:白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实现的方式和内容差别是较大的。目前测试工具主要支持的开发语言包括:标准C、C++、Visual C ++、Java、Visual J++等。 代码的覆盖深度:从覆盖源程序语句的详尽程度分析,逻辑覆盖标准包括以下不同的覆盖标准:语句覆盖、判定覆盖、条件覆盖、条件判定组合覆盖、多条件覆盖和修正判定条件覆盖。 ·语句覆盖为了暴露程序中的错误,程序中的每条语句至少应该执行一次。因此语句覆盖(Statement Coverage)的含义是:选择足够多的测试数据,使被测程序中每条语句至少执行一次。语句覆盖是很弱的逻辑覆盖。 ·判定覆盖比语句覆盖稍强的覆盖标准是判定覆盖(Decision Coverage)。判定覆盖的含义是:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称为分支覆盖。 ·条件覆盖在设计程序中,一个判定语句是由多个条件组合而成的复合判定。为了更彻底地实现逻辑覆盖,可以采用条件覆盖(Condition Coverage)的标准。条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。 ·多条件覆盖多条件覆盖也称条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的。 ·修正条件判定覆盖修正条件判定覆盖是由欧美的航空/航天制造厂商和使用单位联合制定的“航空运输和装备系统软件认证标准”,目前在国外的国防、航空航天领域应用广泛。这个覆盖度量需要足够的测试用例来确定各个条件能够影响到包含的判定的结果。它要求满足两个条件:首先,每一个程序模块的入口和出口点都要考虑至少要被调用一次,每个程序的判定到所有可能的结果值要至少转换一次;其次,程序的判定被分解为通过逻辑操作符(and、or)连接的布尔条件,每个条件对于判定的结果值是独立的。 不同的测试工具对于代码的覆盖能力也是不同的,通常能够支持修正条件判定覆盖的测试工具价格是极其昂贵的。

白盒测试方法习题测验及答案

[试题分类]: [04]白盒测试方法/[0400][综合]白盒测试方法 1. 下面不属于白盒测试能保证的是。 A.模块中所有独立途径至少测试一次 B.测试所以逻辑决策真和假两个方面 C.在所有循环的边界内部和边界上执行循环体 D.不正确或漏掉的功能 答案:D 分数:1 题型:单选题 难度:1 2.因果图方法是根据()之间的因果关系来设计测试用例的。 A.输入与输出 B.设计与实现 C.条件与结果 D.主程序与子程序 答案:A 分数:1 题型:单选题 难度:1 3.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。 A.程序的内部逻辑 B.程序的复杂程度 C.使用说明书 D.程序的功能 答案:A 分数:1 题型:单选题 难度:1 4.软件测试中常用的静态分析方法是()和接口分析。 A.引用分析 B.算法分析 C.可靠性分析 D.效率分析 答案:A 分数:1 题型:单选题 难度:1 5.软件测试中常用的静态分析方法是引用分析和()。 A.引用分析 B.算法分析 C.可靠性分析 D.接口分析 答案:D 分数:1 题型:单选题 难度:1 6.白盒方法中常用的方法是()方法。 A.路径测试 B.等价类 C.因果图 D.归纳测试 答案:A 分数:1 题型:单选题

7.在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看作是() A.路径的集合 B.循环的集合 C.目标的集合 D.地址的集合 答案:A 分数:1 题型:单选题 难度:1 8.软件测试白箱测试是对软件的结构进行测试,下述: Ⅰ.边缘值分析Ⅱ.语句测试 Ⅲ.分值测试Ⅳ.路经测试 ()是其应包括的内容。 A.Ⅰ B.Ⅱ和Ⅲ C.Ⅲ和Ⅳ D.Ⅱ.Ⅲ和Ⅳ 答案:D 分数:1 题型:单选题 难度:1 9.在进行单元测试时,常用的方法是()。 A.采用白盒测试,辅之以黑盒测试 B.采用黑盒测试,辅之以白盒测试 C.只适用白盒测试 D.只适用黑盒测试 答案:A 分数:1 题型:单选题 难度:1 10.白盒测试法一般使用于()测试。 A.单元 B.系统 C.集成 D.确认 答案:A 分数:1 题型:单选题 难度:1 [试题分类]: [04]白盒测试方法/[0401]逻辑覆盖法 11.关于条件测试错误的是() A.可以检查程序中所包含的逻辑条件 B.条件中包含的错误有布尔算子错误 C.条件中包含的错误有布尔变量错误 D.条件中包含的错误有接口错误 答案:D 分数:1 题型:单选题 难度:1 12.关于条件中包含的错误类型说法错误的是() A.关系算子错误 B.算术表达式错误 C.条件中包含的错误有布尔变量错误 D.条件中包含的错误有接口错误

白盒测试和黑盒测试

白盒测试 白盒测试,又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子部的东西以及里面是如何运作的。"白盒"法全面了解程序部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。 采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。 中文名:白盒测试 外文名:white-box testing 别称:结构测试、透明盒测试 白盒测试测试方法 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化: 1.语句覆盖每条语句至少执行一次。 2.判定覆盖每个判定的每个分支至少执行一次。 3.条件覆盖每个判定的每个条件应取到各种可能的值。 4.判定/条件覆盖同时满足判定覆盖条件覆盖。 5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 6.路径覆盖使程序中每一条可能的路径至少执行一次。 白盒测试要求

白盒测试方法详细说明

白盒测试方法 一、静态结构分析法 程序的结构形式是白盒测试的主要依据。研究表明程序员38%的时间花费在理解软件系统上,因为代码以文本格式被写入多重文件中,这是很难阅读理解的,需要其它一些东西来帮助人们阅读理解,如各种图表等,而静态结构分析满足了这样的需求。 在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图标,可以清晰地标识整个软件系统的组成结构,使其便于阅读和理解,然后可以通过分析这些图标,检查软件有没有存在缺陷或错误。 其中函数调用关系图通过应用程序中各函数之间的调用关系展示了系统的结构。通过查看函数调用关系图,可以检查函数之间的调用关系是否符合要求,是否存在递归调用,函数的调用曾是是否过深,有没有存在独立的没有被调用的函数。从而可以发现系统是否存在结构缺陷,发现哪些函数是重要的,哪些是次要的,需要使用什么级别的覆盖要求...... 模块控制流图是与程序流程图相类似的由许多节点和连接节点的边组成的一种图形,其中一个节点代表一条语句或数条语句,边代表节点间控制流向,它显示了一个函数的内部逻辑结构。模块控制流图可以直观地反映出一个函数的内部逻辑结构,通过检查这些模块控制流图,能够很快发现软件的错误与缺陷 二、代码检查 代码检查包括桌面检查、代码审查和走查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面;发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的内容,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。 代码检查方法 1、代码检查法 (1)桌面检查:这是一种传统的检查方法,由程序员检查自己编写的程序。程序员在程序通过编译之后,对源程序代码进行分析、检验,并补充相关文档,目的是发现程序中的错误。由于程序员熟悉自己的程序及其程序设计风格,桌面检查由程序员自己进行可以节省很多的检查时间,但应避免主观片面性 (2)代码审查 由若干程序员和测试员组成一个审查小组,通过阅读、讨论和争议,对程序进行静态分析的过程。代码审查分两步:第一步,小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为审查的依据。小组成员在充分阅读这些材料后,进入审查的第二步,召开程序审查会。在会上,首先由程序员逐句简介程序的逻辑。

白盒测试方法实验报告

实验报告 课程名称软件测试题目白盒方法测试 院系信息工程学院 班级计算机 学号 学生姓名 指导老师 日期 2019年

一、实验题目 白盒方法测试 二、实验目的 使学生能够更进一步理解白盒测试方法。 能够区分语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。 区分语句覆盖、判定覆盖、条件覆盖的异同,掌握其测试用例设计方法和程序特征; 三、实验环境 Windows系统平台和Dev-C++开发环境。 四、实验内容 某程序的逻辑设计如下图所示,自行分析程序结构,请为该程序设计测试用例使其分别满足:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,并按照测试用例测试程序,完善测试用例各项内容的填写。 #include using namespace std; int main() { int F=0; int T=0; int x,y; cin>>x>>y; if(x>=50&&y>=50) { F=1;} if(x+y>80) { T=2; } else { T=3; } cout<

4 五、实验步骤 1.依据程序逻辑结构图分析程序结构,找出程序的各种组合。 2.依据实验要求设计测试用例使测试达到特定覆盖。 3.选择自己熟悉的语言编写程序。 4.用各种测试用例测试程序。 5.1语句覆盖 特点:语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每 条语句至少被执行一次。在本例中,可执行语句是指语句块1到语句块4中的语 句。 优点:可以很直观地从流程图得到测试用例,可以测试所有的执行语句。 缺点:语句覆盖不能准确的判断运算中的逻辑关系错误。假设第一个判断语 句if(x>=50 && y>=50)中的“&&”被错误地写成了“||”,即if(x>=50 || y>=50),使 用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖。 在六种逻辑覆盖标准中,语句覆盖标准最弱的。

白盒测试方法总结

白盒测试方法总结 一、静态结构分析法 程序的结构形式是白盒测试的主要依据。研究表明程序员38%的时间花费在理解软件系统上,因为代码以文本格式被写入多重文件中,这是很难阅读理解的,需要其它一些东西来帮助人们阅读理解,如各种图表等,而静态结构分析满足了这样的需求。 在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据结构、数据结构、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图标,可以清晰地标识整个软件系统的组成结构,使其便于阅读和理解,然后可以通过分析这些图标,检查软件有没有存在缺陷或错误。 其中函数调用关系图通过应用程序中各函数之间的调用关系展示了系统的结构。通过查看函数调用关系图,可以检查函数之间的调用关系是否符合要求,是否存在递归调用,函数的调用曾是是否过深,有没有存在独立的没有被调用的函数。从而可以发现系统是否存在结构缺陷,发现哪些函数是重要的,哪些是次要的,需要使用什么级别的覆盖要求...... 模块控制流图是与程序流程图相类似的由许多节点和连接节点的边组成的一种图形,其中一个节点代表一条语句或数条语句,边代表节点间控制流向,它显示了一个函数的内部逻辑结构。模块控制流图可以直观地反映出一个函数的内部逻辑结构,通过检查这些模块控制流图,能够很快发现软件的错误与缺陷 二、代码检查 代码检查包括桌面检查、代码审查和走查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面;发现违背程序编写标准的问题,程序中不安全、不明确和模糊的部分,找出程序中不可移植部分、违背程序编程风格的内容,包括变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等内容。 代码检查方法 1、代码检查法

白盒测试流程

白盒测试指南 (说明:此白盒测试指南主要给白盒测试人员提供一些基本的白盒测试方法和技术,由于涉及的问题广泛,测试内容中的细节不一定准确和完整,还有待于各位的共同参与和不断完善,欢迎多交流!) 目的 本方案主要实施NC产品程序代码的白盒测试。使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。保证局部模块功能完备性,运行正确性与稳定性。 测试项 所要测试的类。如: nc.ui.bd.* nc.bs.bd.* nc.vo.bd.* 测试依据 1.N C产品需求报告; 需求规格说明书、用例描述清单 2.设计文档;(OOA、OOD、CRC卡) 如:AOM(Analysis Object Model)表示类间的静态关系,是多个相关的用例共用的。 ASD(Analysis Sequence Diagram)是按业务工作的顺序表示每一工作步骤执行时类间的动态关系。一个用例对应一个ASD。 CRC (Collaborators & Responsibilities Card)卡是一个类的完整表述 3.界面规范 4.编码规范 5.开发命名标准 通过的准则 1.界面测试通过的标准:界面的样式、大小、颜色、整体布局的设置;各种标签控件的使用及主 题描述以及事件源控件的使用、快捷键使用都应符合《NC系统应用框架需求报告》和《设计文档的相关规范》。 2.程序代码通过的标准:创建的类、接口、方法、属性应与《设计文档》保持一致;程序的各种 命名、注释、代码行的格式等应符合《程序开发命名标准》和《编码规范》;程序模块能独立稳定运行。 测试环境配置 1.测试工具: 2.软件环境: Client端: 操作系统:中文WINNT/2000 开发环境:VA3.5 专业版 待测试的源码包 Server端: 操作系统:WIN NT4.0

1407040248_周立群_白盒测试试题

第五章白盒测试 一、判断分析题 1.语句覆盖是最弱的逻辑覆盖。(√) 2.语句覆盖是最强的逻辑覆盖。(X) 3.判定覆盖不一定包含条件覆盖。(X) 4.条件覆盖不一定包含判定覆盖。(√) 5.判定/条件覆盖能同时满足判定、条件两种覆盖标准。(√) 6.判定/条件覆盖指满足判定覆盖标准或条件覆盖标准。(X) 7.DD-路径图是一种压缩图。(X) 8.详细设计的目的是为软件结构图中的每一个模块确定使用的算法和块内数据结构,并用 某种选定的表达工具给出清晰的描述。(X ) 9.尽量用公共过程或子程序去代替重复的代码段。(X) 10.对于连锁型分支结构,若有n个判定语句,则有2n条路径。(√) 11.尽量采用复合的条件测试,以避免嵌套的分支结构。(√) 12.GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序 更加简洁。(√) 二、简答题 1.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区 别与联系。 答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中指定功能的有效方法。(常见的联调测试)系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求并且遵循系统设计。验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

第四大题——白盒测试各种覆盖方法

V oid test(int X,int A,int B) { if(A>1&&B=0)then X=X/A If(A=2||X>1)then X=X+1 } 语句覆盖: 测试用例的输入为: 沿路径ace 执行; 1. A=2,B=0,X=3 执行路径ace 就可达到“语句覆盖”标准 如果第一个条件语句中的&&错误地编写成||,上面的测试用例是不能发现这个错误的;又如第三个条件语句中X >1误写成X >0,这个测试用例也不能暴露它,此外,沿着路径abd 执行时,X 的值应该保持不变,如果这一方面有错误,上述测试数据也不能发现它们 判断覆盖(分支覆盖): ① 沿路径ace 执行 ② 沿路径abd 执行 测试用例的输入为: ③ A=1,B=0,X=3 (沿路径acd 执行) ; ④ A=0,B=1,X=0(沿路径abe 执行) ; d

条件覆盖: 为了达到“条件覆盖”标准,需要执行足够的测试用例使得在a点有: A>1、A≤1、B=0、B≠0 等各种结果出现,以及在b点有: A=2、A≠2、X>1、X≤1 等各种结果出现。 现在只需设计以下两个测试用例就可满足这一标准: 1.A=2,B=0,X=4 (沿路径ace执行); 2. A=1,B=1,X=3 (沿路径abd执行)。 3. A=3, B=0,X=1

条件覆盖”并不包含“判断覆盖”,如对语句IF(A AND B)THEN S 设计测试用例使其满足"条件覆盖",即使A为真并使B为假,以及使A为假而且B为真,但是它们都未能使语句S得以执行。 判断/条件覆盖 根据定义只需设计以下两个测试用例便可以覆盖8个条件值以及4个判断分支。 ①A=2,B=0,X=4 (沿ace路) ②A=1,B=1,X=1 (沿abd路径) 它测试了所有条件的取值,但是实际上某些条件掩盖了另一些条件。 例如:对于条件表达式(A>1&&B=0)来说,必须两个条件都满足才能确定表达式为真。 如果(A>1)为假则一般的编译器不在判断是否B=0了。对于第二个表达式(A=2||X>1)来说,若A=2测试结果为真,就认为表达式的结果为真,这时不再检查X>1)条件了。 因此,采用分支/条件覆盖,逻辑表达式中的错误不一定能够查出来了。 条件组合覆盖 使得下面8种条件组合都能够出现 上面四个例子虽然满足条件组合覆盖,但并不能覆盖程序中的每一条路径,例如路径acd就没有执行,因此,条件组合覆盖标准仍然是不彻底.

白盒测试方法-覆盖

白盒测试方法 逻辑覆盖 一、语句覆盖 二、判定覆盖 三、条件覆盖 四、判定-条件覆盖 五、路径覆盖 逻辑覆盖 结构测试是依据被测程序的逻辑结构设计测试用例,驱动被测程序运行完成的测试。结构测试中的一个重要问题是,测试进行到什么地步就达到要求,可以结束测试了。这就是说需要给出结构测试的覆盖准则。 以下给出的几种逻辑覆盖测试方法都是从各自不同的方面出发,为设计测试用例 提出依据的。 IF((A>1)AND(B=0))THEN X=X/A IF((A=2)OR(X>1)THEN X=X+1 其中“AND”和“OR”是两个逻辑运算符。图1给出了它的流程图。a、b、c、 d和e是控制流上的若干程序点。

一、语句覆盖 语句覆盖的含意是,在测试时,首先设计若干个测试用例,然后运行被测程序, 使程序中的每个可执行语句至少执行一次。这时所谓“若干个”,自然是越少越好。 在上述程序段中,我们如果选用的测试用例是: A=2 B=0………………CASE1 X=3 则程序按路径ace执行。这样该程序段的4个语句均得到执行,从而作到了语句覆盖。但如果选用的测试用例是: A=2 B=1………………CASE2 X=3 程序按路径abe执行,便未能达到语句覆盖。 从程序中每个语句都得到执行这一点来看,语句覆盖的方法似乎能够比较全面地 检验每一个语句。但它也绝不是完美无缺的。假如这一程序段中两个判断的逻辑运算有问题,例如,第一个判断的运算符“AND”错成运算符“OR”或是第二个判断中的运算符“OR”错成了运算符“AND”。这时仍使用上述前一个测试用例CASE1,程序仍将按路径ace执行。这说明虽然也作到了语句覆盖,却发现不了判断中逻辑运算的错误。

白盒测试用例设计方法

1.白盒测试用例设计方法 1.1. 白盒测试概述 由于逻辑错误和不正确假设与一条程序路径被运行的可能性成反比。由于我们经常相信某逻辑路径不可能被执行,而事实上,它可能在正常的情况下被执行。由于代码中的笔误是随机且无法杜绝的,因此我们要进行白盒测试。 白盒测试又称结构测试,透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子部的东西以及里面是如何运作的。 1.白盒的测试用例需要做到 ?保证一个模块中的所有独立路径至少被使用一次; ?对所有逻辑值均需测试true 和false; ?在上下边界及可操作围运行所有循环; ?检查部数据结构以确保其有效性。 2.白盒测试的目的 通过检查软件部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。 3.白盒测试的特点 依据软件设计说明书进行测试、对程序部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。 4.白盒测试的实施步骤 1)测试计划阶段:根据需求说明书,制定测试进度。 2)测试设计阶段:依据程序设计说明书,按照一定规化的方法进行软件结构划分和设计测试用例。 3)测试执行阶段:输入测试用例,得到测试结果。 4)测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。 5.白盒测试的方法

总体上分为静态方法和动态方法两大类。 ?静态分析:是一种不通过执行程序而进行测试的技术。静态分析的关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。 ?动态分析:主要特点是当软件系统在模拟的或真实的环境中执行之前、之中和之后, 对软件系统行为的分析。动态分析包含了程序在受控的环 境下使用特定的期望结果进行正式的运行。它显示了一个系统在检查状 态下是正确还是不正确。在动态分析技术中,最重要的技术是路径和分支 测试。下面要介绍的六种覆盖测试方法属于动态分析方法。 6.白盒测试的优缺点 ?优点:迫使测试人员去仔细思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底; 最优化 ?缺点:费用昂贵;无法检测代码中遗漏的路径和数据敏感性错误; 不验证规格的正确性。 1.2. 白盒测试基本技术 1.2.1.控制流图 1.2.1.1.定义 程序流程图是软件开发过程中进行详细设计时,表示模块部逻辑的一个常用的、也非常有效的图示法。程序流程图详细地反映了程序部控制流的处理和转移过程,它一般是进行模块编码的参考依据。在程序流程图中,通常拥有很多种图示元素,例如,“矩形框”表示一个计算处理过程,而“菱形框”表示一个判断条件等。通常测试人员为某个程序模块做白盒测试过程中,在做与路径相关的各种分析的时候,这些非常细节的信息往往是不太重要。因此,为了更清晰突出地显示出程序的控制结构,反映控制流的转移过程,一种简化了的程序流程图便出现了,就是程序的控制流图。在控制流图中一般只有两种简单的图示符号:节点和控制流。

相关文档
最新文档