白盒测试技术综述

合集下载

白盒测试中的测试用例生成方法与工具综述

白盒测试中的测试用例生成方法与工具综述

白盒测试中的测试用例生成方法与工具综述白盒测试是软件测试中一种重要的测试方法,它通过了解被测试软件的内部结构和工作原理,以及测试者对程序的控制权,来设计测试用例并评估其执行结果。

在白盒测试过程中,测试用例的生成是关键的一环,因为良好的测试用例可以充分覆盖被测试软件的各个逻辑路径,从而提高测试覆盖率和发现潜在缺陷的能力。

本文将对白盒测试中常用的测试用例生成方法和工具进行综述。

一、静态测试用例生成方法静态测试用例生成方法是指根据被测试软件的静态结构信息,如代码、文档等,来生成测试用例。

常用的静态测试用例生成方法有基于程序切片、基于语句覆盖、基于条件覆盖等。

其中,基于程序切片的方法通过识别与给定测试目标有关的程序切片,然后生成测试用例;基于语句覆盖的方法则是通过覆盖每一个语句来生成测试用例;基于条件覆盖的方法则是通过覆盖每一个条件语句来生成测试用例。

二、结构化测试用例生成方法结构化测试用例生成方法是指根据被测试软件的结构信息,如控制流图、数据流图等,来生成测试用例。

常用的结构化测试用例生成方法有路径覆盖方法、边界值分析方法、等价类划分方法等。

路径覆盖方法通过覆盖被测试软件的各个路径来生成测试用例;边界值分析方法则是通过考虑输入数据的边界情况来生成测试用例;等价类划分方法将输入数据划分为等价类,然后选择测试用例来覆盖每个等价类。

三、符号执行测试工具符号执行是指通过对程序的符号变量进行符号计算,而不是具体数值计算,来探索程序的不同路径和条件分支。

符号执行测试工具可以自动生成具有高覆盖率的测试用例,包括路径覆盖、分支覆盖、条件覆盖等。

常见的符号执行测试工具有KLEE、S2E等。

四、模糊测试工具模糊测试是指向被测试软件输入一组非预期、异常或随机的测试数据,以寻找潜在的漏洞和异常行为。

模糊测试工具可以自动生成大量的随机测试用例,并提供测试结果的收集和分析。

常见的模糊测试工具有AFL、Peach Fuzzer等。

白盒测试主要采用的技术是

白盒测试主要采用的技术是

白盒测试主要采用的技术是白盒测试是软件测试中的一种重要方式,它通过检查程序内部的代码结构和逻辑来评估软件的质量。

与黑盒测试侧重于功能是否符合需求不同,白盒测试主要关注代码覆盖率、逻辑覆盖、路径覆盖等技术。

下面将介绍白盒测试主要采用的技术:1. 代码覆盖率技术代码覆盖率是白盒测试中常用的一种技术,它用于评估测试代码是否覆盖了软件中的所有代码。

在代码覆盖率技术中常用的方法有语句覆盖、分支覆盖、条件覆盖、路径覆盖等。

通过分析代码覆盖率可以帮助测试人员确定测试用例的质量和完整性。

2. 静态代码分析技术静态代码分析是指在不执行程序的情况下通过对源代码进行分析,找出潜在的错误、安全漏洞或者代码质量问题。

静态代码分析可以帮助测试人员在早期发现问题并进行改进,提高软件的质量和可靠性。

3. 数据流分析技术数据流分析是白盒测试中用于检查程序中数据流向的技术。

通过分析变量的定义、赋值和使用等,可以帮助测试人员发现潜在的数据争用、数据依赖等问题,从而提高测试的覆盖率和深度。

4. 符号执行技术符号执行是一种在程序执行过程中不使用具体的输入数据,而是使用符号来代替数据进行执行路径分析的技术。

符号执行可以帮助测试人员发现程序中的逻辑错误、误用变量等问题,提高测试的全面性和精度。

结语综上所述,白盒测试主要采用的技术包括代码覆盖率技术、静态代码分析技术、数据流分析技术、符号执行技术等。

这些技术在白盒测试中起着至关重要的作用,能够帮助测试人员发现潜在的问题,并提升软件的质量和可靠性。

在进行白盒测试时,测试人员可以结合不同的技术手段,提高测试效率和质量,确保软件的稳定性和安全性。

面向对象的软件测试技术综述

面向对象的软件测试技术综述

面向对象的软件测试技术综述随着软件应用范围的不断扩大,软件测试的技术手段也不断进步。

面向对象的软件开发思想逐渐被广泛采用,因此,面向对象的软件测试技术也应运而生。

本文将综述面向对象的软件测试技术。

一、面向对象软件测试的概念面向对象的软件测试是针对采用面向对象开发思想的软件进行的测试。

与传统的结构化软件测试相比,面向对象软件测试更加注重对软件内部各个部分之间的关系的测试,并且更加关注软件的继承、重载、多态等特性的测试。

二、面向对象软件测试的方法1. 黑盒测试方法对于面向对象的软件测试中的黑盒测试方法,测试人员仅考虑输入与输出,而不关心系统内部的具体实现。

黑盒测试方法可以通过参照生成测试用例的过程,来完成对程序的测试覆盖。

2. 白盒测试方法白盒测试方法则针对系统内部的具体实现进行测试。

它主要通过静态和动态两种方式进行测试,其中静态分析主要是通过代码分析或模型检查等方式,而动态分析则通过运行测试用例,观察程序执行流程和变量变化等方式进行测试。

3. 增量式测试方法对于大型的面向对象软件开发,其测试过程可能需要相当长的时间,增量式测试方法就可以有效缩短测试时间。

增量式测试方法是指将整个系统分成几个部分,然后逐渐增加到完整的系统环境。

这不仅能够逐步发现bug,还能够及时修复,并能逐步提高测试用例的质量。

三、面向对象软件测试的技术手段1. 测试驱动开发(TDD)测试驱动开发是一种基于测试驱动的软件开发方法,它强调在实现代码之前,先编写测试程序,以确保所编写的代码能够满足测试需要。

TDD可以提高测试的自动化程度,逐步提高测试用例的品质,并减少未发现的bug出现次数。

2. 自动化测试自动化测试是一种通过编写脚本和使用自动化测试工具来执行测试用例和比较结果的测试方法。

自动化测试可以将部分测试自动化,减轻测试压力,消除人为测试误差,并且提高测试的效率和准确度。

3. 模拟测试人工模拟测试是一种指人员通过编制人工操作流程,在应用程序的界面进行手动测试的方法,而计算机模拟测试是一种通过编写程序模拟系统功能和用户操作的测试方法,在这种测试方法中,测试人员可以对系统进行多次重复测试,大大提高了测试的效率。

白盒测试技术的应用

白盒测试技术的应用

白盒测试技术的应用在软件开发中,白盒测试技术是一种常用的测试方法,用于评估和验证软件的内部结构和功能。

与黑盒测试只关注输入和输出之间的关系不同,白盒测试需要测试人员具备对源代码的理解和分析能力,并根据代码的逻辑路径设计测试用例,以发现潜在的错误和缺陷。

本文将介绍白盒测试技术的应用,包括原理、优势和实践方法。

白盒测试技术的应用是基于对软件源代码的分析和理解。

测试人员首先需要对软件的内部结构有一定的了解,包括代码的逻辑、数据结构和算法。

基于这些了解,测试人员可以设计针对不同路径和条件的测试用例,通过覆盖尽可能多的代码路径,以发现可能存在的错误和缺陷。

白盒测试技术的主要优势是可以发现精确的错误和缺陷。

通过分析代码,测试人员可以找到可能被忽略的逻辑路径,设计相应的测试用例来覆盖这些路径,从而增加错误被发现的概率。

白盒测试还可以帮助测试人员确定和修复代码中潜在的性能问题和资源泄漏问题,提高软件的质量。

在应用白盒测试技术时,测试人员需要选择合适的测试覆盖准则。

常用的覆盖准则包括语句覆盖、判定覆盖、条件覆盖和路径覆盖等。

语句覆盖要求测试用例能够执行每一条语句;判定覆盖则要求测试用例能够覆盖每一次判断的真假分支;条件覆盖则要求测试用例能够使每个条件的真假情况至少被覆盖一次;路径覆盖则要求测试用例能够覆盖代码中的每个可能路径。

除了选择正确的覆盖准则,测试人员还需要设计有效的测试用例。

测试用例应该具备充分的代表性,能够覆盖各种不同的输入组合和边界情况。

测试用例应该包括正常情况和异常情况,并覆盖所有可能的错误和缺陷。

在实际应用中,白盒测试技术可以与其他测试方法相结合,以提高测试效果。

例如,与黑盒测试相结合,可以全面测试软件的功能和接口,保证软件具备正确的输入和输出。

与灰盒测试相结合,可以在保持测试覆盖度的情况下减少测试用例的数量,提高测试效率。

白盒测试技术也可以应用于测试工具和自动化测试环境的开发。

通过分析和理解测试工具的源代码,测试人员可以改进测试工具的功能和性能,并发现工具本身可能存在的错误和缺陷。

白盒测试简介及原理解析

白盒测试简介及原理解析

白盒测试简介及原理解析白盒测试是一种软件测试方法,旨在检查和评估软件应用程序的内部结构、设计和实现。

与黑盒测试不同,白盒测试侧重于了解和验证软件的内部逻辑和代码。

本篇文章将介绍白盒测试的基本概念、原理和应用。

一、白盒测试的基本概念白盒测试,也称为结构测试或透明盒测试,是一种基于内部代码和结构的测试方法。

它需要测试人员了解软件应用程序的内部实现细节,以设计和执行相应的测试用例。

通过白盒测试,测试人员可以评估软件的完整性、安全性和健壮性,并发现可能存在的错误和缺陷。

二、白盒测试的原理白盒测试基于以下几个原理:1. 代码覆盖率:白盒测试的目标之一是尽可能覆盖软件代码的各个执行路径。

通过设计测试用例来覆盖不同的代码分支和路径,可以提高测试的全面性和有效性。

2. 数据流分析:白盒测试需要了解软件应用程序中的数据流,包括输入、输出和内部变量之间的关系。

通过分析数据流,测试人员可以确定潜在的错误和漏洞,并设计相应的测试用例来验证和修复。

3. 边界值分析:边界值分析是白盒测试中常用的一种技术手段。

通过测试输入和输出的边界情况,可以揭示潜在的错误和异常处理问题。

例如,对于接受输入范围的函数,测试人员可以针对边界值进行测试,验证函数是否能正确处理最小和最大输入。

4. 代码审查:白盒测试还包括对代码的审查和分析。

测试人员可以检查代码是否符合编码规范、是否存在潜在的逻辑错误和效率问题。

通过代码审查,可以帮助发现并纠正代码中的问题,提高软件的质量和可靠性。

三、白盒测试的应用白盒测试广泛应用于软件开发和维护的各个阶段。

以下是一些典型的应用情景:1. 单元测试:白盒测试常用于对软件的单个模块或函数进行测试。

测试人员可以通过设计测试用例来验证模块的各种输入和输出组合,以确保模块能够按照预期工作。

2. 集成测试:在软件集成测试中,白盒测试可以用来验证各个模块之间的接口和交互。

通过模拟真实环境,在程序的不同部分之间进行交互测试,以确保整个系统的正确性和稳定性。

白盒测试测试方法详解

白盒测试测试方法详解

白盒测试white-box testing1测试概述白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。

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

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

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

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

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

采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。

其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。

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

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

测试方法白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

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

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

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

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

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

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

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

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

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

要求1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。

白盒测试定义

白盒测试定义

白盒测试定义
白盒测试,又称结构测试或逻辑驱动测试,是软件测试中的一种测试方法。


的核心思想是基于程序内部结构,通过对代码逻辑、路径覆盖等进行测试,以评估软件系统内部的稳定性和可靠性。

白盒测试不仅关注程序外部行为,更注重对程序内部逻辑的验证,旨在发现代码中的错误、漏洞或潜在问题。

相比黑盒测试,白盒测试更深入地考察了软件系统的内部机制。

在进行白盒测试时,测试人员需要深入了解软件系统的源代码结构、算法设计、数据结构等方面,以便有针对性地设计测试用例。

通过对代码进行逐行、逐句的检查与分析,测试人员可以验证代码是否符合预期逻辑,避免潜在的逻辑错误。

此外,白盒测试还涉及路径覆盖、逻辑覆盖、条件覆盖等技术,以确保对程序的各种执行路径都进行了覆盖测试。

白盒测试通常在软件开发的早期阶段进行,并与开发过程相互配合,以确保代
码的质量和稳定性。

通过持续的白盒测试,开发团队可以在开发周期中及时发现和修复潜在的问题,提高软件系统的可靠性和可维护性。

总之,白盒测试是一种以源代码为基础、逻辑驱动为核心的软件测试方法,旨
在通过深入分析代码内部结构,揭示潜在问题并确保软件系统的质量。

通过白盒测试,可以有效地发现程序内部的错误,减少软件系统的风险,提高软件质量和可靠性。

软件测试第三章白盒测试

软件测试第三章白盒测试

【(1, 0, 3), (1, 0, 4)】 【(2, 1, 1), (2, 1, 2)】
abe(L3)
T1 !T2 T3 !T4
b, e
3.2 逻辑覆盖——判定-条件覆盖
• 判定—条件覆盖 • 判定-条件覆盖就是设计足够的测试用例,使 得判断中每个条件的所有可能取值至少执行一 次,同时每个判断的所有可能判断结果至少执 行一次。 • 对于第一个判断满足此要求。
3.2 逻辑覆盖——判定覆盖
• 判定覆盖(分支覆盖)
• 判定覆盖就是设计若干个测试用例,运行被测程序,使得 程序中每个判断的取真分支和取假分支至少经历一次。 【2, 0, 3】覆盖 ace【L1】 【1, 1, 1】覆盖 abd【L2】 或者 【3, 0, 3】覆盖 acd【L4】 【2, 1, 1】覆盖 abe【L3】 如果将x>1错写成x<1,利用上面的测试用例abe仍可得到 同样的结果;只是判定覆盖不能保证一定能查出在判断条件 中存在的错误。
软件测试技术
东北大学软件学院 吴辰铌
第三章 白盒测试
• 主要内容 • 3.1 基本概念 • 3.2逻辑覆盖 • 3.3 控制流图 • 3.4 路径测试 • 3.5 判定结构分析 • 3.6 循环测试方法 • 3.7 实际案例 • 3.8 练习
3.1 基本概念
• 也叫玻璃盒测试或结构性测试或逻辑驱动测试。 • 关注程序内部结构,按内部结构设计用例,是基于代码、设 计的测试。 • 按程序内部逻辑结构和编码结构设计测试数据的测试方法。 • 对所有逻辑路径进行测试。 • 通过在不同点检查程序的状态,确定实际的状态是否与预期 的状态一致。 • 掌握详细的系统知识,适用于开发领域。
3.1 基本概念
• 白盒测试必须遵循的几条原则
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
x=4,y=5,z=11 这个测试用例包括了一个判断均取真值的情况一个取假的 情况,这样继续设计测试用例就需要包括一个判断均取假 值的情况以及另一个判断取真值的情况,故而 2.x=2,y=5, z=5 判定覆盖较语句覆盖更为的完善,因为每个判定的分 支都执行过了,故而满足了语句覆盖,但是并没有执行过 两个条件均取真值的情况,因而并不充分,所以有了条件 覆盖较为完善得设计测试用例。 (3) 条件覆盖 上述讲到判定覆盖也不是太充分,所以条件覆盖指的是要 使判定表达式的各个条件均分别取真值或假值个至少一次。 分析上述实例可以得到共有四个条件,,分别为 X>3, Z<10, X=4, Y<5, 根据条件覆盖可以得到三个测试用例分别为 1:x=4,y=6, z=5; 2:x=2,y=6,z=5,; 3:x=4,y=5,z=15; 这三个测试用例覆盖了上面的四个条件,在执行的过程中 我们会发现这三个测试用例虽然满足条件覆盖,但是第二个判 断表达式并没有取过假值,故而我们发现条件覆盖并不一定能 过包含判定覆盖,这种覆盖方式也同样不充分,所以有一种新 的覆盖方式,将判定覆盖于条件覆盖结合在一起使用使程序的 测试更加完善。 (4) 判定条件覆盖 上述中条件覆盖的测试用例并没有将判定覆盖包含在内, 所以在设计测试用例的时候让它同时满足判定覆盖以及条件覆 盖,这样的方式较前两种更为充分一些 针对上述的实例我们可以设计测试用例为 1:x=4,y=6, z=5; 2:x=2,y=5,z=15,; 这两个测试用例包含了四个条件各自取一次真值一次假值
代码的检查主要通过桌面检查、代码审查、走查等方式来 检查代码和设计的一致性、代码的可读性、逻辑表达的正确性 等等。
桌面检查通常都是由程序的开发人员进行的,由于他们对 编写的代码理解程度高,往往能发现在编码过程中出现的一些 问题。代码审查由测试人员以及开发人员一起组成审查小组, 根据一系列的文档,通过分析代码以及文档来对代码进行测试, 发现其中出现的缺陷和错误。走查则是分析代码的逻辑运行来 设计一些测试用例,从逻辑的角度来对代码进行测试。
Keywords Software White box testing Logic-cov不断发展,软件产业同样得到了飞速的 发展,甚至在发展的速度上超过了硬件。而伴随着发展如此之 快的软件产业,软件测试这一行业也逐渐的发展了起来,软件 测试,顾名思义就是对做的软件来进行测试的,发现软件存在 的一系列缺陷与错误,来确保软件的质量。在软件的生产过程 中,代码的编写人员有时随机地也会输入一些输入值,通过输 出值来观察代码的正确性,由于输入值的数量少以及随机性, 往往检测不出代码的一些缺陷与漏洞,效率低下。软件测试就 是采用科学的方法,用较少的测试用例、时间以及人力资源来 检测出软件中潜在的缺陷以及错误。在软件测试中有两种基本 的测试方法,黑盒测试以及白盒测试。这里先来说说白盒测试 的一些测试技术。
计算机应用与软件 程杰俊:白盒技术综述
白盒测试技术综述
程杰俊
1(南昌航空大学软件学院 江西 南昌 230063)
摘 要 白盒测试又称为透明盒测试,与黑盒测试一样为软件测试技术中最基础的测试技术,在软件生命周期中扮演着重要的 作用,是软件质量保证的一个重要手段。白盒测试主要根据程序内部的工作过程来发现缺陷,是按照程序内部的结构测试程序, 用来检验程序的各条通路是否都能正常工作。白盒测试可分为静态测试以及动态测试,静态测试不运行程序,用于纠正程序在描 述、表示以及规格上的错误。动态测试主要验证程序在检查状态下是否会发生错误。动态测试技术有路径测试、程序插桩以及逻 辑覆盖。其中逻辑覆盖尤为重要,本文会较为详细的表述逻辑覆盖等一些白盒的测试技术。
关键词 白盒测试 软件质量保证 逻辑覆盖
WHITE BOX TESTING SUMMARIZE
Cheng Jiejun
(Nanchang Hangkong University Software College, Jiangxi Nanchang 230063)
Abstract White box testing and black box testing is fundamental for software testing, Software testing is important for software life cycle, Test outside of software is black box testing , Test outside of software is white box testing, White box testing main finding defects according to the procedures of internal work process, Inspection procedures of various pathways whether can work normally. White box testing can be divided into static testing and dynamic testing, Dynamic testing can be divided into logic-coverage testing and path testing coverage and Program Instrumentation. In this article will focus on logic-coverage.
2 白盒测试
2.1 静态测试
在白盒测试里可以分为静态测试以及动态测试,静态测试 不需要程序运行,它是根据对程序源代码的分析,以及设计规 格书、常见的错误清单等一系列文档,分析设计一些测试用例, 使软件在逻辑运行,通过测试人员对逻辑输入输出进行分析, 从而发现软件的缺陷和错误。
静态测试不需要软件的运行,所以最常见的静态测试即为 编码过程中编译器来检查语法错误,静态测试里有代码的检查、 静态结构的分析等。
由图可以得到有三条独立的路径 3 7 11,3 5 7 11, 3 7 9 11 有两种得到路径总数的方法,其一按照公式环路的复杂性 为: V(G)=E-N+2 其中 E 为边的数目,N 为结点数。其二按照公式: V(G)=p+1 P 为控制流图里面判定结点的数目。环路的复杂性为构成 独立路径的上界。即环路复杂性为多少即独立路径有多少条。 故而能够设计三个测试用例来进行测试: 1:x=2 y=3 z=4 ; 2:x=5 y=3 z=4 ; 3:x=2 y=6 z=15; 这三组测试用例满足路径测试 通过这个实例我们了解了各种的测试方法都不是完全完 备的,如何正确地选择方法来设计优质的测试用例是每个测试 人员所需具备的素质,在合适的案例里选择合适的方法,使得 设计的测试用例足够优质,以尽可能少的测试用例来发现程序 中所出现的缺陷。
通过静态测试能够发现一些代码,编码风格以及一些逻辑 上的错误。
计算机应用与软件
2.2 动态测试
动态测试是设计一些测试用例运行程序,根据输出的结果 来分析程序中存在的一些问题,不同于黑盒测试,动态测试是 先分析代码,根据代码来设计测试用例,发现程序存在的逻辑 错误等。动态测试方法主要有:程序插桩、逻辑覆盖、路径测 试等方法。
4 结论
白盒测试在软件测试里是很重要的一项测试技术。能够发 现代码中存在的一些错误,白盒测试技术较黑盒测试技术较为 麻烦,但是往往能够发现一些错误,在软件测试中应用较多, 虽存在一些技术性,却不可或缺。白盒测试的一些方法往往需 要测试人员对代码了解程度较高,对程序的结构有较为深入的 了解,由于程序内部逻辑的不确定性因素较多我们不能够将每 一种可能都给做成一个测试用例,利用白盒测试的方法能够以 较少的测试用例来发现较多程序存在的错误。白盒测试技术只 是测试程序内部的错误,并没有测试需求是否完整,所以通常 情况下需与黑盒测试结合在一起,这样才能更好地发现程序的 缺陷,从而保证软件的质量。
程杰俊:白盒测试技术综述
的情况,同时也包括了判定覆盖的要求,故而判定条件覆盖更 为的充分一些,看上去条件覆盖更为充分,实则不然,在判定 表达式 X>3&&Z<10 里,当 X 不满足条件,即 X>3 取假时判定 表达式即取假值,根本不管 Z 的取值,所以并没有判断 Z 的值, 这时程序不能发现一些逻辑的错误了,同样判定条件覆盖也同 样不够充分。
图 1 程序流程图
(1) 语句覆盖 设计若干个测试用例,使得程序的每一条可执行语句都能 够被至少执行一次。 在该实例中,执行语句块有三个,故而只需设计能够执行 这三条语句的测试用例即可。通过分析可以知道 “x=4,y=5,z=6” 该测试用例满足语句覆盖。语句覆盖能够很直观地从程序 的源代码里得到测试用例,但是这样的测试用例只覆盖到了每 一条可执行的语句,并没有考虑到判定表达式取其他的情况, 不能发现某些错误,故而在逻辑覆盖准则里,语句覆盖是最弱 的,也是最不充分的。 (2) 判定覆盖 由于语句覆盖太过于不充分,因而出现了判定覆盖,判定 覆盖旨在设计测试用例,使得程序的每个判定表达式都能够至 少取一次真值与一次假值,即每个判断的真假值都被至少取到 过一次。 在该实例中有两个判定的表达式,因而需要设计测试用例, 使得两个判定表达式都取到一次真值与一次假值。通过分析我 们得到
(5) 条件组合覆盖 条件组合覆盖为设计足够多的测试用例,使得各个判定表 达式中各个条件取不同值的各种可能组合至少出现一次,在上 述的实例中有两个判定表达式,各有两个条件,所谓条件组合, 即为每个判定表达式中的条件取真假值,然后进行笛卡尔积, 经过笛卡尔积后我们能得到各个条件的组合,根据组合来设计 测试用例。 条件总共有四个,分别设为 1,2,3,4,取真为 T,假为 F,可以得到这些条件组合 T1T2, T1F2, F1T2, F1F2, T3T4, T3F4, F3T4, F3F4, 共八个,条件 1,2 为第一个判定表达式的,3,4,为第二 个判定表达式。设计测试用例为: T1T2T3T4:x=4,y=6, z=5; T1F2T3F4:x=4,y=5, z=15; F1T2F3T4:x=2,y=6, z=5; F1F2F3F4:x=2,y=5, z=15; 则可分别在前四个条件取一个,后四个条件取一个,保证 每个组合都取到即可。条件组合覆盖包含了判定覆盖以及条件 覆盖,较为充分,但是一旦程序中判定条件增多,条件组合将 会增加非常多,所需要的测试用例数量也是巨大的。 在实际的测试中我们要根据测试对象来选择覆盖方式,从 而设计优质的测试用例。 路径测试 根据上方的程序流程图可以将其映射成控制流程图如下
相关文档
最新文档