软件测试的种类:白盒测试和黑盒测试

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


推荐阅读