白盒测试
白盒测试关注是测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。以下介绍的逻辑覆盖准则为由弱到强的关系。
-
语句覆盖
语句覆盖为白盒测试中较弱的准则,要求将程序中的每条语句至少执行一次。 -
判定覆盖/分支覆盖
要求编写足够的测试用例,使得每一个判断都至少有一个为真或为假的输出结果,以及将程序或子程序的每个入口点都至少执行一次。但是当分支语句有多个条件时(条件1||条件2||条件3),我们可能仅仅覆盖到了某些条件的一个结果。 -
条件覆盖
条件覆盖要求编写足够的测试用例以确保将一个判断中的每个条件的所有可能结果都至少执行一次。但当一个语句有多个条件时(条件1&条件2&条件3),我们可能会只覆盖到这个判断的一种情况,从而漏掉一些语句。 -
判定/条件覆盖
为了解决2和3的问题,我们可以使用判定/条件覆盖准则。这种准则要全部设计出充足的测试用例,将一个判断中每个条件所有可能的结果至少执行一次,将每个判断的所有可能结果至少执行一次,将每个入口点都至少调用一次。(其实就是2和3的结合版)
但是这种覆盖准则仍然有缺陷,因为在“与”和“或”表达式中,如果“与”表达式中有多个条件为“假”,或者“或”表达式中有多个条件为真,那么后续的条件就无需计算。 -
多重条件覆盖
多重条件覆盖能够部分解决4的问题。该准则要求编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。
黑盒测试
基于程序规格说明书(需求文档)黑盒测试的目标是找出程序不符合规格说明书的地方。
- 等价划分
等价划分的设计思想主要基于:严格控制测试用例的增加,增加的测试用例要覆盖大部分其他可能的测试用例。 - 边界值分析
边界值分析需要选择一个或多个元素,以便等价类的每个边界都经过一次测试。
边界值分析不仅要考虑输入空间(输入条件),还要考虑结果空间。 - 因果图
因果图主要考虑输入条件的组合情况。 - 错误猜测
字面意思,我觉得这一条主要看一个人的测试思维和测试经验。
参考资料:
《软件测试的艺术(原书第3版)》 机械工业出版社