单元三-任务三-使用白盒测试方法设计测试用例
关于白盒测试的测试用例设计方法叙述
关于白盒测试的测试用例设计方法叙述下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
关于白盒测试的测试用例设计方法叙述该文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document 关于白盒测试的测试用例设计方法叙述 can be customized and modified after downloading, please adjust and use it according to actual needs, thank you! In addition, this shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary,word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!白盒测试是软件测试中的一种重要方法,它基于了解软件内部结构和源代码的原理,以验证程序的逻辑正确性、代码覆盖率和结构设计是否合理。
白盒测试用例设计方法
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(分支覆盖)。
应该注意到基本集并不唯一,实际上,给定的过程设计可派生出任意数量的不同基本集。
软件测试-3白盒测试及其用例的设计
Slide 10
第三章 白盒测试及其用例的设计
A Free sample background from
Slide 11
转化程序流程图为控制流图
A>1 and B=0
Y
X=X/A
1
2
3
1 A>1
Y
B=0
Y
2 X=X/A
4
3
第三章 白盒测试及其用例的设计
第三章 白盒测试及其用例的设计
A Free sample background from
Slide 4
白盒测试方法(续)
白盒测试也称结构测试或逻辑驱动测试,是针对被测单元 内部是如何进行工作的测试。它根据程序的控制结构设计 测试用例。 白盒测试法检查程序内部逻辑结构,对所有逻辑路径进行 测试,是一种穷举路径的测试方法。但即使每条路径都测 试过了,仍然可能存在错误。因为: 穷举路径测试无法检查出程序本身是否违反了设计规范, 即程序是否是一个错误的程序。 穷举路径测试不可能查出程序因为遗漏路径而出错。 穷举路径测试发现不了一些与数据相关的错误。
A Free sample background from
Slide 3
3.1
白盒测试方法
为什么要进行白盒测试? 如果所有软件错误的根源都可以追溯到某个唯一原因 ,那么问题就简单了。然而,事实上一个bug常常是由多个 因素共同导致的,如下图所示。 假设此时开发工作已结束,程 序送交到测试组,没有人知道代码中有 一个潜在的被 0 除的错误。若测试组 采用的测试用例的执行路径没有同时经 过x=0和y=5/x进行测试,显然测试工作 似乎非常完善,测试用例覆盖了所有执 行语句,也没有被 0 除的错误发生。
白盒测试案例
白盒测试案例白盒测试是软件测试中的一种重要测试方法,它主要针对软件内部结构进行测试,旨在检验程序中的逻辑错误、代码覆盖率和路径覆盖等问题。
下面我们将通过几个具体的案例来介绍白盒测试的应用和方法。
案例一,函数逻辑测试。
假设我们有一个简单的函数,用于计算两个整数的和。
在进行白盒测试时,我们需要考虑函数的各种可能输入和边界情况。
比如,输入为正数、负数、零等不同情况下,函数的返回值是否符合预期;输入边界情况下,比如最大值、最小值、边界值加一等情况下,函数是否能够正确处理。
同时,我们还需要测试函数的异常情况,比如输入非整数、输入为空等情况下,函数是否能够正确处理并给出合理的错误提示。
案例二,条件覆盖测试。
在一个复杂的程序中,通常会存在多个条件判断的情况,这时候我们需要进行条件覆盖测试来确保程序的每个条件都能够得到正确的覆盖。
比如,一个函数中包含了多个if-else语句,我们需要设计测试用例,使得每个条件都能够被至少一次触发,以确保程序的完整性和准确性。
在进行条件覆盖测试时,我们需要考虑各种可能的组合情况,以及条件的嵌套关系,确保每个条件都能够得到充分的测试覆盖。
案例三,路径覆盖测试。
路径覆盖测试是白盒测试中的一种重要方法,它旨在测试程序中的各个路径是否都能够被正确执行。
在进行路径覆盖测试时,我们需要分析程序的控制流图,找出所有可能的执行路径,并设计测试用例来覆盖这些路径。
通过路径覆盖测试,我们可以发现程序中隐藏的逻辑错误和潜在的漏洞,提高程序的稳定性和可靠性。
结语。
通过以上几个具体的案例,我们可以看到白盒测试在软件开发中的重要性和应用价值。
在进行白盒测试时,我们需要充分理解程序的内部结构和逻辑,设计合理的测试用例,确保程序的各个部分都能够得到充分的覆盖和测试,从而提高程序的质量和稳定性。
希望本文能够帮助大家更好地理解白盒测试,并在实际工作中加以应用。
白盒测试测试用例设计
白盒测试测试用例设计1. 简介白盒测试是一种软件测试方法,通过检查软件的内部结构和代码来验证其功能的正确性。
在白盒测试中,测试用例需要针对软件的源代码进行设计,以确保覆盖所有可能的路径和条件。
本文将介绍白盒测试测试用例的设计过程和方法。
2. 测试目标白盒测试的主要目标是验证软件的内部逻辑是否正确,能够覆盖所有的代码路径并检查各种条件下的正确性。
通过设计有效的测试用例,可以发现潜在的错误并提高软件质量。
3. 测试用例设计步骤3.1 分析代码首先需要对软件的源代码进行分析,了解每个模块的功能和内部逻辑。
通过代码分析可以确定哪些部分需要进行测试,以及可能存在的边界条件和特殊情况。
3.2 确定测试条件根据代码分析的结果,确定需要测试的条件和路径。
这些条件可以包括函数的输入范围、边界值、异常情况等。
3.3 设计测试用例根据确定的测试条件,设计具体的测试用例。
测试用例应该覆盖不同的条件和路径,以确保软件在各种情况下都能正确运行。
3.4 确认测试用例设计好测试用例后,需要经过仔细审查和确认,确保每个测试用例都能有效地检查软件的功能。
4. 示例假设有一个简单的函数用于计算两个数的和:def add(a, b):return a + b基于这个函数,可以设计以下测试用例: - 输入正整数:测试a和b都为正整数的情况。
- 输入负整数:测试a和b都为负整数的情况。
- 输入零:测试a或b 为零的情况。
- 输入浮点数:测试a和b为浮点数的情况。
- 输入特殊字符:测试a或b包含特殊字符的情况。
5. 结论白盒测试是一种重要的软件测试方法,通过设计有效的测试用例可以帮助发现潜在问题并提高软件质量。
在测试用例设计过程中,需要仔细分析代码、确定测试条件并设计具体的测试用例,以确保软件在各种情况下都能正确运行。
希望本文对读者在白盒测试测试用例设计方面有所帮助。
软件测试中如何编写单元测试用例(白盒测试)
软件测试中如何编写单元测试用例(白盒测试)测试用例(T est Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
测试用例(T est Case)目前没有经典的定义。
比较通常的说法是:指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。
内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。
不同类别的软件,测试用例是不同的。
不同于诸如系统、工具、控制、游戏软件,管理软件的用户需求更加不统一,变化更大、更快。
笔者主要从事企业管理软件的测试。
因此我们的做法是把测试数据和测试脚本从测试用例中划分出来。
测试用例更趋于是针对软件产品的功能、业务规则和业务处理所设计的测试方案。
对软件的每个特定功能或运行操作路径的测试构成了一个个测试用例。
随着中国软件业的日益壮大和逐步走向成熟,软件测试也在不断发展。
从最初的由软件编程人员兼职测试到软件公司组建独立专职测试部门。
测试工作也从简单测试演变为包括:编制测试计划、编写测试用例、准备测试数据、编写测试脚本、实施测试、测试评估等多项内容的正规测试。
测试方式则由单纯手工测试发展为手工、自动兼之,并有向第三方专业测试公司发展的趋势。
要使最终用户对软件感到满意,最有力的举措就是对最终用户的期望加以明确阐述,以便对这些期望进行核实并确认其有效性。
测试用例反映了要核实的需求。
然而,核实这些需求可能通过不同的方式并由不同的测试员来实施。
例如,执行软件以便验证它的功能和性能,这项操作可能由某个测试员采用自动测试技术来实现;计算机系统的关机步骤可通过手工测试和观察来完成;不过,市场占有率和销售数据(以及产品需求),只能通过评测产品和竞争销售数据来完成。
既然可能无法(或不必负责)核实所有的需求,那么是否能为测试挑选最适合或最关键的需求则关系到项目的成败。
选中要核实的需求将是对成本、风险和对该需求进行核实的必要性这三者权衡考虑的结果。
白盒和黑盒测试用例设计方法
1.白盒测试方法语句覆盖语句覆盖就是设计若干个测试用例, 运行所测程序,使得每一可执行语句至少执行一次. 对上面例子, 正好所有的可执行语句都在路径L1上, 所以选择路径L1来设计测试用例,就可覆盖所有的可执行语句.测试用例的设计格式如下:[输入(A,B,X), 预期的输出(A,B,X)]可设计出满足语句覆盖的测试用例是:[(2,0,4), (2,0,3)], 覆盖ace [L1]从每个执行语句都得到执行这一点来看, 语句覆盖的方法似乎能够比较全面地经验每个可执行语句. 但实际上并非如此.不足:假如该程序段中的两个逻辑运算有问题, 例如, 第一个判断中的逻辑运算符"∧"错写成了"∨", 或者第二个判断中的逻辑运算符"∨"错写成了"∧", 利用上面的测试用例, 仍然可覆盖所有4个可执行语句. 这说明虽然做到了语句覆盖测试, 但可能发现不了判断中逻辑运算中出现的错误.语句覆盖是最弱的逻辑覆盖准则.判定覆盖判定覆盖就是设计若干个测试用例, 运行所测程序, 使得程序中每个判断的取TURE分支和取FALSE分支至少经历一次. 判断覆盖又称分支覆盖.根据定义,可分别选择路径L1 和L2 或路径L3和L4设计测试用例.如果选择路径L1 和L2, 可得到满足要求的测试用例:[(2,0,4), (2,0,3)], 覆盖ace[L1][(1,1,1), (1,1,1)], 覆盖abd[L2]如果选择路径L3和L4, 可设计另一组测试用例:[(2,1,1), (2,1,2)], 覆盖abe[L3][(3,0,3), (3,1,1)], 覆盖acd[L4]可看出,测试用例的选择不唯一.不足: 假如第二个判断中的条件x>1被错写成了x<1, 利用上面两组测试用例, 仍能得到同样的结果. 这表明, 只是判断覆盖, 还不能保证一定能查出在判断的条件中存在的错误. 条件覆盖条件覆盖就是设计若干个测试用例, 运行所测程序, 使得程序中每个判断的每个条件的可能取值至少执行一次. 因此首先要对所有的条件加以标记:对第一个判断: 条件A>1 取TURE 时为T1, 取FALSE时为F1条件B=0 取TURE 时为T2, 取FALSE时为F2 对第二个判断: 条件A=2 取TURE 时为T3, 取FALSE时为F3条件x>1 取TURE 时为T4, 取FALSE时为F4根据这8个条件取值, 可分别设计如下两组测试用例:表1(第一组):表2(第二组)从表1和2可看出, 两组测试用例都满足了条件覆盖, 即覆盖了所有的条件取值.不足: 第一组测试用例不满足判定(分支)覆盖要求.判定-条件覆盖判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行一次. 也就是说要求各个判断的所有可能的条件取值组合至少执行一次.根据判定-条件覆盖的定义,只需设计下面两个测试用例便可覆盖例子的8个条件取值以及4个判断分支.不足: 表面来看, 判断-条件覆盖测试了所有条件的取值, 但实际上并非如此, 而是某些条件掩盖了另一些条件(由于多重条件判定). 例如, 对条件表达式(A>1) AND (B=0) 来说, 若(A>1)的测试结果为FALSE 时, 可以立即确定表达式的结果为FALSE, 这时往往就不再测试(B=0)的取值了, 因此, 条件(B=0)就没有被检查. 同样, 对条件表达式(A=2) OR (x>1)来说, 若(A=2)的测试结果为TURE时, 就立即确定表达式的结果为TURE, 这时, 条件(x>1)就没有被检查.因此, 采用判定-条件覆盖测试, 逻辑表达式中的错误不一定能够查得出来.条件组合覆盖条件组合覆盖就是实际足够得测试用例, 运行所测程序, 使得每个判断得所有可能得条件取值组合至少执行一次.针对上面的例子, 先对各个判断的条件取值组合加以标记:对每个判断,要求所有可能的条件取值的组合都必须取到. 每个判断各有两个条件, 所以各有4个条件取值的组合. 注: 这里没有要求第一个判断的4个组合再与第二个判断的4 个组合进行组合(16).设计4个测试用例, 就可覆盖上面8种条件组合.这些测试用例覆盖了所有条件的可能取值的组合, 覆盖了所有判断的可取分支.不足: 没有覆盖路径L4, 这样测试还不完全.路径覆盖路径测试就是设计足够的测试用例, 覆盖程序中所有可能的路径. 可设计下面的4个测试用例覆盖全部4条路径.不足: 没有全部覆盖判断的条件取值的组合. 如②③⑥测试用例的组合和优化对该例子, 采用逻辑覆盖方法中的一种,都不能满足所有需求, 如果每种方法都采用, 又有测试用例的重复. 如何用最少的测试例而实现最多的需求? 在测试设计中, 是一个值得考虑和解决的问题. 对本例子, 我们采用条件组合覆盖和路径覆盖两种方法设计测试用例, 并进行优化, 可得采用上面的6个测试用例, 可满足所有逻辑覆盖测试.注1:基本路径测试: 实际中, 一个模块中的路径可能非常多, 由于时间和资源, 不可能一一测试到. 这就需要把测试所有可能路径的目标减少到测试足够多的路径以获得对于模块的信心. 要测试的最小路径集--基本测试路径集要保证: ①每个确定语句的每一个方向要测试到;②每条语句最少执行一次.由于时间, 有关基本路径测试的方法这里省略.注2: 循环测试: 测试循环是一种特殊的路径测试. 因为循环比其他语句都复杂一些,循环测试值得一提.循环中错误的发生机会比其他代码构成部分都多.因此对于任何给定的循环的测试应该包括测试下面每一个条件的测试用例:①循环不执行;②执行一次循环;③执行两次循环;④反映执行典型的循环的执行次数;⑤如果有最大循环次数,最大循环次数减一;⑥最大循环次数;⑦大于最大循环次数. 对于增量和减量不是 1 的FOR 语句,要特别注意, 因为程序员习惯1 增量.注3: 循环嵌套: 循环嵌套使逻辑的次数呈几何级数增长. 设计测试嵌套循环的测试用例应该包括的测试条件有: ①把外循环设置为最小值并运行内循环所有可能的情况;②把内循环设置为最小值并运行外循环所有可能的情况;③把所有的循环变量都设置为最小值运行;④把所有的循环变量都设置为最大值运行;⑤把外循环设置为最大值并运行内循环所有可能的情况;⑥把内循环设置为最大值并运行外循环所有可能的情况.注4: 边界值测试: 是指专门设计用来测试当条件语句中引用的值处在边界或边界附近时系统反映的测试. 被测试语句的最好的例子就是"IF--THEN...ELSE-ENDIF"部分.这样语句的例子如:IF a<=123 THENb=1ELSEIF a>=123 THENb=2ELSEb=31ENDIF上面例子的边界值测试用例应该至少包括a的以下值: 122,123,124. 当A=123时, b=1还是2?.2.黑盒测试规范(规格)导出法规范导出的测试是根据相关的规范描述来设计测试用例。
[测试用例设计]白盒测试的测试用例设计方法
[测试用例设计]白盒测试的测试用例设计方法篇一: 白盒测试的测试用例设计方法白盒测试用例设计技术可分为逻辑覆盖和路径覆盖,逻辑覆盖又可分为以下几种,从弱到强:语句覆盖:设计足够多的测试用例,确保每条语句都被执行过。
判定覆盖:设计足够多的测试用例,确保每个判定都分别取真值与假值。
条件覆盖:设计足够多的测试用例,确保每个条件都分别取真值与假值。
判定/条件覆盖:设计足够多的测试用例,确保每个判定和条件分别取真值和假值。
条件组合覆盖:设计足够多的测试用例,确保覆盖每个判定中的各个条件的所有组合情况。
路径覆盖:设计足够多的测试用例,确保每条路径都被执行。
如果程序复杂,比如包含循环的情况,路径覆盖的测试用例数将会是个天文数字,无法实现。
可以采用简化了的路径覆盖,即将循环看成是一个判定,只考虑循环被执行和未执行两种情况。
二、最少测试用例计算方法要诀:同层相加,分层相乘。
N-S图三、圈复杂度计算圈复杂度= 节点边数-节点数+2 = 判定节点数+1 = 执行域+1圈复杂度与bug的数量有密切关心,一般来说,圈复杂度越高,bug也会越多。
篇二: 挑战类Flash游戏测试用例设计前段时间参与了Flash游戏的功能测试,发现游戏测试的内容比较的繁多,因此总结一下测试用例的编写思路,便于以后能快速进行同类游戏的用例设计。
转载标签:tda28222822葛中海电路制作功放电路杂谈6.2.2 TDA2822构成OTL电路一、原理分析由TDA2822组成的OTL电路如图6-10所示。
电路采用同相输入方式,两声道各自独立,电阻R1、R2分别连接TDA2822内部差动放大器PNP管基极,建立静态电流通路。
C1、C2外接电解电容「隔直通交」,给取样电阻到地之间提供交流通路。
输出耦合电容取值220uF~470uF,负载两端并联RC保护电路。
图6-10 TDA2822组成OTL电路二、实际测试1.直流测试输入电源电压为5V,空载时测试TDA2822各引脚电压,如表6-2。
白盒测试设计用例的方法
白盒测试设计用例的方法
1. 等价类划分法呀!这就像是把东西分类一样,把可能的情况分成几大类。
比如说测试一个登录功能,那就可以把用户名和密码的正确、错误情况进行分类,分别设计用例。
哇塞,这样不就能全面覆盖各种情况了嘛!
2. 边界值分析法,嘿,这个可重要啦!就像走路到了边界处特别要小心一样。
比如规定输入年龄在 18 到 60 岁,那 18 和 60 这两个边界值就得好好测试呀,这不是很容易理解嘛!
3. 因果图法呢,哎呀,就像是顺着线索找原因和结果。
比如有多个条件影响一个结果,那咱就得好好分析这些条件之间的关系,然后设计用例,不是挺有意思嘛!
4. 判定表法呀,这就好像是做一个决策表格似的。
对于复杂的条件组合,通过判定表清晰地列出来,然后得出对应的用例,是不是很厉害呢!
5. 正交试验法哦,听着就很牛掰吧!就像是从很多因素中选出最关键的组合来进行测试。
比如有多个参数要考虑,用这个方法就能高效地选出典型组合进行用例设计,是不是超级有用呀!
6. 场景法呢,哇哦,这简直就是在模拟一个场景片段呀!想想一个业务流程,从开始到结束,设计出符合各种场景的用例,这多生动形象呀,当然能把测试做好啦!
我觉得这些白盒测试设计用例的方法都超级棒,各有各的厉害之处,用好了就能让测试工作如虎添翼呀!。
白盒测试及用例设计
白盒测试白盒测试(White-box Testing,又称逻辑驱动测试,结构测试)是把测试对象看作一个打开的盒子。
利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
白盒测试又称为结构测试和逻辑驱动测试。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。
语句覆盖每条语句至少执行一次。
判定覆盖每个判定的每个分支至少执行一次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满足判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
路径覆盖使程序中每一条可能的路径至少执行一次。
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。
"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
"白盒"法是穷举路径测试。
在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
贯穿程序的独立路径数是天文数字。
但即使每条路径都测试了仍然可能有错误。
第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。
第二,穷举路径测试不可能查出程序中因遗漏路径而出错。
第三,穷举路径测试可能发现不了一些与数据相关的错误。
白盒测试六种覆盖方法摘要:白盒测试作为测试人员常用的一种测试方法,越来越受到测试工程师的重视。
白盒测试并不是简单的按照代码设计用例,而是需要根据不同的测试需求,结合不同的测试对象,使用适合的方法进行测试。
白盒测试用例设计方法
白盒测试用例设计方法:常用的黑盒测试用例设计方法有等价类划分法、边界值测试法、决策表法、错误猜测法以及场景法,在进行黑盒测试用例设计时的主要依据是软件系统规格说明书,因此在进行黑盒测试之前必须保证软件系统规格说明书是经过审核的,如果未经审核,则需要进行探索式测试。
等价类划分法是指将输入数据进行等价类划分,划分依据为系统的预期结果,隶属于同一个等价类的输入数据会引发相同的预期结果,并且吻合相同的输入规范。
边界值测试法是对等价类划分法的一种补充,对于每个等价类来说,都会存在类的边缘,经研究证明,边缘的数据更容易在系统运行中产生问题,因此边界值方法是一种非常必要的方法。
决策表方法适合于解决多个逻辑条件的组合。
判定表包括条件桩、条件项、动作桩、动作项。
条件桩中列出所有执行条件,次序无关;条件项中列出所对应条件的所有可能情况下的取值;动作桩中列出可能采取的操作,次序无关;动作项中列出条件项各种取值情况下采取的操作。
错误推测法定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法。
错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
场景法:ERP系统本身是一种业务流程很复杂,单据报表众多,逻辑性很强的系统,质量保证方面很难得到严格的控制的软件系统,在测试过程中经常会出现测试设计遗漏、测试执行遗漏等问题发生,一般的ERP系统设计大概包括以下几方面:功能测试、业务流程测试、数据逻辑测试、接口测试、兼容性测试、性能测试、易用性测试、用户体验测试等等;在针对ERP系统的测试过程中,必须具有清晰的测试设计思路,搭建基本的测试设计框架;其次熟悉所要设计的系统或者模块的业务,所要实现的功能;然后灵活运用常用的测试设计方法(等价类、边界值、错误猜测、路径分析法、场景法、正交验证法……用例设计方法);最后运用比较合理统一的风格和模板进行设计测试用例;“业务场景、业务流程、数据逻辑”是关键,业务理解清楚是做好ERP测试的基础;ERP系统测试用例分为几类来写比较好:功能用例、业务流程用例、数据逻辑用例、接口用例,最好是把功能与流程类的测试用例分开来写;就个人而言,设计覆盖率高、冗余度低的测试用例应该从以下几个方面入手:一、功能用例设计:相对而言比较简单,根据需求规格说明书、界面原型提取测试功能点/项,运用等价类、边界值、错误猜测、正交表等基本用例设计方法来设计,结合经验积累完善用例设计就可以搞定,难度不大;需要根据文档/功能点/业务的变化进行修订/细化用例,提高功能用例的覆盖度;关于功能用例设计的方法和文章有很多,都可以借鉴和参考增加自身的经验积累和和知识沉淀。
单元三-任务三-使用白盒测试方法设计测试用例
x=4、y=5、z=15
ace
ce
判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定 包含的每个条件的所有情况(真/假)至少出现一次,并且每个 判定本身的判定结果(真/假)也至少出现一次。 ——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条 件覆盖。 判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种 方法,即:设计足够的测试用例,使得判定中每个条件的所有可 能取值至少满足一次,同时每个判定的可能结果也至少出现一次。 根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便 可以覆盖4个条件的8种取值以及4个判定分支。
根据条件覆盖的基本思想,要使上述4个条件可能产生的 8种情况至少满足一次,设计测试用例如下: 测试用例 x=4、y=6、z=5 x=2、y=5、 z=15 执行路径 abd ace 覆盖条件 T1、T2、 T3、T4 -T1、-T2、 -T3、-T4 覆盖分支 bd ce
分析:上面这组测试用例不但覆盖了4个条件的全部8种情况,而且将两个 判定的4个分支b、c、d、e也同时覆盖了,即同时达到了条件覆盖和判定覆 盖。
根据组合覆盖的基本思想,设计测试用例如下: 测试用例 x=4、y=6、z=5 x=4、y=5、z=15 x=2、y=6、z=5 x=2、y=5、z=15 执行路径 abd acd acd ace 覆盖条件 覆盖组合号 T1、T2、 1和5 T3、T4 T1、-T2、 2和6 T3、-T4 -T1、T2、 3和7 -T3、T4 -T1、-T2、 4和8 -T3、-T4
分析:上面这组测试用例覆盖了所有8种条件取值的组合,覆盖了所有判定的 真假分支,但是却丢失了一条路径abe。
白盒测试及用例的设计
条件覆盖率
详细描述
为了提高条件覆盖率,可以增加 更多的测试用例或优化现有的测 试用例。
04
总结词
高条件覆盖率意味着测试用例对 程序中的条件进行了全面的测试, 但并不能保证所有可能的条件结 果都已覆盖。
01 03
总结词
条件覆盖率是衡量测试用例覆盖 程序中条件语句(如if、while等) 中的条件的程度的指标。
TestNG是Java语言的测试框架,具有灵活的测试用例 管理功能。
详细描述
TestNG支持多种测试类型,如单元测试、集成测试和 端到端测试。它提供了丰富的断言方法和数据驱动测试 ,有助于提高测试效率和代码覆盖率。
案例三:使用Selenium进行白盒测试
总结词
Selenium是一个用于Web应用程序 的自动化测试框架。
边界值分析法
总结词
边界值分析法是一种白盒测试用例设计方法 ,它关注输入域的边界值,通过测试边界值 和附近的值来验证软件的健壮性。
详细描述
边界值分析法主要针对输入域的边界值进行 测试,因为这些值在软件中往往容易出现问 题。通过测试边界值和附近的值,可以有效 地发现软件在处理异常情况时的缺陷和错误 。这种方法有助于提高测试的覆盖率,确保
详细描述
Selenium支持多种浏览器和操作系统, 能够模拟用户操作,如点击、输入等。 通过编写测试脚本,可以实现对Web 应用程序的全面白盒测试,确保功能 和用户体验的正确性。
感谢您的观看
THANKS
缺陷跟踪与修复
缺陷管理
对发现的问题进行跟踪管理,确保问题得到及时修复。
缺陷验证
对修复的问题进行验证,确保问题已被正确修复。
白盒测试及用例设计ppt课件
• 穷举途径测试不能够查出程序由于脱漏途径而出错。 • 穷举途径测试发现不了一些与数据相关的错误。
白盒测试方法〔续〕
• 采用白盒测试方法必需遵照以下几条原那么,才干到达测 试的目的:
• 保证一个模块中的一切独立途径至少被测试一次。 • 一切逻辑值均需测试真 (true) 和假 (false) 两种情况。 • 检查程序的内部数据构造,保证其构造的有效性。 • 在上下边境及可操作范围内运转一切循环。 • 白盒测试主要是检查程序的内部构造、逻辑、循环和途径
求实现的功能之间的比例关系。 • 构造覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、
途径覆盖率等等。
4.3.2 逻辑覆盖法
• 根据覆盖目的的不同,逻辑覆盖又可分为语句覆盖、断定覆 盖、条件覆盖、断定/条件覆盖、组合覆盖和途径覆盖。
• 语句覆盖:选择足够多的测试用例,使得程序中的每个可执 行语句至少执行一次。
断定覆盖〔续〕
阐明:以上仅思索了两出口的判别,我们还应把断定覆盖准
那么扩展到多出口判别〔如Case语句〕的情况。因此,断定 覆盖更为广泛的含义应该是使得每一个断定获得每一种能够 的结果至少一次。
6
2
7
1
5
10
3
8
4
9
条件覆盖
• 在实践程序代码中,一个断定中通常都包含假设干条件。条 件覆盖的目的是设计假设干测试用例,在执行被测程序后, 要使每个断定中每个条件的能够值至少满足一次。
• 根据断定/条件覆盖的根本思想,只需设计以下两个测试 用例便可以覆盖4个条件的8种取值以及4个断定分支。
测试用例 执行路径
x=4、y=6、z=5 abd
白盒测试中的测试用例设计与管理
白盒测试中的测试用例设计与管理在软件开发过程中,测试是一个至关重要的环节,能够帮助发现和修复潜在的错误和缺陷。
而测试用例的设计与管理则是测试工作中的关键步骤之一,它能够确保测试的全面性和有效性。
本文将探讨白盒测试中的测试用例设计与管理。
一、测试用例设计测试用例设计是测试工作中的核心步骤,它需要经过多方面的考虑和分析。
下面是一些常用的测试用例设计方法和技巧。
1. 功能测试用例设计功能测试用例是验证软件功能是否按照需求规格书中所定义的行为来工作的测试用例。
它可以从需求规格中提取出的功能点出发,设计相应的测试用例。
例如,在一个电商网站中,可以设计以下功能测试用例:用户登录、商品搜索、加入购物车等。
2. 边界值测试用例设计边界值测试用例是通过考察输入值的边界情况来设计的测试用例。
这是因为在边界处常常存在问题,边界条件测试能够发现潜在的边界错误。
例如,对于一个要求输入1-100之间整数的功能,可以设计以下边界值测试用例:输入1, 输入100, 输入0, 输入101。
3. 异常测试用例设计异常测试用例是为了测试系统在异常情况下的行为而设计的测试用例。
它主要是通过模拟系统可能出现的异常情况,如输入非法字符、输入空值等,来进行测试。
例如,对于一个验证邮箱格式的功能,可以设计以下异常测试用例:输入@符号、输入无效字符等。
二、测试用例管理测试用例管理是测试过程中必不可少的一环,它有助于提高测试的效率和质量。
下面是一些测试用例管理的方法和工具。
1. 用例编号和描述为了方便测试用例的管理和跟踪,可以为每个测试用例分配一个唯一的编号,并在描述中详细说明用例的目的、输入和预期结果。
这样可以使测试用例更加清晰和易于理解。
2. 测试用例库建立一个测试用例库,将所有的测试用例按模块和功能进行分类,以便于管理和查找。
可以使用Excel、测试管理工具等来创建和维护这个测试用例库。
3. 优先级和执行状态为测试用例设置优先级和执行状态,以帮助测试团队确定测试的重点和安排执行计划。
测试用例设计-白盒
b
N
X=X/A
2==A || X>1
e
Y
d
N
X=X+1
【优点】 :这种测试方法可以对程序进行彻底的测
试,比前面五种的覆盖面都广。
【缺点】 :需要设计大量、复杂的测试用例,使得
工作量呈指数级增长,不见得把所有的条件组合都覆 盖。
小结:白盒法常用的覆盖标准
1、语句覆盖: 选择足够的测试用例,使得程序
/*Description:………………………………………………… 首先,判断A大于1而且B等于0,那么X缩小A倍; 然后,判断A等于2或者X大于1,那么X递增;…………………*/
float fn_compare(float A,float B,float X) { if ((A>1) && (0==B)) { X=X/A ; } if ((2==A) || (X>1)) { X=X+1;
0==B c
Y
满足以下覆盖情况:
X=X/A
b
2==A
N Y
e
Y
选择用例: d [(2,0,4),(2,0,3)] [(2,1,1),(2,1,2)] [(1,0,3),(1,0,4)] [(1,1,1),(1,1,1)] 满足了条件组合覆盖,但没有路径完全覆盖
N
X>1
① A>1, B =0 ② A>1, B≠0 ③ A≤1, B =0 ④ A≤1, B≠0 ⑤ 2==A, X>1 ⑥ 2==A, X≤1 ⑦ A≠2, X>1 ⑧ A≠2, X≤1 ① ⑤ ace ② ⑥ abd ③ ⑦ abd ④ ⑧ abd
N
Y
float fn_compare(float A,float B,float X) { if ((A>1) && (0==B)) { X=X/A ; } if ((2==A) || (X>1)) { X=X+1; } }
白盒测试的测试用例设计方法
白盒测试的测试用例设计方法白盒测试是一种测试方法,旨在验证程序内部的结构和逻辑。
在白盒测试中,测试人员需要设计有效的测试用例来全面评估系统的功能和准确性。
本文将介绍几种常用的白盒测试用例设计方法。
一、语句覆盖(Statement Coverage)语句覆盖是一种基本的白盒测试用例设计方法。
它要求测试用例能够覆盖被测试程序中的每条语句至少一次。
通过执行每个语句,可以确保程序的基本功能正常运行。
测试人员可以通过代码走查和代码覆盖率工具来确定覆盖情况。
二、判定覆盖(Decision Coverage)判定覆盖是一种更为严格的白盒测试用例设计方法。
它要求测试用例能够覆盖每个条件语句的所有可能结果,包括真值和假值。
通过判定覆盖,可以验证程序在不同条件下的正确性。
测试人员需要对每个条件进行测试设计,确保每个结果都被覆盖到。
三、条件覆盖(Condition Coverage)条件覆盖是判定覆盖的一种补充方法。
它要求测试用例能够覆盖每个独立条件的所有可能情况。
通过条件覆盖,可以确保程序在各种条件下的正确处理。
测试人员需要考虑所有可能的条件组合,并设计相应的测试用例。
四、路径覆盖(Path Coverage)路径覆盖是一种高级的白盒测试用例设计方法。
它要求测试用例能够覆盖程序中所有可能的执行路径。
通过路径覆盖,可以全面评估程序的逻辑和流程。
测试人员需要分析代码,找出程序的所有路径,并设计测试用例来覆盖这些路径。
五、边界值覆盖(Boundary Value Coverage)边界值覆盖是一种特殊的白盒测试用例设计方法。
它要求测试用例能够覆盖每个输入和输出的边界值。
通过边界值覆盖,可以检测程序对边界情况的处理是否正确。
测试人员需要确定每个输入和输出的边界,设计测试用例来验证程序的边界处理能力。
六、错误推测(Error Guessing)错误推测是一种经验主义的白盒测试用例设计方法。
它要求测试人员根据自己的经验和直觉来猜测可能存在的错误,并设计相应的测试用例来验证。
白盒测试方法及示例
白盒测试方法及示例白盒测试,也称为结构测试或者逻辑测试,是一种测试方法,旨在检查软件的内部结构和实现是否符合预期。
下面是一些白盒测试的常见方法及示例:1. 语句覆盖(Statement Coverage):目标是确保每个代码语句都至少执行了一次。
示例:对于一个函数,测试用例需要覆盖函数中的每个语句。
2. 判定覆盖(Decision Coverage):目标是确保每个条件判断语句的每个可能路径都被覆盖。
示例:对于一个条件判断语句,需要编写测试用例,覆盖每个可能的结果分支。
3. 条件覆盖(Condition Coverage):目标是确保每个条件的真值和假值至少都被测试到。
示例:对于一个包含多个条件的逻辑表达式,需要编写测试用例使得每个条件的取值都被测试到。
4. 路径覆盖(Path Coverage):目标是覆盖一个程序的所有可能路径。
示例:对于一个复杂的程序,需要编写足够的测试用例,覆盖程序的所有可能执行路径。
5. 循环覆盖(Loop Coverage):目标是确保循环结构的执行路径中的每个部分都至少执行一次。
示例:对于一个包含循环的函数,需要编写测试用例,覆盖循环结构的各种情况。
6. 边界值分析(Boundary Value Analysis):目标是测试输入数据的边界条件。
示例:对于一个接受输入数据的函数,需要编写测试用例,测试输入数据的最小值、最大值以及接近边界的值。
7. 异常处理测试(Exception Handling Testing):目标是测试程序对于异常情况的处理能力。
示例:对于一个可能出现异常的程序,需要编写测试用例,测试程序对于异常情况的响应。
总的来说,白盒测试是通过对软件的内部结构进行检查和测试,以确保软件在各种情况下都能正确运行。
对不同类型的白盒测试方法,我们可以根据具体的测试目标和需求选择合适的方法来进行测试。
同时,通过不同的示例可以更好地理解和应用这些白盒测试方法。
白盒测试用例设计方法
白盒测试用例设计方法一、白盒测试根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
这种测试方法就是白盒测试。
白盒测试把测试对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。
不论是黑盒测试,还是白盒测试,都不可能把所有可能的输入数据都拿来进行所谓的穷举测试。
因为可能的测试输入数据数目往往达到天文数字。
下面让我们看两个例子。
假设一个程序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白盒测试中的穷举测试以上的分析表明,实行穷举测试,由于工作量过大,实施起来是不现实的。
任何软件开发项目都要受到期限、费用、人力和机时等条件的限制,尽管为了充分揭露程序中所有隐藏错误,需要针对所有可能的数据进行测试,但事实告诉我们,这样做是不可能的。
软件工程的总目标是充分利用有限的人力、物力资源,高效率、高质量、低成本地完成软件开发项目。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
说明:虽然前面的一组测试用例同时达到了条件覆盖和判 定覆盖,但是,并不是说满足条件覆盖就一定能满足判定 覆盖。如果设计了下表中的这组测试用例,则虽然满足了 条件覆盖,但只是覆盖了程序中第一个判定的取假分支c 和第二个判定的取真分支d,不满足判定覆盖的要求。 测试用例 x=2、y=6、z=5 执行路径 ace 覆盖条件 -T1、T2、 -T3、T4 T1、-T2、 T3、-T4 覆盖分支 ce
组合覆盖:通过执行足够的测试用例,使得程序中每个判定的 所有可能的条件取值组合都至少出现一次。 ——满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖 和判定/条件覆盖。 组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所 有可能的条件取值组合。 对DoWork函数中的各个判定的条件取值组合加以标记: 1、x>3, z<10 记做T1 T2,第一个判定的取真分支 2、x>3, z>=10 记做T1 -T2,第一个判定的取假分支 3、x<=3, z<10 记做-T1 T2,第一个判定的取假分支 4、x<=3, z>=10 记做-T1 -T2,第一个判定的取假分支 5、x==4, y>5 记做T3 T4,第二个判定的取真分支 6、x==4, y<=5 记做T3 -T4,第二个判定的取真分支 7、x!=4, y>5 记做-T3 T4,第二个判定的取真分支 8、x!=4, y<=5 记做-T3 -T4,第二个判定的取假分支
根据组合覆盖的基本思想,设计测试用例如下: 测试用例 x=4、y=6、z=5 x=4、y=5、z=15 x=2、y=6、z=5 x=2、y=5、z=15 执行路径 abd acd acd ace 覆盖条件 覆盖组合号 T1、T2、 1和5 T3、T4 T1、-T2、 2和6 T3、-T4 -T1、T2、 3和7 -T3、-T1、-T2、 4和8 -T3、-T4
分析:上面这组测试用例覆盖了所有8种条件取值的组合,覆盖了所有判定的 真假分支,但是却丢失了一条路径abe。
前面提到的5种逻辑覆盖都未涉及到路径的覆盖。事实上, 只有当程序中的每一条路径都受到了检验,才能使程序受 到全面检验。路径覆盖的目的就是要使设计的测试用例能 覆盖被测程序中所有可能的路径。 根据路径覆盖的基本思想,在满足组合覆盖的测试用例中 修改其中一个测试用例,则可以实现路径覆盖:
根据条件覆盖的基本思想,要使上述4个条件可能产生的 8种情况至少满足一次,设计测试用例如下: 测试用例 x=4、y=6、z=5 x=2、y=5、 z=15 执行路径 abd ace 覆盖条件 T1、T2、 T3、T4 -T1、-T2、 -T3、-T4 覆盖分支 bd ce
分析:上面这组测试用例不但覆盖了4个条件的全部8种情况,而且将两个 判定的4个分支b、c、d、e也同时覆盖了,即同时达到了条件覆盖和判定覆 盖。
N X>8 AND Y>5 Y
N
引用语句1
X>0 OR Y>0 Y 引用语句2
N
X>16 OR Y>10 Y 引用语句3
x=4、y=5、z=15
ace
ce
判定/条件覆盖:设计足够多的测试用例,使得程序中每个判定 包含的每个条件的所有情况(真/假)至少出现一次,并且每个 判定本身的判定结果(真/假)也至少出现一次。 ——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条 件覆盖。 判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种 方法,即:设计足够的测试用例,使得判定中每个条件的所有可 能取值至少满足一次,同时每个判定的可能结果也至少出现一次。 根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便 可以覆盖4个条件的8种取值以及4个判定分支。
测试用例 x=4、y=6、z=5 执行路径 abd 覆盖条件 T1、T2、T3、T4
x=4、y=5、z=15 x=2、y=5、z=15 x=5、y=5、z=5
acd ace abe
T1、-T2、T3、-T4 -T1、-T2、-T3、-T4 T1、T2、-T3、-T4
为以下流程图所示的程序段设计一组测试用例,要求分别 满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、 组合覆盖和路径覆盖。
测试用例
x=4、y=6、z=5 x=2、y=5、z=15
执行路径
abd ace
覆盖条件 T1、T2、 T3、T4 -T1、-T2、
覆盖分支
bd ce
分析:从表面上看,判定/条件覆盖测试了各个判定中的 所有条件的取值,但实际上,编译器在检查含有多个条件 的逻辑表达式时,某些情况下的某些条件将会被其它条件 所掩盖。因此,判定/条件覆盖也不一定能够完全检查出 逻辑表达式中的错误。 例如:对于第一个判定(x>3)&&(z<10)来说,必须x>3 和z<10这两个条件同时满足才能确定该判定为真。如果 x>3为假,则编译器将不再检查z<10这个条件,那么即 使这个条件有错也无法被发现。对于第二个判定 (x==4)||(y>5)来说,若条件x==4满足,就认为该判定 为真,这时将不会再检查y>5,那么同样也无法发现这个 条件中的错误。
条件覆盖:设计足够多的测试用例,使得程序中每个判定包含的 每个条件的可能取值(真/假)都至少满足一次。 在实际程序代码中,一个判定中通常都包含若干条件。 条件覆 盖的目的是设计若干测试用例,在执行被测程序后,要使每个判 定中每个条件的可能值至少满足一次。 对DoWork函数的各个判定的各种条件取值加以标记。 对于第一个判定( (x>3)&&(z<10) ): 条件x>3 取真值记为T1,取假值记为-T1 条件z<10 取真值记为T2,取假值记为-T2 对于第二个判定( (x==4)||(y>5) ): 条件x==4 取真值记为T3,取假值记为-T3 条件y>5 取真值记为T4,取假值记为-T4
逻辑覆盖 路径测试
1.
2. 3. 4. 5.
白盒测试中的逻辑覆盖方法有以下5种: 语句覆盖 判定覆盖 条件覆盖 判定-条件覆盖 条件组合覆盖
void DoWork (int x,int y,int z) { int k=0,j=0; if ( (x>3)&&(z<10) ) { k=x*y-1; j=sqrt(k); } //语句块1 if ( (x==4)||(y>5) ) { j=x*y+10; } //语句块2 j=j%3; //语句块3 }
任务三、使用白盒测试方法设计测试用例
能够使用逻辑覆盖法设计测试用例 能够使用路径覆盖法设计测试用例
白盒测试也称结构测试或逻辑驱动测试,是针对 被测单元内部是如何进行工作的测试。它根据程 序的控制结构设计测试用例,主要用于软件或程 序验证。 白盒测试的优点与局限 与黑盒测试相比,白盒测试深入到程序内部进行, 更易于定位错误的原因和具体位置,弥补了黑盒测 试只能从程序外部进行测试的不足
a
F X>3 && z<10 T b 执行语句块1 X==4 || y>5 F
e c
T d
执行语句块2 执行语句块3
语句覆盖:选择足够多的测试用例,使得程序中的每个可执行语 句至少执行一次。 要实现DoWork函数的语句覆盖,只需设计一个测试用例就可以 覆盖程序中的所有可执行语句。 测试用例输入为:{ x=4、y=5、z=5 } 程序执行的路径是:abd 分析: 语句覆盖可以保证程序中的每个语句都得到执行,但发现 不了判定中逻辑运算的错误,即它并不是一种充分的检验方法。 例如在第一个判定((x>3)&&(z<10))中把“&&”错误的写成了 “||”,或者把x>3误写成x >2,这时仍使用该测试用例,则程 序仍会按照流程图上的路径abd执行。可以说语句覆盖是最弱的 逻辑覆盖准则。
判定覆盖:通过执行足够的测试用例,使得程序中的每个判定至 少都获得一次“真”值和“假”值, 也就是使程序中的每个取 “真”分支和取“假”分支至少均经历一次,也称为“分支覆 盖”。 要实现DoWork函数的判定覆盖,需要设计两个测试用例。 测试用例的输入为:{x=4、y=5、z=5};{x=2、y=5、z=5} 程序执行的路径分别是:abd;ace 分析: 上述两个测试用例不仅满足了判定覆盖,同时还做到语句 覆盖。从这点看似乎判定覆盖比语句覆盖更强一些,但仍然无法 确定判定内部条件的错误。例如把第二个判定中的条件y>5错误 写为y<5,使用上述测试用例,照样能按原路径执行而不影响结 果。因此,需要有更强的逻辑覆盖准则去检验判定内的条件。