基于逻辑覆盖的方法
白盒测试中,测试用例可以用基于逻辑覆盖的方法设计,即语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。花了不少时间弄清楚,mark,这里还是以三角形判断方法为例。
关于三角形判断方法的程序流程图
约定:为方便起见,每个语句以编号代替(如图)
| 编号 | 语句 | 说明 |
|---|---|---|
| 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 |
本文介绍了白盒测试中的逻辑覆盖方法,包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。通过三角形判断方法的例子详细解释了各种覆盖方式的实现和目标,旨在确保程序的全面测试。
1万+

被折叠的 条评论
为什么被折叠?



