问答题 一个大学信息学院学生管理系统软件,其学生文件Student记录的部分属性包括Name、Num、Age、Sex、Dept等,其中:
Name(学生名)要求最少2个字符,最多8个字符;
Num(学号)要求是10位无符号整数,取值范围为2010200001~2010203335;
Age(年龄)要求是2位无符号整数,取值范围为12~99;
Sex(性别)是枚举型,只有两个取值male(男)、female(女);
Dept(系名)是枚举型,取值可以是AT(自动化系)、CS(计算机系)、ET(电子系)、MN(微纳电子系)、SW(软件学院)。
现有一个新开发的查询程序,要求输入学生年龄的上限A、性别S、系名D,利用文件Student查询所有年龄小于A岁且性别为S的D系的学生并输出这些学生的姓名和年龄。
请针对此程序完成以下工作:
问答题 给出该查询程序的查询条件表达式。
【正确答案】Age<=A AND Sex==S AND Dept==D THEN输出学生的姓名和年龄;
【答案解析】
问答题 用等价类测试方法给出输入条件的等价类表。
【正确答案】条件等价类表
输入条件 有效等价类 无效等价类
年龄上限A 12<=上限A<=99 上限A<12,
上限A>99
性别S (male, female)枚举值 枚举以外的值
系名D (AT, CS, ET, MN,
SW)枚举值
枚举以外的值
【答案解析】
问答题 某8位数计算机,其十六进制常数定义为:以0X或0x开头的十六进制整数,其值的范围是-7f~7f(表示十六进制时大小写字母不加区别),如0X13,0X6A,-0x3C。 问题:根据上述条件使用等价类划分的方法设计测试用例。
【正确答案】1.划分等价类并编号,如表1所示。
{{B}}表1 等价类及编号{{/B}}
输入数据 有效等价类 无效等价类
十六进制整数 1.以0X或0x开头
的1~2位数字串
3.非0X或非0x开头的数字串
4.含非数字且(a, b, c, d, e, f)
以外的字符
5.多于5个字符
2.以-0x开头的
1~2位数字串
6.-后跟非0的多位数字串
7.-0后跟数字串
8.-后多于3个数字
十六进制整数范同 9.在-7f~7f之间 10.小于-7f
11.大于7f
  2.为有效等价类设计测试用例,表中有3个有效等价类,设计测试用例如表2所示。
{{B}}表2 测试用例{{/B}}
测试数据 期望结果 覆盖范围
0X23 显示有效输入 1,9
-0X5 显示有效输入 2,9
  3.为无效等价类设计测试用例,表中有8个无效等价类,设计测试用例如表3所示。
{{B}}表3 测试用例{{/B}}
测试数据 期望结果 覆盖范围
82 显示无效输入 3
0x123456 显示无效输入 5
-012 显示无效输入 7
-0x80 显示无效输入 10
5g 显示无效输入 4
-23 显示无效输入 6
-0x123 显示无效输入 8
0x80 显示无效输入 11
【答案解析】
问答题 某函数包含3个变量:month, day, year。函数的输出是输入日期后一天的日期。例如:若输入为2008年3月7日,则函数输出应为2008年3月8日。要求函数的变量输入month、day、year均为整数值,并且满足条件:1=<month<=12,1=<day<=31,2001=<year<=2008。 采用等价类法为该函数设计测试用例,写出具体的等价类划分。
【正确答案】有效等价类:
M1={month: 1=<month<=12}
D1={day: 1=<day<=31}
Y1={year: 2001=<year<=2008}
无效等价类:
M2={month: month<1}
M3={month: month>12}
M4={month: month非数字}
D2={day: day<1}
D3={day: day>31}
D4={day: day非数字}
Y2={year: year<2001}
Y3={year: year>2008}
Y4={year: year非数字}
{{B}}表1 等价类表格{{/B}}
输入条件 有效等价类 无效等价类
标识符个数 1个(1),多个(2) 0个(3)
标识符字符个数 1~8个(4) 0个(5),大于8个(6),大于80个(7)
标识符组成 字母(8),数字(9) 非字母数字字符(10),保留字(11)
标识符第一个字符 字母(12) 非字母(13)
标识符使用 先说明后使用(14) 未说明已使用(15)
{{B}}表2 弱一般等价类测试用例{{/B}}
测试用例 a b c 预期输出
WN1 5 5 5 等边三角形,属等价类R1
WN2 2 2 3 等腰三角形,属等价类R2
WN3 3 4 5 不等边三角形,属等价类R3
WN4 4 1 2 非三角形,属等价类R4
{{B}}表3 追加的弱健壮等价类测试用例(针对无效等价类){{/B}}
测试用例 a b c 预期输出
WR1 -1 5 5 a取值不在所允许的取值值域内
WR2 5 -1 5 b取值不在所允许的取值值域内
WR3 5 5 -1 c取值不在所允许的取值值域内
WR4 201 5 5 a取值不在所允许的取值值域内
WR5 5 201 5 b取值不在所允许的取值值域内
WR6 5 5 201 c取值不在所允许的取值值域内
{{B}}表4 追加的强健壮等价类测试用例(不良输入){{/B}}
测试用例 a b c 预期输出
SR1 -1 5 5 a取值不在所允许的取值值域内
SR2 5 -1 5 b取值不在所允许的取值值域内
SR3 5 5 -1 c取值不在所允许的取值值域内
SR4 -1 -1 5 a、b取值不在所允许的取值值域内
SR5 5 -1 -1 b、c取值不在所允许的取值值域内
SR6 -1 5 -1 a、c取值不在所允许的取值值域内
SR7 -1 -1 -1 a、b、c取值不在所允许的取值值域内
【答案解析】
问答题 以试卷评分和成绩统计的程序为例,说明采用边界值法设计测试用例的过程。 试卷评分和成绩统计的程序规格说明如下: 程序的输入条件由80个字符的记录组成。所有这些记录分为3组: (1)标题; (2)各题的标准答案记录(1~999道题); (3)学生的答卷描述。 程序的输出有4个报告: (1)按学生学号排序,每个学生的成绩和等级报告; (2)按学生的成绩进行排序; (3)平均分数及标准偏差报告; (4)试题分析报告。
【正确答案】下面使用边界值分析法设计测试用例,如表1和表2所示。
{{B}}表1 输入条件边界分析表{{/B}}
输入条件 测试用例
输入文件 空输入文件
标题 无标题
只有1个字符
具有80个字符
出题个数 出了1道题
出了50道题
出了51道题
出了100道题
出了999道题
没出问题
题目数是非数值型
答案记录 标题记录后没有标准
答案记录
标准答案记录多1个
标准答案记录少1个
学生人数 学生人数0
学生人数1
学生人数200
学生人数201
学生答案 文件中第一个学生
文件中最后一个学生
{{B}}表2 输出条件边界值分析表{{/B}}
输出条件 测试用例
学生得分 所有学生得分相同
所有学生得分不同
一个学生得0分
一个学生得100分
输出报告1、2 编号最小和最大的学生
学生人数打印一页
学生人数打印一页后尚多一人
输出报告3 平均值取最大值
平均值取最小值
差距最大
差距最小
输出报告4 所有学生答对1题
所有学生答错1题
所有学生答对最后1题
所有学生答错最后1题
【答案解析】
问答题 NextDate函数的判定表测试用例设计。 NextDate函数要求函数的输出是输入日期后一天的日期。例如:若输入为2008年3月7日,则函数输出应为2008年3月8日。 问题:对上述函数采用判定表方法设计测试用例。
【正确答案】问题分析:NextDate函数的3个变量之间在输入定义域中存在一定的逻辑依赖关系,由于等价类划分和边界值分析测试都假设了变量是独立的,如果采用上述两种方法设计测试用例,那么这些依赖关系在机械地选取输入值时可能会丢失。而采用判断表法则可以通过使用“不可能动作”的概念表示条件的不可能组合,来强调这种依赖关系。 为了获得下一个日期,NextDate函数执行如下操作: (1)如果输入日期不是当月最后一天,则把day变量的值加1。 (2)如果输入日期是1~11月份中某月地最后一天,则把day变量的值复位为1,month变量的值加1。 (3)如果输入日期是12月的最后一天,则day变量和month变量的值都复位为1,year变量的值加1。 (4)关于最后一天的判断: ·如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31; ·如果是有30天的月份(4,6,9,11),day变量值为30; ·如果是有29天的月份(闰年的2月),day变量值为29; ·如果是有28天的月份(非闰年2月),day变量值为28。 根据所执行的操作,可列出NextDate函数的动作桩: a1:不可能;a2:day加1;a3:day复位;a4:month加1;a5:month复位:a6:day加1 考虑到判断表的规模,条件使刚month、day、year变量的等价类。在以下等价类集合上建立判断表。 (1)对于month变量的取值 M1: {month: month有30天} M2: (month: month有31天,12月除外} M3: {month: month有12月} M4: {month: month有2月} (2)对于day变量的取值 D1: {day:1≤day≤27} D2: {day: day=28} D3: {day: day=29} D4: {day: day=30} D5: {day: day=31} (3)对于year变量的取值 Y1: {year: year是闰年} Y2: {year: year不是闰年} (4)month变量的有效等价类: M1: {month=4,6,9,11} M2: {month=1,3,5,7,8,10} M3: {month=12} M4: {month=2} (5)day变量的有效等价类: D1: {1≤day≤26} D2: {day=27} D3: {day=28} D4: {day=29} D5: {day=30} D6: {day=31} (6)year变量的等价类: Y1: {year是闰年} Y2: {year不是闰年} (7)考虑各种有效的输入情况,程序中可能采取的操作有以下6种: a1: day+1 a2: day=2 a3: day=1 a4: month+1 a5: month=1 a6: year+1
【答案解析】
问答题 以自动饮料售货机为例,利用因果图法设计测试用例,为简化问题,假设售货机所有饮料的价格都是5角钱,其规格如下: 若投入5角钱或1元钱的硬币,按下“橙汁”或“啤酒”按钮,则相应的饮料就送出来。然而,如果售货机没有零钱找,则“零钱找完”红灯亮,这时再投入1元硬币并按下饮料按钮后,饮料不送出来,而且1元硬币也退出来;若有零钱找,则“零钱找完”红灯灭,在送出饮料的同时退还5角硬币。 问题:分析上述规格,采用基于因果图的方法设计测试用例。
【正确答案】(1)分析上面的规格说明,列出所有的原因和结果,并给每个原因和结果赋予一个标识符。
原因:1.售货机有零钱找
2.投入1元硬币
3.投入5角硬币
4.按下“橙汁”按钮
5.按下“啤酒”按钮
结果:21.售货机“零钱找完”红灯亮
22.退还1元硬币
23.找回5角硬币
24.送出橙汁饮料
25.送出啤酒饮料
(2)进一步分析语义,找出原因与结果之间、原因与原因之间的对应关系,根据这些关系画出因果图,如下图所示。
[*]
因果图

其中建立了4个中间结点,表示处理的中间状态:
11.投入1元硬币并按下饮料按钮
12.按下“橙汁”或“啤酒”的按钮
13.应当找5角钱并且售货机有零钱找
14.钱已付清
由于2与3、4与5不能同时发生,分别加上约束条件E。
(3)将因果图转换为判定表,如下表所示,并根据表中的每一列设计测试用冽。
[*]
【答案解析】