1、准考证号码
对招干考试系统“输入学生成绩”子模块设计测试用例。招干考试分三个专业,准考证号第一位为专业代号,如:
1-行政专业,
2-法律专业,
3-财经专业。
行政专业准考证号码为:110001~111215
法律专业准考证号码为:210001~212006
财经专业准考证号码为:310001~314015
请划分准考证号码的等价类。
输入条件 |
有效等价类 |
编号 |
无效等价类 |
编号 |
行政专业准考证号码 |
110001~111215数字串 |
(1) |
负无穷~110000 |
(4) |
法律专业准考证号码 |
210001~212006数字串 |
(2) |
111216~310000 |
(5) |
财经专业准考证号码 |
310001~314015数字串 |
(3) |
314016~正无穷 |
(6) |
序号 |
输入参数 |
覆盖等价类 |
输出参数 |
1 |
110002 |
(1) |
输入正确 |
2 |
210012 |
(2) |
输入正确 |
3 |
310022 |
(3) |
输入正确 |
4 |
10000 |
(4) |
输入错误 |
5 |
200000 |
(5) |
输入错误 |
6 |
340000 |
(6) |
输入错误 |
2、电话号码
城
2、电话号码
城市的电话号码由两部分组成。这两部分的名称和内容分别是:
1)地区码:以0开头的三位或者四位数字(包括0);
2)电话号码:以非0、非1开头的七位或者八位数字。
假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,请使用等价分类法来设计它的测试用例。
输入条件 |
有效等价类 |
编号 |
无效等价类 |
编号 |
地区码 |
0开头 |
(1) |
非0开头 |
(7) |
三位数字串 |
(2) |
<三位数字串 |
(8) |
|
四位数字串 |
(3) |
>四位数字串 |
(9) |
|
电话号码 |
非0 and 非1开头 |
(4) |
以0开头 |
(10) |
以1开头 |
(11) |
|||
七位数字串 |
(5) |
<七位数字串 |
(12) |
|
八位数字串 |
(6) |
>八位数字串 |
(13) |
序号 |
输入参数 |
覆盖等价类 |
输出参数 |
1 |
012-8725656 |
(1)(2)(4)(5) |
输入正确 |
2 |
0123-8546523 |
(1)(3)(4)(5) |
输入正确 |
3 |
012-84864878 |
(1)(2)(4)(6) |
输入正确 |
4 |
110-6845316 |
(7) |
输入错误 |
5 |
01-5645642 |
(8) |
输入错误 |
6 |
01111-4552135 |
(9) |
输入错误 |
7 |
012-0464534 |
(1)(2)(10) |
输入错误 |
8 |
012-1455544 |
(1)(2)(11) |
输入错误 |
9 |
012-15454 |
(1)(2)(12) |
输入错误 |
10 |
0123-454514542 |
(1)(3)(13) |
输入错误 |
3、保险公司计算保费费率的程序
某保险公司的人寿保险的保费计算方式为:投保额×保险费率
其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如表1所示。
表1 保险公司计算保费费率的规则
年龄 |
性别 |
婚姻 |
抚养人数 |
||||
20~39 |
40~59 |
其它 |
M |
F |
已婚 |
未婚 |
1人扣0.5点 最多扣3点 (四舍五入取整) |
6点 |
4点 |
2点 |
5点 |
3点 |
3点 |
5点 |
分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。
- 年龄:一位或两位非零整数,值的有效范围为1~99。
- 性别:一位英文字符,只能取值‘M’或‘F’。
- 婚姻:字符,只能取值‘已婚’或‘未婚’。
- 抚养人数:空白或一位非零整数(1~9)
- 点数:一位或两位非零整数,值的范围为1~99
根据表1中的等价类表,设计能覆盖所有等价类的测试用例。
输入条件 |
有效等价类 |
编号 |
无效等价类 |
编号 |
年龄 |
1~99整数 |
(1) |
非1~99整数 |
(9) |
性别 |
‘M’ |
(2) |
非‘M’and非‘F’ |
(10) |
‘F’ |
(3) |
|||
婚姻 |
‘已婚’ |
(4) |
非‘已婚’and 非‘未婚’ |
(11) |
‘未婚’ |
(5) |
|||
抚养人数 |
null |
(6) |
非 null and 非1~9整数 |
(12) |
1~9整数 |
(7) |
|||
点数 |
1~99整数 |
(8) |
非1~99整数 |
(13) |
序号 |
输入参数 |
覆盖等价类 |
输出参数 |
1 |
(50,‘M’,‘已婚’,null) |
(1)(2)(4)(6)(8) |
保险率为0.6% |
2 |
(18,‘F’,‘未婚’,null) |
(1)(3)(5)(6)(8) |
保险率为0.6% |
3 |
(45,‘F’,‘已婚’,8) |
(1)(3)(4)(7)(8) |
保险率为0.1% |
4 |
(101,‘M’,‘已婚’,null) |
(9) |
输入错误 |
5 |
(65,‘H’,‘未婚’,5) |
(1)(10) |
输入错误 |
6 |
(78,‘F’,‘假婚’,null) |
(1)(3)(11) |
输入错误 |
7 |
(88,‘M’,‘已婚’,11) |
(1)(2)(4)(12) |
输入错误 |
4、输入:用户密码
要求:
1)用户密码为6到8位。
2)必须含有字母和数的组合。
输出: 如正确,输出正确的信息。否则,输出相应的错误信息。
请结合等价类划分法和边界值分析法设计出相应的测试用例。
输入条件 |
有效等价类 |
编号 |
无效等价类 |
编号 |
用户密码 |
6<=位数<=8 |
(1) |
位数<6 |
(3) |
位数>8 |
(4) |
|||
包含字母和数字 |
(2) |
不包含数字 |
(5) |
|
不包含字母 |
(6) |
序号 |
输入参数 |
覆盖等价类 |
输出信息 |
1 |
1234abcd |
(1)(2) |
输入正确 |
2 |
1234a |
(3) |
输入错误 |
3 |
123456789df |
(4) |
输入错误 |
4 |
abcdedf |
(1)(5) |
输入错误 |
5 |
1234567 |
(1)(6) |
输入错误 |
5、给出某一天(年,月, 日),计算出它的下一天,取值范围为:
年:1000<= year <=3000 月:1<=month <=12 日:1<= day <=31
如 1999年3月4日的下一天是:1999年3月5日
要求:
输入:三个参数(年,月, 日)
输出:如能正确计算,计算出它的下一天,
否则,输出相应的错误信息。
1)使用C语言编写程序实现
2)请结合等价类划分法和边界值分析法设计出相应的测试用例,并依照测试用例对所编写的程序进行测试。
(1)代码如下:
#include<stdio.h>
void main()
{
int year;
int month,maxmonth=12;
int day,maxday;
printf("请输入年份:(1000~3000)");
scanf("%d",&year);
if(year<1000 || year>3000)
{
printf("输入错误!请从新输入!\n");
printf("请输入年份:(1000~3000)");
scanf("%d",&year);
}
printf("请输入月份:(1~12)");
scanf("%d",&month);
if(month<1 || month>12)
{
printf("输入错误!请从新输入!\n");
printf("请输入月份:(1~12)");
scanf("%d",&month);
}
if(month==4||month==6||month==9||month==11)
maxday=30;
else if(month==2)
{
if(year%400==0 || year%4==0)
maxday=28;
else
maxday=29;
}
else
maxday=31;
printf("请输入日份:(1~31)");
scanf("%d",&day);
if(day<1 || day>maxday)
{
printf("输入错误!请从新输入!\n");
printf("请输入日份:(1~31)");
scanf("%d",&day);
}
if(month==maxmonth && day==maxday)
{
year=year+1;
month=1;
day=1;
}
else if(day==maxday)
{
month=month+1;
day=1;
}
else
day=day+1;
printf("下一天是%d年%d月%d日",year,month,day);
}
(2)
输入条件 |
有效等价类 |
编号 |
无效等价类 |
编号 |
年 |
1000<=year<=3000 |
(1) |
<1000 |
(4) |
>3000 |
(5) |
|||
月 |
1<=month<=12 |
(2) |
<1 |
(6) |
>12 |
(7) |
|||
日 |
1<=day<=31 |
(3) |
<1 |
(8) |
>31 |
(9) |
边界测试用例
序号 |
输入参数 |
输出结果 |
1 |
20000228 |
2000年3月1日 |
2 |
9990105 |
输入错误!请从新输入! |
3 |
30010312 |
输入错误!请从新输入! |
4 |
20120012 |
输入错误!请从新输入! |
5 |
20111323 |
输入错误!请从新输入! |
6 |
20180300 |
输入错误!请从新输入! |
7 |
20560432 |
输入错误!请从新输入! |
等价类测试用例
序号 |
输入参数 |
覆盖等价类 |
输出结果 |
1 |
20020105 |
(1)(2)(3) |
2002年1月6日 |
2 |
9910502 |
(4) |
输入错误!请从新输入! |
3 |
30120515 |
(5) |
输入错误!请从新输入! |
4 |
20120015 |
(1)(6) |
输入错误!请从新输入! |
5 |
20141325 |
(1)(7) |
输入错误!请从新输入! |
6 |
20070400 |
(1)(2)(8) |
输入错误!请从新输入! |
7 |
20010632 |
(1)(2)(9) |
输入错误!请从新输入! |
6、假设中国某航空公司规定:
中国去欧美的航线所有座位都有食物供应。每个座位都可以播放电影。
中国去非欧美的国外航线都有食物供应,只有商务仓可以播放电影。
中国国内的航班的商务仓有食物供应,但是不可以播放电影 。
中国国内的航班的经济仓除非飞行时间大于2小时就有食物供应,但是不可以播放电影。
使用决策表法设计测试用例。
1 |
2 |
3 |
4 |
5 |
6 |
||
航 线 |
中国去欧美? |
Y |
N |
N |
N |
N |
N |
中国去非欧美的国外? |
N |
Y |
Y |
N |
N |
N |
|
中国国内的航班 |
N |
N |
N |
Y |
Y |
Y |
|
商务仓 |
-- |
Y |
N |
Y |
-- |
N |
|
飞行时间>2小时 |
-- |
-- |
-- |
-- |
Y |
-- |
|
服 务 |
食物供应 |
√ |
√ |
√ |
√ |
√ |
-- |
播放电影 |
√ |
√ |
-- |
-- |
-- |
-- |
|
测试用例 |
美国 |
亚洲,商务仓 |
亚洲 |
中国,商 务 仓 |
中国,飞 行 时 间 >2 |
中国 |
7、有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
要求:1)列出原因和结果,画出因果图
2)根据因果图,建立判定表
3)根据判定表设计测试用例数据
(1)
原因:
1----投5角硬币
2----投1元硬币
3----按【啤酒】按钮
4----按【橙汁】按钮
5----售货机有零钱(灯亮)
6----售货机没有零钱(灯暗)
结果
21----出饮料
22----出饮料,找零钱
23----不出饮料,退钱
因果图如下:
11,12为中间节点
(2)(3)
1 |
2 |
3 |
4 |
5 |
6 |
||
条 件 |
1 |
Y |
Y |
N |
N |
N |
N |
2 |
N |
N |
Y |
Y |
Y |
Y |
|
3 |
Y |
N |
Y |
Y |
N |
N |
|
4 |
N |
Y |
N |
N |
Y |
Y |
|
5 |
-- |
-- |
Y |
N |
Y |
N |
|
6 |
-- |
-- |
N |
Y |
N |
Y |
|
11 |
Y |
Y |
Y |
Y |
Y |
Y |
|
12 |
Y |
Y |
Y |
Y |
Y |
Y |
|
动 作 |
21 |
√ |
√ |
√ |
-- |
√ |
-- |
22 |
-- |
-- |
√ |
-- |
√ |
-- |
|
23 |
-- |
-- |
-- |
√ |
-- |
√ |
|
测试用例 |
投5角硬币按啤酒按钮 |
投5角硬币按橙汁按钮 |
投1元硬币选择啤酒按钮售货机有零钱 |
投1元硬币选择啤酒按钮售货机没有零钱 |
投1元硬币选择橙汁按钮售货机有零钱 |
投1元硬币选择橙汁按钮售货机没有零钱 |