[软件测试]白盒测试

一、定义

  白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,白盒指的是程序的内部结构和运作机制是可见的。

二、目的

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

三、白盒测试的方法

大致分为静态方法和动态方法两大类。

A. 静态分析

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

B. 动态分析

  当软件系统在模拟或真实的环境中执行前、过程中和执行后,对其行为分析。它显示了一个系统在检查状态下是否正确。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。

四、逻辑覆盖法设计测试用例:

1.语句覆盖

【定义】:设计若干测试用例,运行被测程序,使程序中每个可执行语句至少执行一次。
【优点】 :可以很直观地从源代码得到测试用例,无须细分每条判定表达式。
【缺点】 :由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件是无法测试的。如在多分支的逻辑运算中无法全面的考虑。语句覆盖是最弱的逻辑覆盖。

2.判定覆盖

【定义】: 设计若干测试用例,运行被测程序,使得程序中每个分支的取真值和取假值至少一次,即判断真假值均曾被满足。
【优点】:判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。
【缺点】:往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。

3.条件覆盖

【定义】:设计若干测试用例,执行被测程序以后要使每个判断中每个条件的可能取值至少满足一次。

判断M表达式:

设条件 a>0 取真记为 T1 ;假F1
条件 b>0 取真记为 T2 ;假F2

判断Q表达式:

设条件 a>1 取真记为 T3 ;假F3
条件 c>1 取真记为 T4 ;假F4
我们用条件覆盖设计的思想就是让测试用例能覆盖T1、T2、T3、T4、F1、F2、F3、F4
【优点】:增加了对条件判定情况的测试,增加了测试路径。
【缺点】:条件覆盖不一定包含判定覆盖。例如,我们刚才设计的用例就没有覆盖判断M的Y分支和判断Q的N分支。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

4.判定-条件覆盖

【定义】:设计足够的测试用例,使得判断条件中的所有条件可能至少执行一次取值,同时,所有判断的可能结果至少执行一次。
测试用例要满足如下条件:1.所有条件可能至少执行一次取值;2.所有判断的可能结果至少执行一次。
【优点】:能同时满足判定、条件两种覆盖标准。
【缺点】:判定/条件覆盖准则的缺点是未考虑条件的组合情况。

5. 条件组合覆盖

【定义】:设计足够的测试用例,使得所有可能的条件取值组合至少执行一次。
【优点】:条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。
【缺点】:线性地增加了测试用例的数量。

6.路径覆盖

【定义】:设计所有的测试用例,来覆盖程序中的所有可能的执行路径 。
【优点】:这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。
【缺点】:需要设计大量、复杂的测试用例,使得工作量呈指数级增长,不见得把所有的条件组合都覆盖。

覆盖强弱比较:

语句 < 判定 < 条件 < 判定-条件 < 条件组合 < 路径

全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
10-14 13:25
已编辑
门头沟学院 C++
点赞 评论 收藏
分享
点赞 4 评论
分享
牛客网
牛客企业服务