软件测试与管理-白盒测试-逻辑覆盖法例题

目录

知识点:

[例题 :](#例题 :)


知识点:

语句覆盖: 设计足够多的测试用例,使得被测试程序中的**" ++每条可执行语句至少被执行一次++"**

  • **优点:**可通过源码观察直观地得到测试用例,无须细分每个判定表达式。
  • **缺点:**只对程序逻辑中的可执行语句的显式错误起作用,隐藏在程序中的其他错误无法准确测试。

判定覆盖: 设计足够多的测试用例,使得被测试程序中的**"++每个判断的"真"、"假"分支至少被执行一次++"**

  • **优点:**测试的路径比语句覆盖多一倍,因此具有比语句覆盖更强的测试能力,而且判定覆盖与语句覆盖一样简单,无须细分每个判定即可得到测试用例。
  • **缺点:**一般程序中的判断语句是由多个逻辑条件组合而成,因此仅仅判断其最终结果,而忽略每个条件的各种取值情况,必定会导致部分测试路径遗漏。

条件覆盖: 设计足够多的测试用例,使得被测试程序中的每个判断语句中的++"每个逻辑条件的可能值至少被满足一次"++

  • **优点:**一般而言条件覆盖比判定覆盖要强,因为条件覆盖使判定条件中每个条件都取到了不同的结果,而判定覆盖无法保证这一点。
  • **缺点:**条件覆盖只能保证每个条件都取到不同的结果,但无法保证每种判定结果都满足。

判定-条件覆盖: 设计足够多的测试用例,使判断中++"每个条件的所有可能取值至少执行一次"++ (条件覆盖),与此同时还保证++"每个判断本身所有结果也至少执行一次"++ (判定覆盖)**。**即同时满足100%判定覆盖和100%条件覆盖的标准。

  • **优点:**弥补了判定覆盖和条件 覆盖各自的缺陷
  • **缺点:**当程序中还有多个判断结构时,容易出现不同的条件组合导致不同的结果,但判定/条件覆盖并未考虑这种条件组合的情况。

条件组合覆盖: 又称组合覆盖,是指**"** ++每个判断语句中的各个条件的各种可能组合都至少执行一次"++,因此条件组合覆盖的测试用例可满足判定覆盖、条件覆盖以及判定/条件覆盖。

  • **优点:**以同时满足判定覆盖、条件覆盖、判定/条件覆盖,可弥补三者的不足,从而对程序做更严格的测试,覆盖率更高。
  • **缺点:**需要考虑程序中所有的判断结构,并将判断结构中的各条件的所有可能组合都至少执行一次,因此设计的 测试用例数量较多,执行所花费的时间也会更长。

**路径覆盖:**考虑所有可能执行的路径。

**优点:**路径覆盖是 6 种逻辑覆盖方法中 覆盖率最高的白盒测试用例设计方法。

**缺点:**当需要考虑程序中所有可能执行的路径,尤其是判断结果比较多时,测试用例的设计量就会很大,测试用例的编写就会比其他方法耗时更多,整个测试过程也会被拉长。


例题 :

cpp 复制代码
//被测程序
1   int doWork(int x,int y,int z)
{
2       int k=0,j=0;
3       if((x>3)&&(z<10))
        {
4            k=x*y-1;
5           j=sqrt(k); 
        }
6      if((x==4)||(y>5))
       {
7          j=x*y+10;
8          j=j%3; 
        }
9      return j; }

1. 分析程序,画出程序流程图

2. 根据程序流程图对程序进行白盒测试:

① 语句覆盖,语句块,执行至少1次。

② 判定覆盖,判定节点,整体,真,假,执行至少1次。

③ 条件覆盖,判定节点,局部,真,假,执行至少1次。

④ 判定-条件覆盖,判定节点,整体,局部,真,假,执行至少1次。

⑤ 条件组合覆盖,判定节点,内部条件的组合,跨判定节点的条件组合无需考虑。

⑥ 路径覆盖,判定节点,真,假,至少执行1次。

3.测试用例:

(1)语句覆盖

|-------|---|---|---|---------------------------|
| 用例编号 | x | y | z | 覆盖语句 |
| Case1 | 4 | 6 | 8 | 3,4,5,6,7,8,9 (每行代码对应的编号) |


(2)判定覆盖

x>3 && z<10 :P1

(x==4)||(y>5): P2

|-------|---|---|----|----|----|---------|
| 用例编号 | x | y | z | P1 | P2 | 覆盖路径 |
| Case1 | 5 | 3 | 9 | T | F | abceghi |
| Case2 | 4 | 6 | 11 | F | T | abdefhi |


(3)条件覆盖

x>3 : C1

z<10 : C2

x==4 : C3

y>5 : C4

|-------|---|---|----|----|----|----|----|----|----|---------|
| 用例编号 | x | y | z | C1 | C2 | C3 | C4 | P1 | P2 | 覆盖路径 |
| CASE1 | 4 | 6 | 8 | T | T | T | T | T | T | abcefhi |
| CASE2 | 2 | 4 | 12 | F | F | F | F | F | F | abdeghi |
| CASE3 | 5 | 4 | 8 | T | T | F | F | T | F | abceghi |
| CASE4 | 4 | 6 | 12 | T | F | T | T | F | T | abdefhi |


(4)判定-条件覆盖

|-------|---|---|----|----|----|----|----|----|----|---------|
| 用例编号 | x | y | z | C1 | C2 | C3 | C4 | P1 | P2 | 覆盖路径 |
| CASE1 | 4 | 6 | 8 | T | T | T | T | T | T | abcefhi |
| CASE2 | 2 | 4 | 12 | F | F | F | F | F | F | abdeghi |


(5) 条件组合覆盖

x>3 && z<10 :

x==4)||(y>5):

|-------|---|---|----|----|----|----|----|----|----|---------|
| 用例编号 | x | y | z | C1 | C2 | C3 | C4 | P1 | P2 | 覆盖路径 |
| CASE1 | 5 | 5 | 7 | T | T | F | F | T | F | abceghi |
| CASE2 | 4 | 5 | 12 | T | F | T | F | F | T | abdefhi |
| CASE3 | 5 | 6 | 12 | F | F | F | T | F | T | abdefhi |
| CASE4 | 4 | 5 | 8 | T | T | T | F | T | T | abcefhi |
| CASE5 | 5 | 6 | 8 | T | T | F | T | T | T | abcefhi |
| CASE6 | 2 | 4 | 12 | F | F | F | F | F | F | abdeghi |


(6) 路径覆盖

|-------|---|---|----|----|----|----|----|----|----|---------|
| 用例编号 | x | y | z | C1 | C2 | C3 | C4 | P1 | P2 | 覆盖路径 |
| CASE1 | 4 | 6 | 8 | T | T | T | T | T | T | abcefhi |
| CASE2 | 2 | 4 | 12 | F | F | F | F | F | F | abdeghi |
| CASE3 | 5 | 4 | 8 | T | T | F | F | T | F | abceghi |
| CASE4 | 4 | 6 | 12 | T | F | T | T | F | T | abdefhi |

相关推荐
晓数1 小时前
【硬核干货】JetBrains AI Assistant 干货笔记
人工智能·笔记·jetbrains·ai assistant
我的golang之路果然有问题1 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
lwewan1 小时前
26考研——存储系统(3)
c语言·笔记·考研
搞机小能手2 小时前
六个能够白嫖学习资料的网站
笔记·学习·分类
nongcunqq2 小时前
爬虫练习 js 逆向
笔记·爬虫
汐汐咯3 小时前
终端运行java出现???
笔记
无敌小茶4 小时前
Linux学习笔记之环境变量
linux·笔记
帅云毅5 小时前
Web3.0的认知补充(去中心化)
笔记·学习·web3·去中心化·区块链
豆豆5 小时前
day32 学习笔记
图像处理·笔记·opencv·学习·计算机视觉
nenchoumi31195 小时前
VLA 论文精读(十六)FP3: A 3D Foundation Policy for Robotic Manipulation
论文阅读·人工智能·笔记·学习·vln