1.白盒测试
白盒测试,又称结构测试,主要用于单元测试阶段。它的前提是可以把程序看成装在一个透明的白箱子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否都能按预定要求正常工作。
白盒测试根据软件的内部逻辑设计测试用例,常用的技术是逻辑覆盖,主要的覆盖标准有 6 种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖。
(1)语句覆盖。语句覆盖是指选择足够多的测试用例,使得运行这些测试用例时,被测程序的每个语句至少执行一次。 很显然,语句覆盖是一种很弱的覆盖标准。
(2)判定覆盖。判定覆盖又称分支覆盖,它的含义是,不仅每个语句至少执行一次,而且每个判定的每种可能的结果(分支)都至少执行一次。判定覆盖比语句覆盖强,但对程序逻辑的覆盖程度仍然不高。
(3)条件覆盖。条件覆盖的含义是,不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取得各种可能的结果。条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖。
(4)判定/条件覆盖。同时满足判定覆盖和条件覆盖的逻辑覆盖称为判定/条件覆盖。
它的含义是,选取足够的测试用例,使得判定表达式中每个条件的所有可能结果至少出现一
次,而且每个判定本身的所有可能结果也至少出现一次。
(5)条件组合覆盖。条件组合覆盖的含义是,选取足够的测试用例,使得每个判定表达式中条件结果的所有可能组合至少出现一次。
显然,满足条件组合覆盖的测试用例,也一定满足判定/条件覆盖。因此,条件组合覆盖是上述 5 种覆盖标准中最强的一种。然而,条件组合覆盖还不能保证程序中所有可能的路径都至少经过一次。
(6)路径覆盖。路径覆盖的含义是,选取足够的测试用例,使得程序的每条可能执行到的路径都至少经过一次(如果程序中有环路,则要求每条环路路径至少经过一次)。
2.黑盒测试
黑盒测试,又称功能测试,主要用于集成测试和确认测试阶段。它把软件看作一个不透明的黑箱子,完全不考虑(或不了解)软件的内部结构和处理算法,它只检查软件功能是否能按照软件需求说明书的要求正常使用,软件是否能适当地接收输入数据并产生正确的输出信息,软件运行过程中能否保持外部信息(例如文件和数据库)的完整性等。
黑盒测试根据软件需求说明书所规定的功能来设计测试用例,它不考虑软件的内部结构和处理算法。
常用的黑盒测试技术包括等价类划分、边值分析、错误推测和因果图等。
(1)等价类划分
在设计测试用例时,等价类划分是用得最多的一种黑盒测试方法。
所谓等价类就是某个输入域的集合,对于一个等价类中的输入值来说,它们揭示程序中错误
的作用是等效的。也就是说,如果等价类中的一个输入数据能检测出一个错误,那么等价类
中的其他输入数据也能检测出同一个错误;反之,如果等价类中的一个输入数据不能检测出
某个错误,那么等价类中的其他输入数据也不能检测出这一错误(除非这个等价类的某个子
集还属于另一等价类)。
无效等价类是用来测试非正常的输入数据的,因此每个无效等价类
都有可能查出软件中的错误,所以要为每个无效等价类设计一个测试用例。
(2)边值分析
经验表明,软件在处理边界情况时最容易出错。设计一些测试用例,使软件恰好运行在边界附近,暴露出软件错误的可能性会更大一些。
通常,每一个等价类的边界,都应该着重测试,选取的测试数据应该恰好等于、稍小于或稍大于边界值。
(3)错误推测
错误推测法主要依靠测试人员的经验和直觉,从各种可能的测试方案中选出一些最可能引起程序出错的方案。
(4)因果图
因果图法是根据输入条件与输出结果之间的因果关系来设计测试用例的,它首先检查输入条件的各种组合情况,并找出输出结果对输入条件的依赖关系,然后为每种输出条件的组合设计测试用例。