白盒测试
概念:按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。
分类:白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖、循环覆盖、基本路径覆盖。逻辑覆盖又可进一步分为语句覆盖、判定(分支)覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖等。白盒测试主要用于单元测试(我们需要了解程序源码和结构,而且基于输入输出,适合单元模块)。下面重点介绍常用的几种白盒测试方法。
语句覆盖:
定义:只要求覆盖到所有可执行语句(每个可执行语句至少运行一次),不关注判断运算,确保可执行语句处没有错误。
例子:
按照白盒,我们只需覆盖到所有可执行语句即可,而为此我们只需用测试用例(X=1,Y=4,Z=9)。这样三句话都会打印出来。但如果编码时将X=1 AND Y>3错误写成X=1 OR Y>3,虽然我们的测试用例可以覆盖到所有可执行语句,而且证明可执行语句无误,但因此我们的密码系统面临巨大风险,Y只要大于3就能攻破第一道防线。而我们对此浑然不知。所以语句覆盖不能满足我们的需求(有人说它是最弱的逻辑覆盖准则)。
判定(分支)覆盖:
定义:每个判断的取真分支和取假分支至少经历一次。弥补语句覆盖对判断逻辑的不足。
例子:同上。
- (X=1,Y=4,Z=9)—— 通过路径T->T
- (X=0,Y=4,Z=0)—— 通过路径F->F
上面两个测试用例,将两个判断条件的真假值都遍历了,