基于逻辑覆盖的测试用例设计

来源:互联网 发布:centos开启ftp服务器 编辑:程序博客网 时间:2024/05/16 04:59

基于逻辑覆盖的方法

白盒测试中,测试用例可以用基于逻辑覆盖的方法设计,即语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。花了不少时间弄清楚,mark,这里还是以三角形判断方法为例。

  • 基于逻辑覆盖的方法
    • 编号 测试用例 输出 J1 J2 J3 J4 J5 T1 5 5 -5 -1 Y T2 5 5 105 -1 N Y T3 5 5 15 0 N N N T4 5 5 5 3 N N Y Y T5 5 4 5 2 N N Y N Y T6 5 3 4 1 N N Y N N
      • 判定条件覆盖
      • 条件组合覆盖
      • 路径覆盖

关于三角形判断方法的程序流程图

程序流程图

约定:为方便起见,每个语句以编号代替(如图)

编号 语句 说明 J1 a<0¦¦b<0¦¦c<0 J2 a>100¦¦b>100¦¦c>100 J3 a+b>c&&b+c>a&&a+c>b J4 a\=\=b&&b\=\=c J5 a==b¦¦b==c¦¦c==a S0 输入三角形三边abc 程序开始 S1 非法输入 三角形类型值为-1 S2 非三角形 三角形类型值为0 S3 等边三角形 三角形类型值为3 S4 等腰三角形 三角形类型值为2 S5 普通三角形 三角形类型值为1 S6 输出三角行类型 程序结束

这里只列出有意义的测试用例。


语句覆盖
使每个语句都执行一次,即将三角形的类型值都输出一遍。

编号 测试用例 期望输出 覆盖语句 T1 -1 5 5 -1 非法输入 S1 T2 12 5 5 0 非三角形 S2 T3 5 5 5 3 等边三角形 S3 T4 4 5 5 2 等腰三角形 S4 T5 3 4 5 1 普通三角形 S5

判定覆盖
测试用例使每个判定的所有可能结果至少执行一次。

编号 测试用例 输出 J1 J2 J3 J4 J5 T1 5 5 -5 -1 Y T2 5 5 105 -1 N Y T3 5 5 15 0 N N N T4 5 5 5 3 N N Y Y T5 5 4 5 2 N N Y N Y T6 5 3 4 1 N N Y N N

条件覆盖
测试用例使每个判定中的每个条件的所有可能结果都至少出现一次。
如J1有3个条件(a<0、b<0,c<0),对应有6种结果,这六种结果需要分别出现,这里以TTT代替J1分支的3个条件成立,TTF说明J1分支中(a<0、b<0、c>=0)成立,其他亦然。

编号 测试用例 输出 J1分支条件 J2分支条件 J3分支条件 J4分支条件 J5分支条件 T1 -5 -5 -5 -1 TTT T2 125 125 125 -1 FFF TTT T3 2 2 5 0 FFF FFF FTT T4 2 5 2 0 FFF FFF TFT T5 5 2 2 0 FFF FFF TTF T6 5 5 5 3 FFF FFF TTT TT TTT T7 3 4 5 1 FFF FFF TTT FF FFF

和前两者相比,缺少了输出等要三角形这一类型。


判定/条件覆盖

测试用例使每个判定的所有可能结果至少执行一次,且每个判定中的每个条件的所有可能结果都至少出现一次。

编号 测试用例 输出 J1分支条件 J2分支条件 J3分支条件 J4分支条件 J5分支条件 判定 T1 -5 -5 -5 -1 TTT Y**** T2 125 125 125 -1 FFF TTT NY*** T3 2 2 5 0 FFF FFF FTT NNN** T4 2 5 2 0 FFF FFF TFT NNN** T5 5 2 2 0 FFF FFF FTF NNN** T4 5 5 5 3 FFF FFF TTT TT TTT NNYYY T5 3 4 5 1 FFF FFF TTT FF FFF NNYNN

注:*表示取值无关。
等同判定/条件覆盖。


条件组合覆盖

测试用例使每个判定中的每个条件的所有可能结果组合都至少出现一次。

编号 测试用例 输出 J1分支条件 J2分支条件 J3分支条件 J4分支条件 J5分支条件 T1 -5 -5 -5 -1 TTT T2 30 -5 -5 -1 FTT T3 -5 30 -5 -1 TFT T4 -5 -5 30 -1 TTF T5 30 30 -5 -1 FFT T6 30 -5 30 -1 FTF T7 30 30 -5 -1 TFF T8 201 201 201 -1 FFF TTT T9 5 201 201 -1 FFF FTT T10 201 5 201 -1 FFF TFT T11 201 201 5 -1 FFF TTF T12 5 5 201 -1 FFF FFT T13 5 201 5 -1 FFF FTF T14 201 5 5 -1 FFF TFF T15 7 7 20 -1 FFF FFF FTT T16 7 20 7 -1 FFF FFF TFT T17 20 7 7 -1 FFF FFF TTF T18 5 5 5 3 FFF FFF TTT TT TTT T19 5 5 2 2 FFF FFF TTT TF TFF T20 2 5 5 2 FFF FFF TTT FT FTF T21 5 2 5 2 FFF FFF TTT FF FFT T22 3 4 5 1 FFF FFF TTT FF FFF

有些组合不可能出现,故舍去。如满足J3(a+b>c&&a+c<=b&&b+c<=a)只能是c<=0的情况下才能成立,在J1判定时就已经决定不会经过J3了。


路径覆盖

上述覆盖可以分为一类,而路径覆盖和前者不同。测试用例需要至少一次经过每条可能执行到的路径。

程序可以细分为控制流程图(如图)

控制流程图

编号 测试用例 期望输出 覆盖路径 T1 -10 6 6 -1 非法输入 S0 –> J1_Y –> S1 T2 6 -10 6 -1 非法输入 S0 –> J1_NY –> S1 T3 6 6 -10 -1 非法输入 S0 –> J1_NNY –> S1 T4 200 6 6 -1 非法输入 S0 –> J1_NNN –> J2_Y –> S1 T5 6 200 6 -1 非法输入 S0 –> J1_NNN –> J2_NY –> S1 T6 6 6 200 -1 非法输入 S0 –> J1_NNN –> J2_NNY –> S1 T7 6 6 20 0 非三角形 S0 –> J1_NNN –> J2_NNN –> J3_Y –> S2 T8 6 20 6 0 非三角形 S0 –> J1_NNN –> J2_NNN –> J3_NY –> S2 T9 20 6 6 0 非三角形 S0 –> J1_NNN –> J2_NNN –> J3_NNY –> S2 T10 5 5 5 3 等边三角形 S0 –> J1_NNN –> J2_NNN –> J3_NNN –> J4_YY –> S3 T11 4 5 5 2 等腰三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_YN –> S4 T12 5 4 4 2 等腰三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_NN –> J5_NNY –> S4 T13 4 5 4 2 等腰三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_NY –> J5_NY –> S4 T14 3 4 5 1 普通三角形 S0 –> J1_NNN –> J2_NNN –> J3 –> J4_NN –> J5_NNN –> S4
0 0