1.示程序段设计组测试例求分满足语句覆盖判定覆盖条件覆盖判定条件覆盖组合覆盖路径覆盖画出相应程序流程图
void DoWork (int xint yint z)
{
int k0j0
if ( (x>3)&&(z<10) )
{ kx*y1
jsqrt(k) 语句块1
}
if ( (x4)||(y>5) )
{
jx*y+10
} 语句块2
jj3 语句块3
k0
j0
kx*y1
jsqrt(k)
x>3
and
z<10
}
a
Y c
N
b
x4
or
y>5
e
Y
jx*y+10
N
d
jj3
流程图出该程序模块4条路径:
P1(ace) P2(acd)
P3(abe) P4(abd)
里面判定条件程记录:
判定条件M={x>3 and z<10}
判定条件N{x4 or y>5}
1 语句覆盖
测试例输入
输出
判定M取值
判定N取值
覆盖路径
x4z5y8
k31j0
T
T
P1(ace)
2判定覆盖
p1p4作测试例中p1作取真路径p4作取反路径
测试例输入
输出
判定M取值
判定N取值
覆盖路径
x4z5y8
k31j0
T
T
P1(ace)
x2z11y5
k0j0
F
F
P4(abd)
测试例测试路径P2P3相应两组输入数:
测试例输入
输出
判定M取值
判定N取值
覆盖路径
x5z5y4
k19jsqrt(19)3
T
F
P2(acd)
x4z11y6
k0j1
F
T
P3(abe)
3条件覆盖
M:x>3取真时T1取假时F1
z<10取真时T2取假时F2
N:x4取真时T3取假时F3
y>5取真时T4取假时F4
条件:x>3z<10x4y>5
条件:x<3z>10x4y<5
根条件覆盖基思路8条件取值组合测试例表示
测试例输入
输出
取值条件
具体取值条件
覆盖路径
x4z5y8
k31 j0
T1T2T3T4
x>3z<10x4y>5
P1(ace)
x3z11y5
k0 j0
F1F2F3F4
x<3z>10x4y<5
P4(abd)
4判定条件覆盖
测试例输入
输出
取值条件
具体取值条件
覆盖路径
x4z5y8
k31 j0
T1T2T3T4
x>3z<10x4y>5
P1(ace)
x3z11y5
k0 j0
F1F2F3F4
x<3z>10x4y<5
P4(abd)
5组合覆盖
条件组合
1)x>3z<10 2)x>3z>10
3) x<3z<10 4)x<3z>10
5)x4y>5 6)x4y<5
7)x4y>5 8)x4y<5
测试例输入
输出
覆盖条件取值
覆盖条件组合
覆盖路径
x4z5y6
k23 j1
T1T2T3T4
15
P1(ace)
x4z10y5
k0 j0
T1F2T3F4
26
P2(acd)
x3z5y6
k14 j1
F1T2F3T4
37
P3(abe)
z3z10y5
k0 j2
F1F2F3F4
48
P4(abd)
6路径覆盖
测试例输入
输出
覆盖条件取值
覆盖条件组合
覆盖路径
x4z5y8
k31j0
T1T2T3T4
15
P1(ace)
x5z5y4
k19jsqrt(19)3
T1T2F3F4
18
P2(acd)
x4z11y6
k0j1
T1F2T3T4
25
P3(abe)
x2z11y5
k0j0
F1F2F3F4
48
P4(abd)
题目二:三角形问题
三角形计算中求输入三角型三边长:AB C三边构成三角形时提示错误构成三角形时计算三角形周长等腰三角形印等腰三角形等边三角形提示等边三角形画出程序流程图控制流程图计算圈复杂度V(g)找出基测试路径
核心程序代码
** 判断三角形类 *
public class TriangleTestMethod {
** 判断三角形种类参数a b c分三角形三边
* 返回参数值0表示非三角形
* 1表示普通三角形
* 2表示等腰三角形
* 3表示等边三角形
*
public static int comfirm(int a int b int c) {
if((a + b > c) && (b + c > a) && (a + c > b)) { 判断三角形
if((a b) && (b c)) 判断等边三角形
return 3
if((a b) || (b c) || (a c)) 判断等腰三角形
return 2
else 判断普通三角形
return 1
}
else { 非三角形
return 0
}
}
}
二程序流程图
三测试例
1语句覆盖测试例
输入
期输出
覆盖象
测试结果
Case1
a1 b2 c3
0
① ⑤
0
Case2
a3 b4 c5
1
① ② ④ ⑥
②
1
Case3
a3 b3 c4
2
① ② ④ ⑦
②
2
Case4
a3 b4 c5
3
① ② ③
②
3
2判定覆盖测试例
输入
期输出
覆盖象
测试结果
Case11
a1 b2 c3
0
② ⑤
0
Case12
a3 b4 c5
1
③ ② ④ ⑥
④
1
Case13
a3 b3 c4
2
③ ② ④ ⑦
④
2
Case14
a3 b4 c5
3
③ ② ③
④
3
3条件覆盖测试例
输入
期输出
覆盖象
测试结果
Case5
a1 b6 c7
0
F1 T2 T3
0
Case6
a7 b1 c6
0
T1 F2 T3
0
Case7
a1 b7 c6
0
T1 T2 F3
0
Case8
a3 b3 c4
2
T1 T2 T3 T4 F5 T6 F7 F8
2
Case9
a3 b4 c3
2
T1 T2 T3 F4 F5 F6 F7 T8
2
Case10
a4 b3 c3
2
T1 T2 T3 F4 T5 F6 T7 F8
2
4条件判定覆盖测试例
输入
期输出
覆盖象
测试结果
Case15
a1 b6 c7
0
F1 T2 T3
0
Case16
a7 b1 c6
0
T1 F2 T3
0
Case17
a1 b7 c6
0
T1 T2 F3
0
Case18
a3 b3 c4
2
T1 T2 T3 T4 F5 T6 F7 F8
2
Case19
a3 b4 c3
2
T1 T2 T3 F4 F5 F6 F7 T8
2
Case20
a4 b3 c3
2
T1 T2 T3 F4 T5 F6 T7 F8
2
Case21
a3 b3 c3
3
F1 T2 T3
(3 ② ③)
3
Case22
a3 b4 c5
1
T1 F2 T3
(① ② ④ ⑥)
1
5条件组合覆盖测试例
输入
期输出
覆盖象
测试结果
Case23
a1 b6 c7
0
F1 T2 T3
0
Case24
a7 b1 c6
0
T1 F2 T3
0
Case25
a1 b7 c6
0
T1 T2 F3
0
Case26
a3 b3 c4
2
T1 T2 T3 T4 F5 T6 F7 F8
2
Case27
a3 b4 c3
2
T1 T2 T3 F4 F5 F6 F7 T8
2
Case28
a4 b3 c3
2
T1 T2 T3 F4 T5 F6 T7 F8
2
Case29
a3 b4 c5
1
T1 T2 T3
F4 F5
F6 F7 F8
1
Case30
a3 b4 c3
2
T1 T2 T3
F4 F5
F6 F7 T8
2
备注
条件组合法达结束
四程序控制流图
基路径覆盖测试例
输入
期输出
覆盖象
测试结果
Case31
a1 b6 c7
0
A>D
0
Case32
a7 b6 c1
0
A>B>D
0
Case33
a1 b7 c6
0
A>B>C>D
0
Case34
a3 b3 c3
3
A>B>C>E>G>H
3
Case35
a3 b3 c4
2
A>B>C>E>G>I
2
Case36
a4 b3 c3
2
A>B>C>E>F>H
2
Case37
a3 b4 c3
2
A>B>C>E>F>J>H
2
Case38
a3 b4 c5
1
A>B>C>E>F>J>K
1
题目三:计算生日星期
已知公元1年1月1日星期编写程序输入年月日回答天星期应逻辑覆盖方法基路径测试方法面问题设计测试例
.程序代码
#include
int check(int yearint monthint day){
int pass1
int leap0
if( (year40 && year1000 )|| year4000 )
leap1
if(year<1 ||day<1) return 0
switch(month)
{ case 1case 3case 5case 7case 8case 10case 12if(day>31)return 0break
case 4case 6case 9case 11if(day>30) return 0 break
case 2 if(leap1&&day>29) {return 0}
if(leap0&&day>28){return 0}
break
defaultreturn 0break
}
return pass
}
void fun(){
int yearmonthdaysumday
sumday0
printf(input yearmonthday\n)
scanf(ddd&year&month&day)
if(check(yearmonthday)0){printf(输入日期效)return}
if(month1||month2)
{ month+12
year
}
sumday(day+2*month+3*(month+1)5+year+year4year100+year400)7
if(month13||month14)
{ month12 year++}
switch(sumday)
{case 0printf(ddd is Monday\nyearmonthday)break
case 1printf(ddd is Tuesday\nyearmonthday)break
case 2printf(ddd is Wednesday\nyearmonthday)break
case 3printf(ddd is Thurday\nyearmonthday)break
case 4printf(ddd is Friday\nyearmonthday)break
case 5printf(ddd is Saturday\nyearmonthday)break
case 6printf(ddd is Sunday\nyearmonthday)break
defaultprintf(date error)break
}
}
main()
{ for(int i0i<14i++)
fun()
}
二.画出程序控制流图
1程序流程图:
month13||month14
no
month1||month2
yes
month+12
year
计算星期数sumday公式(yearmonthday)
no
yes
Month12
year++
5
4
6
0 1 2 3 4 5 6
sumday
输出语句1
输出语句2
输出语句3
输出语句4
输出语句5
输出语句6
输出语句7
输出语句0
结束
7
8
9
10
11
12
13
14
15
15
输入年月日yearmonthday
2
3
end
Check(yearmonthday)
0
1
Check( )函数
no
no
no
yes
yes
yearmonthday
year<1 ||day<1
no
(year40 && year1000 )|| year4000
1 3 5 7 8 10 12 4 6 9 11 2
month
return pass
pass1 leap0
leap1
return 0
day>31
day>30
return 0
no
yes
return 0
yes
leap1&&day>29
leap0&&day>28
return 0
16
18
17
19
20
21
22
23
24
25
26
28
29
28
27
31
30
32
33
2程序控制流图:
16
19
17
21
22
23
24
31
33
34
end
15
2
4
3
5
8
7
6
12
end
9
10
11
13
14
3基路径测试路径
编号
基路径
编号
基路径
1
⒃⒄⒆(21)(24)(31)(33)
11
(0)①
2
⒃⒆(34)
12
(0)②③④⑤⑥⑦⑧
3
⒃⒆(21)(34)
13
(0)②④⑤⑦⑨
4
⒃⒆(21)(22)(34)
14
(0)②④⑤⑦⑩
5
⒃⒆(21)(23)(34)
15
(0)②④⑤⑦(11)
6
⒃⒆(21)(24)(34)
16
(0)②④⑤⑦(12)
7
⒃⒆(21)(31)(34)
17
(0)②④⑤⑦(13)
8
⒃⒆(21)(22)(33)
18
(0)②④⑤⑦(14)
9
⒃⒆(21)(23)(33)
10
⒃⒆(21)(31)(33)
条件
编号
条件
编号
编号
T1
month1
T13
year1000
T25
month2
T2
month2
T14
year1000
T26
month3
T3
month13
T15
year4000
T27
month4
T4
month14
T16
year<1
T28
month5
T5
sumday0
T17
day<1
T29
month6
T6
sumday1
T18
month1
T30
month7
T7
sumday2
T19
day>31
T31
month8
T8
sumday3
T20
day>30
T32
month9
T9
sumday4
T21
leap1
T33
month10
T10
sumday5
T22
leap0
T34
month11
T11
sumday6
T23
day>29
T35
month12
T12
year40
T24
day>28
4测试例
例编号
输入数
预期输出
实际输出
执行路径
覆盖条件
1
2012 2 1
Wednesday
Wednesday
(0)②③④⑤⑥⑦⑧
T12T13T25T21T2T4T7
2
2012 3 1
Thurday
Thurday
(0)②④⑤⑦⑨
T12T13T26T8
3
2012 4 6
Friday
Friday
(0)②④⑤⑦⑩
T12T13T27T9
4
2012 5 5
Saturday
Saturday
(0)②④⑤⑦(11)
T12T13T28T10
5
2012 6 3
Sunday
Sunday
(0)②④⑤⑦(12)
T12T13T29T11
6
2012 7 30
Monday
Monday
(0)②④⑤⑦(13)
T12T13T30T5
7
2000 8 15
Tuesday
Tuesday
(0)②④⑤⑦(14)
T12T15T31T6
8
2012 9 31
错误提示
错误提示
(0)①
T12T13T20T32
9
2013 2 8
Wednesday
Wednesday
⒃⒄⒆(21)(24)(31)(33)
T25T22T2T4T7
10
2013 0 12
错误提示
错误提示
⒃⒆(34)
T17
11
2013 1 26
Saturday
Saturday
⒃⒆(21)(34)
T18T1T3T10
12
2013 10 33
错误提示
错误提示
⒃⒆(21)(22)(34)
T33T19
13
2013 11 31
错误提示
错误提示
⒃⒆(21)(23)(34)
T34T20
14
2012 2 30
错误提示
错误提示
⒃⒆(21)(24)(34)
T12T13T25T21T23
15
2013 2 29
错误提示
错误提示
⒃⒆(21)(31)(34)
T25T24
16
2013 12 31
Saturday
Saturday
⒃⒆(21)(22)(33)
T35T10
17
2013 6 30
Sunday
Sunday
⒃⒆(21)(23)(33)
T29T11
18
2013 2 15
Friday
Friday
⒃⒆(21)(24)(31)(33)
T25T22T2T4T9
19
0 12 12
错误提示
错误提示
⒃⒆(34)
T16
题目四:选择排序
面选择排序程序中datalist数表两数成员:元素类型Element数组V数组n算法中两操作取某数组元素V[i]关键码操作getKey ( )交换两数组元素容操作Swap( )::
void SelectSort ( datalist & list ) {
表listV[0]listV[n1]进行排序 n表前长度
for ( int i 0 i < listn1 i++ ) {
int k i listV[i]keylistV[n1]key中找具关键码象
for ( int j i+1 j < listn j++)
if ( listV[j]getKey ( ) < listV[k]getKey ( ) ) k j前具关键码象
if ( k i ) Swap ( listV[i] listV[k] ) 交换
}
}
(1) 试计算程序段McCabe复杂性
(2) 基路径覆盖法出测试路径
(3) 测试路径设计测试例
解答:
首先画出程序流程图
开始
i 0
i < listn1
j++
k i
j < listn
k j
k i
Swap ( listV[i] listV[k] )
listV[j] < listV[k]
i++
结束
j i+1
Y
N
N
N
N
Y
Y
Y
程序流程图
(1)McCabe复杂性:
V(G)判定节点数+14+15
(2)基路径覆盖法出测试路径:
1
2
3
4
5
6
7
8
9
10
11
12
程序图
0
程序图中确定关基路径:
Path101212
Path2 012345911
Path3 01234591011
Path4 01234568
Path5 012345678
(3)测试路径设计测试例:
节点2节点5判定条件等价Path2Path3直达
A{1}n1
路径:01212
A{12}n2
路径:012345685911212
A{21}n2
路径:012345678591011212
A{132 }n3
路径:0123456859112345678591011212
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档