2<等腰三角形)
2、阅读下面的一段程序,
voidTest2(intX,intA,intB>
1{
2intk=0,j=0。
3if((A>1>&&(B=0>>
4{
5X=X/A。
6k=A*B-1。
7}
8if((A==2>||(X>1>>
9X=X+1。
10j=X+3。
11}//Test2
根据所给定的程序,确定该程序的独立路径如下:
路径1:
3→8→10→11
路径2:
3→5→6→8→10→11
路径3:
3→8→9→10→11
路径4:
3→5→6→8→9→10→11
编程实现:
对每一个独立路径,设计一个测试用例,并插入一条显示输出语句RTCrpUDGiT
输入格式:
输入输出格式:
输出k=j=
路径ID:
例如:
输入1,2,1↙<回车)
输出k=0j=5
路径ID:
测试路径4
练习题<三)
1、假设某保险公司的人寿保险的保费计算方式为:
投保额×保险费率。
其中,保险费率依点数不同而有别,具体规则见下表。
5PCzVD7HxA
年龄
性别
婚姻
点数与保险费率
20-39
40-59
其它
男M
女F
已婚T
未婚F
≥10点A
<10点B
6点
4点
2点
5点
3点
3点
5点
0.6%
0.1%
根据问题的规格说明,从输入条件划分等价类。
输入等价类
输入
ID
有效等价类
ID
无效等价类
年龄
1
20-39岁
8
年龄小于1
2
40-59岁
3
其它年龄
性别
4
男性
9
除“M”“F”字符外
5
女性
婚姻
6
已婚
10
除“T”、“F”字符外
7
未婚
编程实现:
<1)对每一个有效等价类,至少设计一个测试用例。
输入格式:
输入<年龄-性别-婚姻):
输出格式:
输出保险费率<%):
例如:
输入<年龄-性别-婚姻):
27,M,F↙<回车)
输出1,4,7
保险费率<%):
0.6
<2)对每一个无效的输入,设计一个无效等价类,并设计测试用例。
例如:
输入<年龄-性别-婚姻):
27,M,X↙<回车)
输出无效婚姻输入
保险费率<%):
2、阅读下面的一段程序,
voidTest3(intX,intY,intZ>
1{
2intk=0,j=0。
3if((X>3>&&(Z<10>>
4{
5k=X*Y-1。
6j=sqrt(k>。
7}
8if((X==4>||(Y>5>>
9j=X*Y+10。
10j=j%3。
11}//Test3
根据所给定的程序,该程序的可能路径如下:
路径1:
1→2→3→5→6→8→9→10→11
路径2:
1→2→3→8→10→11
路径3:
1→2→3→8→9→10→11
路径4:
1→2→3→5→6→8→10→11
编程实现:
<1)设计测试用例,实现分支判定覆盖,使得每个判定中的真假值至少执行一次,并在判定路径中插入一条显示输出语句jLBHrnAILg
输入格式:
输入输出格式:
输出k=j=
路径ID:
例如:
输入2,5,5↙<回车)
输出k=0j=0
路径ID:
路径2:
1→2→3→8→10→11
<2)设计测试用例,实现路径覆盖,使得每个可能路径至少执行一次。
输入格式:
输入输出格式:
输出k=j=
路径ID:
例如:
输入4,5,5↙<回车)
输出k=19j=0
路径ID:
路径1:
1→2→3→5→6→8→9→10→11
练习题<四)
1、某软件规格说明书对某二位编码的定义如下:
编码的第一个字符必须是A或B,第二个字符必须是一位数字,此情况下给出信息:
编码正确;如果第一个字符不是A或B,则给出信息:
编码错误;如果第一个字符是A或B,第二个字符不是数字,则给出信息:
修改编码。
根据问题的规格说明,列出因果表,将因果表转换成简化的决策表。
xHAQX74J0X
因果表
ID
原因<输入)
ID
结果<输出)
1
第一个字母是A
X
显示编码错误
2
第一个字母是B
Y
显示编码正确
3
第二个字母是数字
Z
显示修改编码
因果图转换成简化的决策表
规则
ID
1
2
3
4
5
1
2
3
Y
N
Y
Y
N
N
N
Y
Y
N
Y
N
N
N
Y/N
X
Y
Z
√
√
√
√
√
编程实现:
<1)对每一个规则,至少设计一个测试用例。
输入格式:
输入<编码XY):
输出格式:
输出例如:
输入<编码XY):
A,A↙<回车)
输出Z<修改编码)
<2)假设1≤Y≤9,设计边界值测试用例。
例如:
输入A0↙<回车)
输出X<编码错误)
2、阅读下面一段程序,程序的功能是:
计算学生的人数、学生成绩的平均值和总分数。
该程序运行最多输入50个学生成绩,以-1作为结束标志。
LDAYtRyKfE
voidTest4(intn1,intsum,intaverage>
{
1inti=1,n1=n2=0,sum=0。
2while((score[i]<>-1>&&(n2<50>>
3{
4n2=n2+1。
5if((score[i]>0>&&(score[i]<100>>
6{
7n1=n1+1。
8sum=sum+score[i]。
9}
10i=i+1。
11}
12if(n1>0>
13average=sum/n1。
14else
15average=-1。
16}//Test4
根据所给定的程序,该程序的独立路径如下:
路径1:
1→2→12→13→16
路径2:
1→2→12→14→15→16
路径3:
1→2→4→5→7→8→10→11→2→4→…11→12→13→16
路径4:
1→2→4→5→10→11→2→4→…11→12→14→15→16
编程实现:
对每一个独立路径,设计一个测试用例,并插入一条显示输出语句Zzz6ZB2Ltk
输入格式:
输入输出格式:
输出n1=sum=average=
路径ID:
例如:
输入-1↙<回车)
输出n1=40sum=3000average=75
路径ID:
路径1:
1→2→12→13→16
练习题<五)
1、假设某单位内部电话号码由三部分组成,分别是:
分机号+前缀+后缀。
其中,分机号为空白或一位数字;前缀为非‘0’开头的二位数字;后缀为非全0的3位数字。
假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的电话号码。
根据问题的规格说明,从输入条件划分等价类。
dvzfvkwMI1
输入等价类
输入
ID
有效等价类
ID
无效等价类
分机号
1
1位数字
5
多于1位数字
2
空白
6
1位非数字
前缀
3
01-99
7
少于2位数字
8
多于2位数字
9
含有非数字
10
起始位为‘0’
后缀
4
001-999
11
少于3位数字
12
多于3位数字
13
含有非数字
14
全‘0’
编程实现:
<1)对每一个有效等价类,至少设计一个测试用例。
输入格式:
输入<分机号-前缀-后缀):
输出格式:
输出<接受Y/拒绝N):
覆盖等价类例如:
输入<分机号-前缀-后缀):
3,12,001↙<回车)
输出<接受Y/拒绝N):
Y
覆盖等价类1,3,4
<2)对每一个无效的输入,设计一个无效等价类,并设计测试用例。
例如:
输入<分机号-前缀-后缀):
#,12,111↙<回车)
输出<接受Y/拒绝N):
N
覆盖等价类6
2、阅读下面的一段程序,
voidTest5(intX,intY,intZ>
1{
2intk=0,j=0。
3if((X>3>&&(Z<10>>
4{
5k=X*Y-1。
6j=sqrt(k>。
7}
8if((X==4>||(Y>5>>
9j=X*Y+10。
10j=j%3。
11}//Test5
根据所给定的程序,该程序的可能路径如下:
路径1:
1→2→3→5→6→8→9→10→11
路径2:
1→2→3→8→10→11
路径3:
1→2→3→8→9→10→11
路径4:
1→2→3→5→6→8→10→11
编程实现:
<1)设计测试用例,实现语句覆盖,并在每条语句后插入一条显示输出语句rqyn14ZNXI
输入格式:
输入输出格式:
输出k=j=
路径ID:
例如:
输入4,5,5↙<回车)
输出k=19j=0
路径ID:
路径1:
1→2→3→5→6→8→9→10→11
执行语句2
执行语句3
执行语句5
执行语句6
执行语句8
执行语句9
执行语句10
<2)设计测试用例,实现条件覆盖,使得每个判定中的每个条件至少执行一次。
输入格式:
输入输出格式:
输出k=j=
路径ID:
例如:
输入2,5,15↙<回车)
输出k=0j=0
路径ID:
路径2:
1→2→3→8→10→11
申明:
所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。