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

目录

知识点:

[例题 :](#例题 :)


知识点:

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

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

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

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

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

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

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

相关推荐
jackson凌34 分钟前
【Java学习笔记】SringBuffer类(重点)
java·笔记·学习
huangyuchi.1 小时前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
大写-凌祁3 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
Unpredictable2223 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
傍晚冰川3 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
Love__Tay5 小时前
【学习笔记】Python金融基础
开发语言·笔记·python·学习·金融
半导体守望者5 小时前
ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
经验分享·笔记·功能测试·自动化·制造
柠石榴6 小时前
【论文阅读笔记】《A survey on deep learning approaches for text-to-SQL》
论文阅读·笔记·深度学习·nlp·text-to-sql
田梓燊7 小时前
数学复习笔记 27
笔记
Lester_11017 小时前
嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
笔记·stm32·单片机·学习·freertos