一、逻辑覆盖
有选择地执行程序中某些最有代表性的通路是对穷尽测试的惟一可行的替代办法。
从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:
- 语句覆盖
含义:选择足够多的测试数据,使被测程序中每个语句至少执行一次。
特点:语句覆盖对程序的逻辑覆盖很少。语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。
- 判定覆盖
含义:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。
- 条件覆盖
含义:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
特点:条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。
判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。
- 判定/条件覆盖
含义:使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。
- 条件组合覆盖
含义:要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
特点:条件组合覆盖是前述几种覆盖标准中最强的。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。
但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。
从对程序路径的覆盖程度分析的逻辑覆盖标准
- 点覆盖
含义:选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。
特点:由于流图的每个结点与一条或多条语句相对应,因此点覆盖标准和语句覆盖标准是相同的。
- 边覆盖
含义:选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。
特点:通常边覆盖和判定覆盖是一致的。
- 路径覆盖
含义:选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
(1) 简单循环
应该使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数。
■跳过循环。
■只通过循环一次。
■通过循环两次。
■通过循环m次,其中m<n-1。
■通过循环n-1,n,n+1次。
(2) 嵌套循环
从最内层循环开始测试,其他循环都设置为最小值。
对最内层循环使用简单循环测试方法,而使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试。
由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为“典型”值。
继续进行下去,直到测试完所有循环。
(3) 串接循环
如果串接循环的各个循环都彼此独立,则可以使用测试简单循环的方法来测试串接循环。
如果两个循环串接,而且第一个循环的循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。当循环不独立时,建议使用测试嵌套循环的方法来测试串接循环。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!