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

目录

知识点:

[例题 :](#例题 :)


知识点:

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

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

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

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

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

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

判定-条件覆盖: 设计足够多的测试用例,使判断中++"每个条件的所有可能取值至少执行一次"++ (条件覆盖),与此同时还保证++"每个判断本身所有结果也至少执行一次"++ (判定覆盖)**。**即同时满足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 天前
Face AE Tuning
图像处理·笔记·学习·算法·计算机视觉
whale fall1 天前
【剑雅14】笔记
笔记
星空的资源小屋1 天前
跨平台下载神器ArrowDL,一网打尽所有资源
javascript·笔记·django
Xudde.1 天前
Quick2靶机渗透
笔记·学习·安全·web安全·php
AA陈超1 天前
Git常用命令大全及使用指南
笔记·git·学习
愚戏师1 天前
Python3 Socket 网络编程复习笔记
网络·笔记
降临-max1 天前
JavaSE---网络编程
java·开发语言·网络·笔记·学习
大白的编程日记.1 天前
【计算网络学习笔记】MySql的多版本控制MVCC和Read View
网络·笔记·学习·mysql
IMPYLH1 天前
Lua 的 require 函数
java·开发语言·笔记·后端·junit·lua
YJlio2 天前
进程和诊断工具学习笔记(8.29):ListDLLs——一眼看清进程里加载了哪些 DLL,谁在偷偷注入
android·笔记·学习