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元硬币选择橙汁按钮售货机没有零钱 |