【软件测试】通过决策表例题学会使用决策表
例题1
有一个程序可以计算某年某月有多少天,请依照决策表测试技术产生测试用例。
要求:
1.每个条件的取值有多种选择,而不再是简单的Yes/No。
-
需要写出合并后的决策表
-
需要写出测试用例。
答案
条件部分 :
年份Y:
- Y1:{year:year是闰年}
- Y2:{year:不是闰年}
月份M:
- M1:{month:2月}
- M2:{month:是1、3、5、7、8、10、12月}
- M3:{month:是4、6、9、11月}
结果部分
- D1:28天
- D2:29天
- D3:30天
- D4:31天
合并后的决策表:
条件 | 取值 |
---|---|
Y | Y1 ,Y2 |
M | M1 , M2 |
行动 | |
D1 | 28 DAYS |
D2 | 29 DAYS |
D3 | 30 DAYS |
D4 | 31 DAYS |
检验和 | 6 |
测试用例
- 2024,2 输出:有29天
- 2022,7 输出:有31天
- 2021,11 输出:有30天
- 2023,2 输出:有28天
例题2
以下是闰年的判定准则:
⑴请给出一个判定函数is_leap(int year)用来判定给定的年份是否为闰年。
⑵设计该函数的黑盒测试用例(决策表方法)
⑶请对照决策表重新写is_leap判定函数,将每一列改写写成一行条件语句。
答案
1、
c
function is_leap(int year){
if (year mod 4 != 0) then
output("平年")
else if (year mod 100 = 0) and (year mod 400 !=0) then
output("平年")
else
output("闰年")
}
2、决策表设计测试用例结果如下:
年份能否被4整除 | 年份能否被100整除 | 年份能否被400整除 | 结果 | |
---|---|---|---|---|
1 | Y | Y | Y | 闰年 |
2 | N | - | - | 平年 |
3 | N | Y | Y | 闰年 |
4 | Y | Y | N | 平年 |
校验和 | 8 | 4 | 1 | 1 |
测试用例:
- 1995,平年
- 2000,闰年
- 1900,平年
- 2020,闰年
3、按照决策表,每一列写成一个条件语句,结果如下:
c
is_leap(int year){
if year mod 4 != 0 then output(平年) - 对应于第一列
if year mod 400 = 0 then output(闰年) - 对应于第二列
if year mod 100 = 0 and year mod 400 !=0 then output(平年) -对应于第三列
if year mod 4 and year mod 100 != 0 then output(闰年) -对应于第四列
}