第02章_白盒测试
白盒测试课件

白盒测试课件白盒测试课件在软件开发的过程中,测试是一个不可或缺的环节。
而在测试中,白盒测试是一种重要的测试方法。
本文将介绍白盒测试的概念、原理和常用技术,并探讨其在软件开发中的应用。
一、白盒测试的概念白盒测试,顾名思义,是指对软件内部结构的测试。
与之相对的是黑盒测试,后者只关注软件的输入和输出,而不关心其内部的实现细节。
白盒测试主要通过分析软件的源代码、设计文档和程序逻辑,来验证软件是否按照预期的要求进行运行。
二、白盒测试的原理白盒测试的核心原理是基于代码的覆盖率。
通过对软件的代码进行覆盖测试,可以确定哪些代码已经被执行,哪些代码还未执行。
通过不断迭代测试,可以逐步提高代码的覆盖率,从而提高软件的质量。
三、白盒测试的常用技术1. 代码走查:通过对代码的逐行逐句的检查,发现潜在的错误和问题。
这需要测试人员对编程语言和软件设计原则有一定的了解。
2. 逻辑覆盖测试:通过设计测试用例,覆盖软件的不同逻辑路径,以验证软件在不同情况下的行为是否符合预期。
3. 数据流分析:通过对程序中数据的流向进行分析,找出潜在的数据依赖和错误。
这有助于发现潜在的安全漏洞和错误处理问题。
4. 边界值分析:通过设计测试用例,覆盖软件输入的边界值,以验证软件在边界情况下的行为是否正确。
5. 条件覆盖测试:通过设计测试用例,覆盖软件中的不同条件判断,以验证软件在不同条件下的行为是否正确。
四、白盒测试在软件开发中的应用白盒测试在软件开发中有着广泛的应用。
首先,白盒测试可以帮助开发人员发现代码中的错误和问题,从而及早修复。
这有助于提高软件的质量和稳定性。
其次,白盒测试可以帮助开发人员优化代码的性能和效率。
通过分析代码的执行路径和数据流,可以找出潜在的性能瓶颈和优化点,从而提高软件的运行速度和响应能力。
此外,白盒测试还可以帮助开发人员发现潜在的安全漏洞和错误处理问题。
通过分析代码的数据流和条件判断,可以找出潜在的安全风险和错误处理不当的情况,从而加强软件的安全性和稳定性。
第2讲-单元测试(白盒测试)

判定/条件覆盖
测试用例
执行路 径
覆盖条件
覆盖分 支
x=4、y=6、z=5 x=2、y=5、 z=15
abd ace
T1、T2、T3、T4 -T1、-T2、-T3、-T4
bd ce
23
判定/条件覆盖
分析:从表面上看,判定/条件覆盖测试了各个判定中的 所有条件的取值,但实际上,编译器在检查含有多个条 件的逻辑表达式时,某些情况下的某些条件将会被其它 条件所掩盖。因此,判定/条件覆盖也不一定能够完全检 查出逻辑表达式中的错误。 例如:对于第一个判定(x>3)&&(z<10)来说,必须x>3和 z<10这两个条件同时满足才能确定该判定为真。如果x>3 为假,则编译器将不再检查z<10这个条件,那么即使这 个条件有错也无法被发现。对于第二个判定 (x==4)||(y>5)来说,若条件x==4满足,就认为该判定为 真,这时将不会再检查y>5,那么同样也无法发现这个条 件中的错误。
——满足判定/条件覆盖的测试用例一定同时满足判定 覆盖和条件覆盖。 判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来 的一种方法,即:设计足够的测试用例,使得判定中每 个条件的所有可能取值至少满足一次,同时每个判定的 可能结果也至少出现一次。 根据判定/条件覆盖的基本思想,只需设计以下两个测试 用例便可以覆盖4个条件的8种取值以及4个判定分支。
19
条件覆盖
根据条件覆盖的基本思想,要使上述4个条件可能产生 的8种情况至少满足一次,设计测试用例如下:
测试用例
执行路 径
覆盖条件
覆盖
分支
x=4、y=6、z=5
x=2、y=5、 z=15
白盒测试

条件覆盖
A=2,B=0,X=4 (沿路径ace执行) A=1,B=1,X=1 (沿路径abd执行)
条件覆盖
条件覆盖
条件覆盖
对例2中的所有条件取值加以标记。 对于第一个判断:
条件x>3 取真值为T1,取假值为-T1 条件z<10 取真值为T2,取假值为-T2
对于第二个判断:
条件x=4 取真值为T3,取假值为-T3 条件y>5 取真值为T4,取假值为-T4
测试覆盖标准
测试覆盖标准
上页小程序的流程图,其中包括了一个执行 达20次的循环。那么它所包含的不同执行路 径数高达520(=1013)条,若要对它进行 穷举测试,覆盖所有的路径。假使测试程序 对每一条路径进行测试需要1毫秒,同样假 定一天工作24小时,一年工作365 天, 那 么要想把如图所示的小程序的所有路径测试 完,则需要3170年。
判定/条件覆盖:设计足够多的测试用例,运行所测程序,使程序中每个 判断的每个条件的所有可能取值至少执行一次,并且每个可能的判断结果 也至少执行一次,换句话说,即是要求各个判断的所有可能的条件取值组 合至少执行一次;
条件组合覆盖:设计足够多的测试用例,运行所测程序,使程序中每个判 断的所有可能的条件取值组合至少执行一次;
分支覆盖
对例1的程序,如果设计两个例子,使 它们能通过路径ace和abd,或者通过路 径acd和abe,就可达到“判定覆盖”标 准,为此,可以选择输入数据为:
① A=3,B=0,X=1 (沿路径acd执行); ② A=2,B=1,X=3(沿路径abe执行)
分支覆盖
A=3,B=0,X=1 (沿路径acd执行) A=2,B=1,X=3 (沿路径abe执行)
入口
a (x>3)&&(z<10) No c b Yes 执行语句块1
第2讲-单元测试(白盒测试)

单元测试的方法
单元测试主要采用白盒测试方法,辅以黑盒测试 方法。白盒测试方法应用于代码评审、单元程序 检验之中,而黑盒测试方法则应用于模块、组件 等大单元的功能测试之中
6
黑盒方法和白盒方法
黑盒测试方法(Blake-box Testing),是把程序看作
一个不能打开的黑盒子,不考虑程序内部结构和内部特性 ,而是考察数据的输入、条件限制和数据输出,完成测试
60代码审查代码审查的范围和方法代码规范性的审查代码缺陷检查表61代码审查的范围和方法代码审查的目的就是为了产生合格的代码检查源程序编码是否符合详细设计的编码规定确保编码与设计的一致性和可追踪性审查的内容编程规则62代码规范性的审查代码规范性的审查将助于更早地发现缺陷代码质量的提高而且可以帮助程序员遵守规则养成好的习惯以达到预防缺陷的目的代码风格和编程规则两者不可缺一都应列入代码评审的范围里命名规则缩进与对齐注释和函数处理63代码缺陷检查表把程序设计中可能发生的各种缺陷进行分类以每一类列举尽可能多的典型缺陷形成代码缺陷检查表
16
判定覆盖
判定覆盖:通过执行足够的测试用例,使得程序中的每个 判定至少都获得一次“真”值和“假”值, 也就是使程 序中的每个取“真”分支和取“假”分支至少均经历一次 ,也称为“分支覆盖”。
要实现DoWork函数的判定覆盖,需要设计两个测试用例
测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5} 程序执行的路径分别是:abd;ace
使用acd、abe两条路径的用例也满足判定覆盖
分析:上述两个测试用例不仅满足了判定覆盖,同时还做 到语句覆盖。从这点看似乎判定覆盖比语句覆盖更强一些 ,但仍然无法确定判定内部条件的错误。例如把第二个判 定中的条件y>5错误写为y<5,使用上述测试用例,照样能 按原路径执行而不影响结果。因此,需要有更强的逻辑覆 17 盖准则去检验判定内的条件。
白盒测试的内容是什么

白盒测试的内容是什么白盒测试,又称为结构化测试或透明盒测试,是一种测试方法,旨在检查软件系统的内部结构和逻辑,以确保其功能正常且符合预期。
与黑盒测试侧重于功能和用户体验不同,白盒测试关注的是代码的覆盖率和质量,帮助开发人员发现和修复潜在的代码缺陷和漏洞。
白盒测试的主要内容1.代码覆盖率测试–语句覆盖:确保每个代码语句都被执行过至少一次。
–分支覆盖:检查每个控制结构的每个分支是否都被覆盖。
–条件覆盖:测试每个条件语句的每个取值情况。
2.代码质量评估–静态代码分析:通过工具分析代码,查找代码中潜在的错误和不规范之处。
–代码审查:由开发者、测试人员等对代码进行仔细检查,发现潜在问题。
3.单元测试–测试单元:以函数、方法或模块为单位进行测试,验证其功能的正确性。
–覆盖所有路径:确保每个代码路径都被覆盖到,包括正常路径和异常路径。
4.集成测试–测试模块间的交互:确保不同模块之间的接口和数据交换正常工作。
–检查系统整体功能:验证整个系统的功能以及各部分的协调性。
5.性能测试–查找性能瓶颈:通过模拟不同负载下的系统运行来评估系统的性能。
–测量资源消耗:分析系统在不同工作量下的资源消耗情况,如 CPU 使用率、内存占用等。
白盒测试的优势•早期发现问题:白盒测试能够在代码编写阶段就发现潜在问题,有利于早期修复。
•提高代码质量:通过代码覆盖率和质量评估,帮助提高代码质量和可维护性。
•减少后期成本:及早发现并解决问题可以降低软件维护和修复成本。
总的来说,白盒测试是一种全面、深入的测试方法,可以有效地提高软件质量,减少软件项目中的风险和错误。
通过不同的测试内容和方法,白盒测试可以帮助开发团队更好地了解和掌握软件系统的内部结构,从而提供更稳定、可靠的软件产品。
白盒测试方法

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

白盒测试白盒测试概述白盒测试又称透明盒测试,逻辑驱动测试是测试被测单元内部如何工作的一种测试方法允许测试人员根据程序内部逻辑结构及有关信息来设计和选择测试用例,对程序的逻辑结构进行测试可覆盖全部代码、分支、条件和路径目的:保证程序中所有关键路径的测试,防止由于没有执行的路径在实际投入运行后执行到发生意外的情况衡量测试完整性程序内部所有的逻辑值真、假两个分支的覆盖检查内存泄露异常处理的分枝语句的执行解决实验条件下很难搭建真实环境的问题检查代码符合一定的编码规范,减少由于编码不规范而引入错误白盒测试和黑盒测试比较联系:白盒测试和黑盒测试都是软件测试的一个方面;两者有时结合起来同时进行测试,称为“灰盒测试”。
区别:白盒,需要源代码;无法检测程序外部特性,无法测试遗漏需求;关心程序内部结构、逻辑以及代码的可维护性;编码、集成测试阶段进行。
黑盒,不需要源代码,需要可执行文件;从用户角度出发进行测试;关心程序的外在功能和非功能表现;确认测试、系统测试阶段进行。
白盒测试的策略桌前检查开发人员的自我检查在指定功能实现后,单元测试前,对代码进行初步检查重点是代码对编码规范的符合性单元测试单元:函数、过程、类在桌前检查后进行,大部分由开发人员完成主要测试功能,并覆盖程序中的语句和分析等达到逻辑覆盖准则。
代码评审(代码审查):源代码的同行评审编码初期或编码过程中有同行参与的一个代码评审活动重点是代码风格的一致性和对编码规范的遵守程度可以帮助发现问题,拓展开发人员思路依据《代码检查单》进行同行评审来源CMM检查工作产品是否满足了以往工作产品中建立的规范识别工作产品相对于标准的偏差,包括可能影响软件可维护性的问题向创建者提出改进意见促进参与者之间技术交流和学习代码走查由专门的代码走查小组或测试组进行需要开发人员提交有关的资料文档和源代码,并进行必要的讲解静态分析测试小组进行辅助工具支持对源代码进行质量评估静态分析报告、代码质量报告白盒测试对测试人员的要求了解软件语言了解软件开发技术有开发经验最好掌握白盒测试工具掌握白盒测试用力设计方法掌握开发人员编程中容易出现的问题,不断积累经验代码质量对软件质量的贡献代码是软件产品中的重要部分代码质量反映软件质量其他非代码因素也起着关键作用文档(设计、帮助、用户手册)制约程序员编写高质量代码的因素对需求和设计的理解不透澈对软件业务流程不熟悉没有开发经验对开发工具或开发语言不熟悉受情绪因素的影响等因素管理机制不健全静态白盒测试:检查设计和代码静态测试是指测试非运行部分——检查和审查,白盒测试是指访问代码,能够查看和审查静态白盒测试是指在不执行软件的条件下有条理的仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时候成为结构化分析。
白盒测试

白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。
利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试又称为结构测试和逻辑驱动测试。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
如何挑选白盒测试工具白盒测试目前主要用在具有高可靠性要求的软件领域,例如:军工软件、航天航空软件、工业控制软件等等。
白盒测试工具在选购时应当主要是对开发语言的支持、代码覆盖的深度、嵌入式软件的测试、测试的可视化等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
public class Math { ... // class member public int factorial(int n) { int fact = 1; try { if (n < 0) { throw new Exception("parameter n is out of the range."); } else if (n < 2) { fact = 1; } else if (n < 13) { fact *= factorial(n-1); } else { throw new Exception("parameter n is out of the range."); } } catch(Exception excep) { MessageBox.Show(excep.Message); } return fact; } }
10
– 五个方面的重点
• 白盒测试的重点及其对策
– 五个方面的测试具体作法
• 模块接口
– 模块的实际输入与定义的输入是否一致,包括检查参数个 数、类型、顺序等。 – 模块中对于非内部或非局部变量是否合理使用。 – 使用其他模块时,是否检查该模块的可用性和处理结果。 – 使用外部资源时,是否检查了可用性并及时释放资源,这 些资源,包括内存、文件、硬盘、端口等。
• 审查者
– 通常开发小组的程序员就是组织和执行审查的人员
2011.09.23 4
• 静态白盒测试和动态白盒测试
– 静态白盒测试
• 错误观点
– 审查耗时太多 – 费用太高 – 没有实际的工作
• 不作的后果
– – – – 在项目接近完成时的错误很难被找到 找到错误时,修改后影响范围大 软件维护工作加大 大型项目失败的原因之一
– 五个方面的测试具体作法
• 执行路径
– 程序中是否存在死代码。 – 程序中是否存在错误的计算优先级。 – 程序中是否存在精度错误,例如:比较运算错误、赋值错 误、类型转换错误。 – 表达式使用不正确符号,例如:应该使用“>”,却用了 “>=”或者“<”。 – 循环变量的使用错误,例如:错误赋值。
2011.09.23
– 只考虑跳过整个循环、循环一次、两次、m(m<n)次、以及分别 循环 (n-1)、n、(n+1) 次等情况。
• 嵌套循环
– 从内层开始,所有外层的循环次数为最小,内层循环按简单循环 策略。 – 由内向外,外层仍取最小、内层取典型值。
2011.09.23
18
• 白盒测试的测试用例设计方法
– 路径测试 – 例子
• 静态白盒测试 • 动态白盒测试
– 静态白盒测试是指狂不执行的条件下有条理地仔细审 查软件设计、体系结构和代码,从而找出软件缺陷的过 程。 – 动态白盒测试是指测试运行中的程序,并利用查看代 码功能和实现方式得到的信息来确定哪些需要测试、 哪些不需要测试、如何开展测试,从而设计和执行测 试,找出软件缺陷的过程。
2011.09.23
5
• 静态白盒测试和动态白盒测试
– 动态白盒测试
• 四个部分
– 直接测试底层功能、过程、子程序和库(API)。 – 以完整程序的方式从顶层测试软件,且根据对软件运行的 了解调整测试案例。 – 从软件获得读取变量和状态信息的访问权,以便确定测试 与预期结果是否相符,同时,强制软件以正常测试难以实 现的方式运行。 – 估算执行测试时覆盖的代码量和具体代码,然后调整测试, 去掉多余的,补充遗漏的。
第二章 白盒测试
2011.09.23
1
内容
• • • • • • 静态白盒测试和动态白盒测试 白盒测试的重点及其对策 白盒测试的测试用例设计方法 白盒测试的覆盖准则 白盒测试的工具 代码的持续集成及其对测试的影响
2011.09.23
2
• 静态白盒测试和动态白盒测试
– 白盒测试关心软件内部设计和程序实现 – 测试依据是(详细)设计文档 – 测试方法
• 定义-使用链
– c-use : 从定义语句到包含了计算使用的语句的路径 » 前面例子中的 ave:⑴ ⑵ ⑶ ⑼ ⑾ – p-use : 定义语句到对该变量进行判断使用的语句的两个后 继语句的路径 » 前面例子中的 i:⑴ ⑵ ⑶ ⑼
2011.09.23 21
• 白盒测试的覆盖准则
– 逻辑覆盖要做到全面而不遗漏,是不太可能的。 因此,在测试时,应该有重点地对容易发生问 题的的地方设计测试用例。 – ESTCA覆盖准则
14
• 白盒测试的重点及其对策
– 五个方面的测试具体作法
• 出错处理
– 是否检查错误出现,尤其是在资源使用前后或者使用其他 模块前后。 – 如果出现错误,是否进行错误处理,包括抛出错误、通知 用户并进行记录。 – 错误处理是否有效,是否在系统干预前处理,报告和记录 的错误是否真实详细。
2011.09.23
• 规则三:对外部输入变量赋值,使其在每个测试用例中均有不 同的值和符号,并与同一组测试用例中其他变量的值与符号不 一致。即变量在不同测试用例中使用不同的值,避免变量名写 错,避免应该使用变量的地方却使用了常量。 • 这三个规则主要围绕发生问题的区域进行测试
– 优点是提高了错误的发现率 – 缺点是寻找错误的广度不够
• K. A. Foster从测试工作实践的教训出发,吸收了计 算机硬件的测试原理,提出了一种经验型的测试覆 盖准则,较好地解决了逻辑覆盖中的问题。K. A. Foster通过大量的实验,确定了程序中谓词是最容 易出错的部分,得出了一套错误敏感测试用例分析 ESTCA(Errors Sensitive Test Cases Analysis) 规则。
2011.09.23 23
• 白盒测试的覆盖准则
– LCSAJ覆盖准则
• Woodward等人提出了一种层次LCSAJ覆盖准则。 LCSAJ(Linear Code Sequence And Jump)意思 是线性代码序列与跳转。一个LCSAJ是一组顺序执 行的代码,以控制流跳转为其结束点。LCSAJ的起 点是程序的第一行或者转移语句的入口点,或者是 控制流可以跳达的点。几个首尾相接,且第一个 LCSAJ的起点是程序的起点,最后一个LCSAJ的终 点是程序终点的LCSAJ串,就组成了程序的一条路 径。一条程序路径可能由一个、两个或多个LCSAJ 构成。
2011.09.23 25
• 白盒测试的覆盖准则
– LCSAJ覆盖准则
• 以前面代码为例子:
2011.09.23
26
• 白盒测试的工具
– 白盒测试工具分类
• 白盒测试工具一般是针对代码进行测试,测试中发 现的缺陷可以定位到代码级,根据测试工具原理的 不同,分为
– 静态测试工具
静态测试工具直接对代码进行分析,不需要运行代码,也不需要对代码 编译链接,生成可执行文件。静态测试工具一般是对代码进行语法扫描, 找出不符合编码规范的地方,根据某种质量模型评价代码的质量,生成 系统的调用关系图等。静态测试工具的代表有Telelogic公司的Logiscope 软件、PR公司的PRQA软件。
• 最多输入100个正整数(0为结束),计算落在指定 范围内的值的个数、总和及平均值。
2011.09.23
19
• 白盒测试的测试用例设计方法
– 路径测试 – 例子
• 最多输入100个正整数(0为结束),计算落在指定 范围内的值的个数、总和及平均值。
– 流程图
– 课堂作业:写出所有路径图,但从⑻回到⑶后,就不再进 入循环圈中,即不再进入图中左边。下面是一个路径: ⑴⑵⑶⑼⑾
2011.09.23
11
• 白盒测试的重点及其对策
– 五个方面的测试具体作法
• 局部数据
– 变量从来没有被使用,这时可能别的地方使用了错误的变 量名。 – 变量没有初始化。 – 程序中包含了错误的类型转换。 – 程序中是否存在数组越界。 – 程序中是否存在非法指针。 – 程序中是否存在变量或函数名称拼写错误,以及使用了外 部变量或函数。
2011.09.23
12
• 白盒测试的重点及其对策
– 五个方面的测试具体作法
• 边界条件
– – – – 普通合法数据是否正确处理。 普通非法数据是否正确处理。 边界内最接近边界的(合法)数据是否正确处理。 边界外最接近边界的(非法)数据是否正确处理。
2011.09.23
13
• 白盒测试的重点及其对策
2011.09.23
6
• 白盒测试的重点及其对策
– 测试重点
• 论
– 模块是什么 – 上面五个重点是什么 – 测试这些重点要检查哪些内容
2011.09.23 7
• 白盒测试的重点及其对策
– 最小的模块是函数,如下例:factorial
• 流程图
2011.09.23
8
• 白盒测试的重点及其对策
2011.09.23 20
• 白盒测试的测试用例设计方法
– 数据流测试
• 关注变量的赋值和使用 • 使用分为两种
– c-use : Computation-Use(计算使用) » 在运算语句或输出语句中使用变量 – p-use : Predicate-Use(谓词使用/判断使用) » 非c-use的使用变量,通常就是判断语句
• 白盒测试的测试用例设计方法
– 路径测试
• 前面的例子中只有4条路径,非常简短。在实际问题中,一个 不太复杂的程序,如果有循环语句,则其路径数都是一个庞大 的数字,要在测试中覆盖这样多的路径是无法实现的。 • 执行路径测试时需要进行路径分析,了解路径数目和基本路径 数目。要对循环进行考虑,通常,循环测试的目标是检查循环 结构的有效性。 • 简单循环(循环最大次数n)