传说中的面试必杀题-->六种白盒测试方法

2010-05-06  苗志伟 

先介绍一些废话:
 
白盒测试目的
通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试;在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
 
白盒测试特点
依据软件设计说明书进行测试、对程序内部细节的严密检验、针对特定条件设计测试用例、对软件的逻辑路径进行覆盖测试。
 

白盒测试实施步骤

1、测试计划阶段:根据需求说明书,制定测试进度。
2、测试设计阶段:依据程序设计说明书,按照一定规范化的方法进行软件结构划分和设计测试用例。
3、测试执行阶段:输入测试用例,得到测试结果。
4、测试总结阶段:对比测试的结果和代码的预期结果,分析错误原因,找到并解决错误。

 

白盒测试优点

1、迫使测试人员仔细思考软件的实现

2、可以检测代码中的每条分支和路径
3、揭示隐藏在代码中的错误
4、对代码的测试比较彻底


白盒测试缺点

1、昂贵
2、无法检测代码中遗漏的路径和数据敏感性错误
3、不验证规格的正确性

 

第二部分废话(测试方法说明):

 

一、语句覆盖

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

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

 3、缺点:由于这种测试方法仅仅针对程序逻辑中显式存在的语句,但对于隐藏的条件和可能到达的隐式逻辑分支,是无法测试的。

 

二、判定覆盖

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

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

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

 

三、条件覆盖

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

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

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

 

四、判定/条件覆盖

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

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

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

 

五、组合覆盖

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

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

3、缺点:线性增加测试用例的数量。

 

六、路径覆盖

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

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

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

1227°/12151 人阅读/12 条评论 发表评论

刘俊  2010-05-06

一直在搞自动化测试,觉得白盒测试很神秘很高深


张挺  2010-05-06

这篇文章我看是比较旧的了。

白盒测试昂贵的原因:
1.需要设计一个对unit进行测试的环境,包括
1.1一个建立和清除测试的方法
1.2需要有执行指定用例的方法
1.3分析测试输出结果
1.4执行用例出错时的报告
2.需要设计桩和驱动
所以往往白盒测试用的代码远比被测代码要长

但是这些都是老黄历了。。。十年前国际上已经基本解决这些问题(参PNSQC2000会议的Methods For Effective C/C++ Unit Testing,A.Kolawa,C.Dunlop),也就是已经有了自动化的白盒测试框架,至今这些框架都很成熟了。白盒测试现在完全不昂贵,但我们国内的软件测试水平落后国际水平大约20年,所以至今国内仍没有走到这一步。

至于其他的缺点比如不能验证语句的遗漏,不能验证永远执行不到的语句,不能验证一些特殊的值,不能验证是否符合功能需求,这都是仍存在的问题。但是执行白盒测试弊大于利是肯定的。


苗志伟  2010-05-06

张挺: 这篇文章我看是比较旧的了。

白盒测试昂贵的原因:
1.需要设计一个对unit进行测试的环境,包括
1.1一个建立和清除测试的方法
1.2需要有执行指定用例的方法
1.3分析
别忘记 我们天朝圣国现在仍然处于社会主义初级阶段,白盒测试题不过是拿出来充充面子,黑盒测试都做不好,何况白盒?

公司面试笔试白盒,绕不出这些陈旧的废话
就像我们大学4年学到的一样,除了吃喝玩乐,剩下的就是个屁啊!


张静  2010-05-07

白盒测试,在公司中运用的比较少,主要的还是黑盒测试......


苗志伟  2010-05-07

张静: 白盒测试,在公司中运用的比较少,主要的还是黑盒测试......
只要按时发钞票,做什么已经不重要了 。


胡名海  2010-05-11

考试用用还行的,毕竟我们的考官有部分还是喜欢老口味。如果公司要做的话,既然能做白盒,不如干脆敏捷了,毕竟相同的代价,敏捷的效率要高很多。


王朋  2010-05-14

能提供个测试的实例就好了,特别是白盒测试的测试用例文档,感谢楼主的文章!


王朋  2010-05-14

苗志伟: 只要按时发钞票,做什么已经不重要了 。
恩,这个是最总要的~~


刘凯君  2010-05-26

王朋: 能提供个测试的实例就好了,特别是白盒测试的测试用例文档,感谢楼主的文章!
理论已看过N遍,企盼实例讲解


李长洪  2010-05-27

不懂白盒


袁帅  2011-07-28

苗志伟: 只要按时发钞票,做什么已经不重要了 。
- -!


登录 后发表评论