抑郁症健康,内容丰富有趣,生活中的好帮手!
抑郁症健康 > 07-白盒测试方法-逻辑覆盖法

07-白盒测试方法-逻辑覆盖法

时间:2019-08-19 17:34:09

相关推荐

逻辑覆盖法

前言逻辑覆盖法语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖

前言

本篇来学习白盒测试方法–逻辑覆盖法

逻辑覆盖法

逻辑覆盖法是白盒测试最常用的测试方法,它包括语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖5种。

以demo中的一个方法为例,学习5种测试方法

public void demo(boolean a, boolean b, boolean c, boolean d) {if (a && b) {System.out.println(true);} else if (c || d) {System.out.println(false);}}

语句覆盖

语句覆盖(Statement Coverage)又称行覆盖、段覆盖、基本块覆盖,它是最常见的覆盖方式。语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。

case 设计:

# 语句覆盖的原则是覆盖每条语句,针对demo方法,一条测试用例即可完成覆盖

Case 1:a=true,b=true,c=true,d=false

覆盖路径:ace

判定覆盖

判定覆盖(Decision Coverage)又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。

case设计:

# 语句覆盖并没有考虑if语句为假(false)的情况,显然测试并不充分。分支(判定)覆盖可以解决这个问题

Case1:a=true,b=true,c=true,d=false

Case2:a=false,b=true,c=true,d=false

条件覆盖

条件覆盖(Condition Coverage)指的是设计足够多的测试用例,使判定语句中的每个逻辑条件取真值与取假值至少出现一次。

case设计:

# 条件的每个取值(即a、b、c、d均可以取true或false两个值)。条件覆盖能覆盖到每个条件的每个取值,

Case1:a=true,b=false,c=true,d=false

Case2:a=false,b=true,c=false,d=true

判定-条件覆盖

判定-条件覆盖(Condition/Decision Coverage)要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次。

case设计:

# 同时满足判定覆盖和条件覆盖就更好了,而判定条件覆盖就能做到

Case 1:a=true,b=true,c=true,d=true

Case 2:a=false,b=false,c=false,d=false

条件组合覆盖

条件组合(Multiple Condition Coverage)指的是设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次,它与判定-条件覆盖的差别是,条件组合覆盖不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次。

case设计:

# 条件组合覆盖考虑的是覆盖每个分支(判定)中每个条件的每种组合

Case 1:a=true,b=true,c=true,d=true

Case 2:a=true,b=false,c=true,d=false

Case 3:a=false,b=true,c=false,d=true

Case 4:a=false,b=false,c=false,d=false

若a&&b为true,那么a=true,b=true。若a&&b为false,那么a=true,b=false;或a=false,b=true;或a=false,b=false。若c&&d为true,那么c=true,d=true;或c=true,d=false;或c=false,d=true。若c&&d为false,那么c=false,d=false。

如果觉得《07-白盒测试方法-逻辑覆盖法》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。