上海大学软件工程实验五测试法.docx
《上海大学软件工程实验五测试法.docx》由会员分享,可在线阅读,更多相关《上海大学软件工程实验五测试法.docx(26页珍藏版)》请在冰豆网上搜索。
上海大学软件工程实验五测试法
实验五测试法
A:
题目:
输入任意三个数字(200以内整数),判断不是三角形,等边三角形,直角三角形,普通三角形。
输出判断结果。
要求画出数据流程图,写出测试用例(分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖的)。
判定1:
if(A+B>C)AND(A+C>B)AND(B+C>A)
判定2:
if(A=BANDB=CANDA=C)
判定3:
if(A^2+B^2=C^2ORA^2+C^2=B^2ORB^2+C^2=A^2)
条件1:
A+B>C
条件2:
A+C>B
条件3:
B+C>A
条件4:
条件4-1:
A=B
条件4-2:
B=C
条件4-3:
A=C
若4-1,4-2均为真,简称条件4:
TTT
若4-1,4-2均为假,简称条件4:
FFT
4-1真,4-2假,4-3假条件4:
TFF
以此类推
条件5:
A^2+B^2=C^2
条件6:
A^2+C^2=B^2
条件7:
B^2+C^2=A^2
语句覆盖
测试用例输入
执行的语句
判定的取值
条件的取值
覆盖的路径
A
B
C
.......
1
1
2
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
T
sabei
1
1
1
sabcfi
判定1:
T
判定2:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
TTT
sabcfi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
T
条件6:
F
条件7:
F
sabcdgi
4
6
9
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
判定覆盖
测试用例输入
执行的语句
判定的取值
条件的取值
覆盖的路径
A
B
C
.......
1
1
2
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
T
sabei
1
1
1
sabcfi
判定1:
T
判定2:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
TTT
sabcfi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
T
条件6:
F
条件7:
F
sabcdgi
4
6
9
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
条件覆盖
测试用例输入
执行的语句
判定的取值
条件的取值
覆盖的路径
A
B
C
.......
1
1
2
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
T
sabei
1
2
1
sabei
判定1:
F
条件1:
T
条件2:
F
条件3:
T
sabei
2
1
1
sabei
判定1:
F
条件1:
T
条件2:
T
条件3:
F
sabei
1
1
1
sabcfi
判定1:
T
判定2:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
TTT
sabcfi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
T
条件6:
F
条件7:
F
sabcdgi
3
5
4
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
T
条件7:
F
sabcdgi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
T
sabcdgi
4
6
9
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
判定/条件覆盖
测试用例输入
执行的语句
判定的取值
条件的取值
覆盖的路径
A
B
C
.......
1
1
2
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
T
sabei
1
2
1
sabei
判定1:
F
条件1:
T
条件2:
F
条件3:
T
sabei
2
1
1
sabei
判定1:
F
条件1:
T
条件2:
T
条件3:
F
sabei
1
1
1
sabcfi
判定1:
T
判定2:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
TTT
sabcfi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
T
条件6:
F
条件7:
F
sabcdgi
3
5
4
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
T
条件7:
F
sabcdgi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
T
sabcdgi
4
6
9
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
组合覆盖
测试用例输入
执行的语句
判定的取值
条件的取值
覆盖的路径
A
B
C
.......
1
1
2
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
T
sabei
1
2
1
sabei
判定1:
F
条件1:
T
条件2:
F
条件3:
T
sabei
2
1
1
sabei
判定1:
F
条件1:
T
条件2:
T
条件3:
F
sabei
0
1
1
sabei
判定1:
F
条件1:
F
条件2:
F
条件3:
T
sabei
1
0
1
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
F
sabei
1
1
0
sabei
判定1:
F
条件1:
T
条件2:
F
条件3:
F
sabei
0
0
0
sabei
判定1:
F
条件1:
F
条件2:
F
条件3:
F
sabei
1
1
1
sabcfi
判定1:
T
判定2:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
TTT
sabcfi
3
3
5
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
TFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
3
5
3
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFT
条件5:
F
条件6:
F
条件7:
F
abcdhi
5
3
3
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FTF
条件5:
F
条件6:
F
条件7:
F
abcdhi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
T
条件6:
F
条件7:
F
sabcdgi
3
5
4
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
T
条件7:
F
sabcdgi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
T
sabcdgi
4
6
9
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
路径覆盖
测试用例输入
执行的语句
判定的取值
条件的取值
覆盖的路径
A
B
C
.......
1
1
2
sabei
判定1:
F
条件1:
F
条件2:
T
条件3:
T
sabei
1
1
1
sabcfi
判定1:
T
判定2:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
TTT
sabcfi
3
4
5
sabcdgi
判定1:
T
判定2:
F
判定3:
T
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
T
条件6:
F
条件7:
F
sabcdgi
4
6
9
abcdhi
判定1:
T
判定2:
F
判定3:
F
条件1:
T
条件2:
T
条件3:
T
条件4:
FFF
条件5:
F
条件6:
F
条件7:
F
abcdhi
B:
阅读以下C++语言程序及其说明,完成任务1-2。
【程序和说明】
以下程序读入表示1900年1月1日以后的日期的年份、月份、日的三个正整数,输出该日期是星期几。
如:
读入20131223,输出星期一。
#include
usingnamespacestd;
char*day[7]={
"星期一",
"星期二",
"星期三",
"星期四",
"星期五",
"星期六",
"星期日"
};
intmonth[12]={
0,
31,
31+28,
31+28+31,
31+28+31+30,
31+28+31+30+31,
31+28+31+30+31+30,
31+28+31+30+31+30+31,
31+28+31+30+31+30+31+31,
31+28+31+30+31+30+31+31+30,
31+28+31+30+31+30+31+31+30+31,
31+28+31+30+31+30+31+31+30+31+30
};
voidmain()
{
inttotal_days;
inty,m,d;
cout<<"请输入要查询的日期(年月日)?
"<cin>>y>>m>>d;
while(y!
=0&&m!
=0&&d!
=0)
{
total_days=(y-1900)*365+(y-1900)/4+month[m-1]+d-1;
if((y-1900)%4==0&&m<3&&y!
=1900)
--total_days;
cout<<(day[total_days%7])<cout<<"请输入要查询的日期(年月日)?
"<cin>>y>>m>>d;
}
}
【任务1】
使用黑盒测试技术(等价类划分),写出等价类划分表:
输入类型
有效等价类
无效等价类
年份,正整数
>1900的正整数
非整数1
<=02
<19003
>655364
月份,正整数
>=1,<=12的正整数
非整数5
<=06
<17
>128
日,正整数
>=1,<=31
小月<=30
闰年二月<=29
非闰年二月<=28
正整数
非整数9
<=010
<111
>3112
小月有31日13
闰年二月有>=30日14
非闰年二月有>=29日15
【任务2】
为该程序设计一组测试用例;利用这组测试用例,对程序进行测试,并记录测试结果。
序号
输入
预期结果
实际结果
1
1900.5
1
2
报错
报错
2
-1
1
2
报错
无输出
3
10
1
2
报错
无输出
4
655300
1
1
报错
星期四
5
2019
1.2
2
报错
报错
6
2019
-1
2
报错
星期日
7
2019
0
2
报错
报错
8
2019
15
1
报错
星期二
9
2019
1
1.1
报错
星期二
循环一次后报错
10
2019
5
-1
报错
星期一
11
2019
5
0
报错
报错
12
2019
5
38
报错
星期五
13
2019
4
31
报错
星期三
14
2019
2
29
报错
星期五
15
2008
2
30
报错
星期六
16
2019
1
3
星期四
星期四
【任务3】
使用黑盒测试技术(边界值分析),对上题2的测试结果进行补充。
序号
输入
预期结果
实际结果
1
1900
1
1
星期一
星期一
2
1900
1
31
星期三
星期三
3
1900
12
1
星期六
星期六
4
1900
12
31
星期一
星期一
5
65535
1
1
星期三
星期三
6
65535
1
31
星期五
星期五
7
65535
12
1
星期一
星期一
8
65535
12
31
星期三
星期三
9
1899
1
1
报错
报错
10
1899
1
31
报错
报错
11
1899
12
1
报错
报错
12
1899
12
31
报错
报错
13
65536
1
1
报错
星期四
14
65536
1
31
报错
星期六
15
65536
12
1
报错
星期三
16
65536
12
31
报错
星期五
17
1900
1
0
报错
报错
18
1900
1
32
报错
星期四
19
1900
12
0
报错
报错
20
1900
12
32
报错
星期二
21
65535
1
0
报错
报错
22
65535
1
32
报错
星期日
23
65535
12
0
报错
报错
24
65535
12
32
报错
星期四
25
1900
0
1
报错
报错
26
1900
0
31
报错
报错
27
1900
13
1
报错
星期一
28
1900
13
31
报错
星期三
29
65535
0
1
报错
报错
30
65535
0
31
报错
报错
31
65535
13
1
报错
星期三
32
65535
13
31
报错
星期五
【任务4】
指出程序的不足之处,提出错误推测。
1.无法区分大小月
2.无法区分闰年与非闰年
3.对月份,日期的最大值没有限定,这两个值也可以为负数
4.对于年份溢出没有提示和防范