白盒测试方法是根据软件产品的内部工作过程,通过运行程序进行测试,以证实每一种内部操作是否符合设计规格要求,所有内部成分是否已经检查过。白盒测试允许测试人员利用代码的内部结构,设计测试用例进行测试。
逻辑覆盖
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术,根据覆盖的范围不同,又可分为语句覆盖、分支覆盖、条件覆盖等。
(1) 语句覆盖
语句覆盖是指设计测试用例,使得程序中每一条语句至少执行一次。
(2) 分支覆盖
分支覆盖是指设计测试用例,使得程序中每一个判断的取真分支和取假分支都至少能够执行一次。
(3) 条件覆盖
条件覆盖是指设计测试用例,使得程序中每一个判断的每个条件的可能取值至少执行一次。
路径测试
路径测试是设计足够的测试用例,覆盖程序中所有可能的路径。在路径数目很大时,真正做到完全覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。
(1) 条件测试路径的选择
当程序中判定多于一个时,形成的分支结构可以分为两类,即嵌套型分支结构和连锁型分支结构,如图5.3所示。

图5.3 条件分支结构的类型
对于嵌套型分支结构,若有n个判定语句,需要n+1个测试用例。对于连锁型分支结构,若有n个判定语句,需要有2n个测试用例覆盖其2n条路径,但当n较大时将无法测试。为了减少测试用例的数量,可以根据各条路径的重要性,采用加权等方法筛掉部分路径,并进行抽样减少测试路径的数量。
(2) 循环测试路径的选择
循环分为4种不同类型:简单循环、连锁循环、嵌套循环和非结构循环,如图5.4所示。

图5.4 循环的类型
对于简单循环,测试应该包括零次循环、1次循环、2次循环、某个中间次数循环、最大次数循环、比最大次数多一次的循环、比最大次数少一次的循环等类型的测试用例。
对于嵌套循环,可以按以下方法减少测试用例的数量:
(1) 除最内层的循环外,所有其他层的循环变量置为最小值,对最内层的循环进行简单循环的全部测试;
(2) 逐步外推,对其外面一层循环进行测试。测试时,所有外层循环的循环变量取最小值,所有其他嵌套内层循环的循环变量取"典型"值;
(3) 反复进行,直到所有各层循环测试完毕;
(4) 对全部各层循环同时取最小循环次数,或者最大循环次数。
对于连锁循环,如果各个循环是相互独立的,则可以用与简单循环相同的方法进行测试;如果多个循环不是相互独立的,则需要用测试嵌套循环的办法处理。
对于非结构循环,应该使用结构化程序设计方法重新设计循环。
|