• 软件质量保护与测试(第2版)学习总结第十一章 白盒测试


    错误隐藏在角落里、集聚在边界处                                                          ----Boris Beizer

    白盒测试是看源代码的,静态分析和动态分析

    11.2    控制流测试

    程序结构主要有3种  顺序结构、分支结构、循环结构

    1. #include "stdafx.h"
    2. #include <iostream>
    3. using namespace std;
    4. int main(int argc,char* argv[])
    5. {
    6. double a,b,x;
    7. cin>>a>>b>>x;
    8. if((a>1)&&(b==0))
    9. x=x/a;
    10. if((a==2)||(x>1))
    11. x=x+1;
    12. cout<<x;
    13. return 0;
    14. }

    11.2.1   语句覆盖

    就是将程序的每个分支都走一遍

    就比如上面的代码,case1:(A=2,B=0,X=2)就可以做到语句覆盖

    判断覆盖

    类似于

    两个条件,两个都满足,一个满足       就完成了判断覆盖

    Case1: (A=2,B=0,X=3)

    Case2: (A=1,B=0,X=1)

    当然,还有另外的选择

    case4:(A=3,B=0,X=3)

    Case5:  (A=2,B=1,X=1)

    条件覆盖

    第一个条件a>1   有四种情况,就是a>1为真的,或者a>1为假的,b=0为真的,b=0为假的。

    同理,第二个条件,也是有四种情况

    自然条件覆盖用例也可以为:

    1. a>1, b=0, x任意   比如说 a=2, b=0,x=0
    2. a<=1, b=0, x任意 比如说 a=1,b=0,x=1
    3. a>1, b!=0, x任意  比如说 a=3,b=1,x=9
    4. a<=1, b!=0, x任意  等等
    5. a=2, b任意, x<=1
    6. a!=2, b任意, x<=1
    7. a=2, b任意, x>1
    8. a!=2, b任意, x>1

    其中第1、2、3、4个用例覆盖了if语句中的所有条件分支,第5、6、7、8个用例覆盖了第二个if语句中的所有条件分支。

    判定-条件覆盖

    根据给出的代码,我们可以列出以下判定条件:

    1. a>1 且 b==0
    2. a==2 或 x>1

    那么我们可以列出以下四个用例:

    1. a=2, b=0, x=0
    2. a=0, b=0, x=0
    3. a=2, b=0, x=2
    4. a=1, b=1, x=1

    对于第一个用例,判定条件1不成立,判定条件2成立,输出x+1=1。 对于第二个用例,判定条件1不成立,判定条件2不成立,不执行任何操作,输出x=0。 对于第三个用例,判定条件1成立,判定条件2成立,执行x=x+1=3操作,输出x=3。 对于第四个用例,判定条件1不成立,判定条件2不成立,不执行任何操作,输出x=1。

    因此,四个用例分别覆盖了两个判定条件的所有情况。

    路径覆盖

    接下来就是设计测试用例:

    SABCDE

    SACDE

    SACE

    SABCE

    如果我不解释上面的图,你们肯定会认为,我给出的用例是有问题的。

    它这个图的解释是,只要到了B,就说明第一个条件是对的,同理只要到了D,第二个条件就是对的,反过来,没有到就是没有B,就是第一个条件是错的。

    总之,我个人认为书上这个图是很s  “b”的

    可以看出四条路径,再按照这四条路径出用例就是了

    a=2,b=0,x=2   SABCDE

    a=1,b=9,x=3   SACDE

    a=3,b=0,x=0   SABCE

    a=-1,b=9,x=-1  SACE

    程序的控制流图

    控制流图就长右边这样

    假设程序为这个:

    1. 1if a or b
    2. 2、x
    3. 3else
    4. 4、y

    有时候,过程两个东西会放在一起,只要没有分支就行了,就比如说上上的图的2,3放在一起,等等

  • 相关阅读:
    SA8155P Flat Build QFIL刷机
    目标检测——小麦穗头数据集
    Unity中的动画系统
    【大厂AI课学习笔记NO.68】开源和开源发展情况
    【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-Chapter11-构建基础脚本
    中英文域名,你是否也有点小迷糊......
    Web安全教程(超详细!从入门到精通!零基础可学!)
    vite+rollup
    nuxt3正确使用keepalive页面缓存组件缓存
    php+微信小程序大学跳蚤市场的微信小程序设计与实现毕业设计源码261620
  • 原文地址:https://blog.csdn.net/m0_63251896/article/details/134460242