白盒测试,所关注的是:测试用例执行的程度或覆盖程序逻辑结构(源代码)的程度。因此,也可以认为是逻辑覆盖测试。具体方法有五个,按其逻辑覆盖的从弱到强依次列出:
- 语句覆盖(面): 将程序中的每条语句至少执行一次,但实现不太可能,该准则有很大的不足,以至于它通常没有什么用处
- 判定/分支覆盖(线): 必须编写足够的测试用例,使得每一个判断都至少有一个为真和为假的输出结果。即:每条分支路径都必须至少遍历一次。换句话说:所有判断的每个可能结果都至少执行一次,以及将程序或子程序的每个入口点都至少执行一次。需要指出的是:该准则满足语言覆盖准则。
- 条件覆盖(点): 编写足够的测试用例以确保将一个判断中的每个条件的所有可能的结果至少执行一次。
- 判定/条件覆盖(点线结合): 设计出足够的测试用例,将一个判断中的每个条件的所有可能结果至少执行一次,将每个判断的所有可能结果至少执行一次,将每个入口点都至少调用一次。需明确一点,该准则有一个极大的缺点:尽管看上去所有条件的所有结果似乎都执行到了,但由于某些特定的条件会屏蔽掉其他的条件,通常并不能全部都执行到。例如:该准则并不一定会发现逻辑表达式中的错误(与、或)。
- 多重条件覆盖(点线组合):
编写足够多的测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。需要说明的是,满足多重条件覆盖准则的测试用例集,同样满足判定覆盖准则、条件覆盖准则以及判定/条件覆盖准则。需明确的是:在存在循环的情况下,多重条件覆盖准则所需要的测试用例的数量通常会远远小于其路径的数量。
文尾,作者小结了一下。
- 包含每个判断只存在一种条件的程序,最简单的测试准则就是:设计出足够数量的测试用例,将每个判断的所有结果都至少执行一次;将所有的程序入口都至少调用一次,以确保全部的语句都至少执行一次。
- 包含多重条件判断的程序,最简单的测试准则是:设计出足够数量的测试用例,将每个判断的所有可能的条件结果的组合,以及所有的入口点都至少执行一次
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/