16.4-基于控制流设计用例 16.5-语句测试 16.6-分支测试 16.7-判定测试 16.8分支测试与判定测试的区别 16.9分支条件测试 16.10分支条件组合测试 16.11修正条件判定测试

一、基于控制流设计用例

1、用于讲解测试方法的示例

示例的测试代码及程序流程图
  • 定义一个整型函数function1,该函数接收3个布尔类型的变量,分别是a、b、c;
  • 函数中定义了一个整型变量x,并给x赋值为0;
  • 判断a与b或c的运算结果,为真时执行x=1;为假时直接返回x的值。

2、基于控制流的动态的测试方法

(1)语句测试
(2)分支测试
(3)判定测试
  • 判定测试与分支测试的区别
(4)分支条件测试
(5)分支条件组合测试
(6)修正条件判定测试

二、语句测试

1、覆盖要求

  • 选择足够多的测试数据,使得程序中的每条语句都要被覆盖一次。
  • 测试集是程序代码,测试条件是代码中的可执行语句,测试覆盖项是要覆盖每一条可执行的语句。
  • 如下图,设计两条测试用例就能覆盖到代码中的所有语句,但是右侧的假路径没有执行语句,所以就设计左面路径的测试用例即可。

2、测试用例

  • 用例1: a=T,b=T,c=T,预期结果x=1

3、语句测试的缺点

  • 语句测试的覆盖强度不强;
  • 对于判定中逻辑与和逻辑或写错的情况,可能会检测不出来。

三、分支测试

1、覆盖要求

  • 设计足够多的测试用例,使得程序中的每个分支都要被经历到(覆盖到),哪怕这个分支上没有语句也要被经历到。

2、测试用例

  • 用例1: a=T,b=T,c=T,预期结果x=1
  • 用例2: a=F,b=F,c=F,预期结果x=0

3、分支测试的缺点

  • 对于判定中逻辑与和逻辑或写错的情况,可能会检测不出来。

四、判定测试

1、覆盖要求

  • 设计足够多的测试用例,使得程序中的每个判定条件的取值(T、F)都要被覆盖到;
  • 判定测试着眼分析的是判定,所以不要这些判定串联起来分析,而是一个一个的分析这些判定里的每一个取值。

2、测试用例

  • 用例1: a=T,b=T,c=T,预期结果x=1
  • 用例2: a=F,b=F,c=F,预期结果x=0

3、判定测试的缺点

  • 对于判定中逻辑与和逻辑或写错的情况,可能会检测不出来。

五、分支测试与判定测试的区别

基本块
  • 进行程序分析的时候首先要划分基本块;
  • 基本块:所谓基本块是指程序的一组顺序执行的语句,只有一个入口和一个出口(基本块一定是从最前面的语句进来,最后面的语句出去,不会在这个基本块中间的代码部分跳出),只要执行了这个基本块,那么这个基本块中的代码就都会执行,如果不执行这个基本块,那么这个基本块中的代码就都不会执行。
  • 划分基本块时可以先找入口,一般第一条语句是一个入口,紧跟判断条件之后的语句一般也是入口。找出入口之后看这个语句是否产生出口,就是看这条语句是否跳出去,没有跳出的话继续看下条语句是否有多个跳出的点,是不是出口......将所有的入口和出口找好了,那么程序的基本块也就划分好了。
控制流图

1、100%覆盖:所有的边和判断都被覆盖

  • 分支测试与判定测试没有区别

2、不完全覆盖

  • 分支测试覆盖率和判定测试覆盖率会产生差异
测试用例
  • serviceYear=10
  • age=40
  • salary=5000.00
  • 预期输出:10000.00
控制流图的执行路径:B1->B5->B6
  • 判定覆盖率:1/4=25.00%(B1(T、F)和B2(T、F)结点一共是2个判定,会产生4中结果,此时只覆盖了一种结果)
  • 分支覆盖率:2/7=28.57%(控制流图有7条边,所以该程序共有7个分支,B1->B5->B6目前只覆盖了2条边)

六、分支条件测试

1、覆盖要求

  • 设计足够多的测试用例,使得每一个判定语句的取值,以及每个判定条件的取值都要被覆盖。

2、测试用例

  • 用例1: a=F,b=T,c=F,预期结果x=0
  • 用例2: a=T,b=F,c=T,预期结果x=1

3、分支条件测试的缺点

  • 对于判定中逻辑与和逻辑或写错的情况,可能会检测不出来。

七、分支条件组合测试

1、覆盖要求

  • 设计足够多的测试用例,使得每一个判定中,所有条件的各种可能组合都被覆盖到。
  • 2个条件有2的2次方种测试用例,3个条件有2的3次方中测试用例,n个条件有2的n次方种测试用例。

2、测试用例

  • 用例1: a=F,b= F ,c=F
  • 用例2: a=T,b=F,c= F
  • 用例3: a=F,b=T,c=F
  • 用例4: a=F,b=F,c=T
  • 用例5: a=T,b=T,c=F
  • 用例6: a=T,b=F,c=T
  • 用例7: a=F,b=T,c=T
  • 用例8: a=T,b=T,c=T

3、分支条件组合测试

  • 覆盖强度是最强的,但是测试的工作量会比较大。

八、修正条件判定测试(MC/DC)

1、目的

  • 在保证测试覆盖强度的基础上,去减少分支条件组合覆盖测试用例的数量 的一种 基于控制流的动态的测试技术。

2、覆盖要求

  • 设计足够多的测试用例,来确定各个条件能够影响到包含的判定结果,这要包括两个条件,第一个是每个程序的入口到出口点至少要被调用一次,每个程序的判定的所有可能的结果值要转换一次,程序判定被分解为通过逻辑操作and和or连接的布尔条件时每个条件对判定结果的值是独立的(两次计算)。
  • 测试条件就是每一个判定语句;覆盖项就是单个布尔条件可以独立影响到判定结果的条件,其布尔值是唯一的,可行的一组组合。

3、修正判定判定测试步骤

(1)MC/DC首先要求实现分支条件覆盖
(2)在此基础上,对于每一个条件C,要求存在符合以下条件的 两次计算
  • 条件C所在判定内的所有条件,除条件C外,其他条件的取值完全相同
  • 条件C的取值相反
  • 判定的计算结果相反

4、测试用例

九、考点

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值