if(t!
=i){t=j;
temp=a[t];}elseif(t!
=i){
a[t]=a[i];temp=a[t];
a[i]=tempa[t]=a[i];
}a[i]=temp;
}}
}
}
12.什么是黑盒测试,主要方法有哪些?
什么是白盒测试,主要方法有哪些?
答:
黑盒测试:
测试人员不用考虑程序内部的逻辑结构和内部特性,指依据程序父需求规格说明书,检查程序的功能是否符合它的功能。
主要方法有:
等价类划分、边界值分析、错误推测,因果图和综合策略。
白盒测试:
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例技术,属于白盒测试。
白盒测试方法分为两大类:
静态测试方法和动态测试方法:
静态测试方法:
检查软件的表示和描述是否一致没有冲突或者没有歧义。
动态测试方法:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
13.软件测试包括哪些步骤?
说明这些步骤的测试对象是什么?
答:
(1)单元测试,测试对象对单元模块;集成测试,测试对象为组装后的程序模块;确认测试,测试对象为可运行的目标软件系统。
二、论述题(2*7分)
1、“软件就是程序,软件开发就是编写代码”,这种观点对不对,为什么?
答:
“软件就是程序,软件开发就是编写程序”这个观点是错误的。
软件是计算机系统中与硬件相互依存的另一部分,包括程序,数据及其相关文档的完整集合。
其中,程序是使程序能够正确的处理信息的数据结构;文档是与程序开发。
维护和使用有关的图文材料。
2、“从软件生命周期的角度来看,测试是编码的下一个阶段,因此测试工作应该在编码完成后才开始”,这种观点对不对,为什么?
答:
软件测试应贯穿于软件定义与开发的整个期间。
因此,需求分析,概要设计。
详细设计以及程序编码等各阶段所得到的文件资料,包括需求规格说明,概要设计说明,详细设计规格说明以及源程序,都应成为软件测试的对象。
软件测试不应局限在程序的狭小范围内。
事实上,到程序的测试为止,软件开发工作已经经历了许多环节,每个环节都可能发生问题。
为了把握各个环节的正确性,在每个过程都需要测试,而不仅仅是只在编码的下一个阶段进行测试。
3、“在软件开发过程中,因为模块分解可以简化要解决的问题,所以模块分解应该越小越好”,这种观点对不对,为什么?
答:
不对,在软件开发过程中,尽管模块分解可以简化要解决的问题,但模块分析并不是越小越好。
当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但是,随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。
4、“在测试过程中,根据测试用例,若实际输出结果等于预期输出结果,则说明该程序一定没有错误”,这种观点对不对,为什么?
答:
观点是错误的。
通过收集和分析测试结果数据,开始对软件建立可靠的模型。
如果在测试过程中,根据测试用例,若实际输出结果等于预期输出结果。
也就是说测试发现不了错误,不能证明软件不存在问题。
可能是软件配置考虑的不够细致充分,错误仍然潜伏在软件中。
这些错误最终不得不由用户发现并在维护时改正。
5、“由于程序最终是交由计算机来执行,因此不需要注释”,这种观点对不对,为什么?
答:
正确的注释能够帮助读者理解程序,为测试和维护提供明确的指导,注释绝不是可有可无的。
大多数程序设计语言允许使用自然语言来写注释,一些正规的程序文本中注释行的数量占到整个源程序的1/3到1/2。
注释分为序言性注释和功能性注释,序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于程序本身具有指导作用。
有些软件开发部门对序言性注释作了明确而严格的规定,要求程序编制者逐项列出。
功能性注释嵌在源程序体中,用以描述其后的语句或程序段,也就是解释下面的语句会怎么样,而不要解释下面怎么做,因为程序怎么做与程序本身常常是重复的,而且对阅读者理解程序没什么帮助。
因此注释是必需的。
三、应用题(2*8分)
1、假设汽车的车牌号可由车主人在规定范围内自选,若其规定为:
(1)车牌上应有7个字符;
(2)为首的字符限定为汉字“京”;
(3)第2字符可任选一字母(A-Z);
(4)第3-7字符可选任意数字。
请为该处理程序根据等价类方法设计测试用例。
(参考245页的(3))
输入数据
有效等价类
无效等价类
字符个数
7个
(1)
0-6个
(2),>7个(3)
首字符
京(4)
非“京”(5)
第2个字符
字母(6)
非字母(7)
第3-7个字符
数字(8)
非数字(9)
测试用例如下:
1)京H87774
(1)(4)(6)(8)
2)京H8777
(2)
3)京H877745(3)
4)冀H87774(5)
5)京987774(7)
6)京BA7774(9)
2、根据白盒测试,给出这段代码的语句覆盖测试用例?
判定覆盖测试用例?
条件覆盖测试用例?
条件组合测试用例?
1)输入a,b,x;
2)If(a≥2andb==1)
x=x/a;
else
x=x+1;
3)If(a==4orx≥4)
x=x+2;
4)输出a,b,x.
(参考235页的例子),画出流程图,给路径、条件标号、设计测试用例。
(1)语句覆盖
[(4,1,4),(4,1,3)]
[(1,0,1),(1,0,2)]
(2)判定覆盖
[(4,1,4),(4,1,3)]
[(1,0,1),(1,0,2)]
(3)条件覆盖
[(4,1,16),(4,1,6)]
[(1,0,1),(1,0,2)]
(4)多条件组合覆盖
[(4,1,16),(4,1,6)]
[(4,0,1),(4,0,4)]
[(1,1,4),(1,1,7)]
[(1,0,1),(1,0,2)]
3、招生系统需求描述:
Ø学校首先公布招生条件,考生根据自己的条件报名,之后系统进行资格审查,并给出资格审查信息;
Ø对于资格审查合格的考生可以参加答卷,系统根据学校提供的试题及答案进行自动判卷,并给出分数及答题信息,供考生查询;
Ø最后系统根据学校的录取分数线进行录取,并将录取信息发送给考生。
(1)给出该招生系统的顶层数据流图。
(43页图3-7)
(2)给出该招生系统的1层数据流图。
(44页图3-8)
4、某“调整工资”处理模块接受一个“职称”的变量,根据职称的不同(助教,讲师,副教授,教授)作不同的处理,其中若是助教还必须输入工龄,只有工龄超过两年才能调整工资。
请用等价类划分法设计测试用例。
划分等价类:
输入数据
有效等价类
无效等价类
职称
(1)教授
(5)四种职称之外的任意一种
(2)副教授
(3)讲师
职称兼工龄
(4)助教兼工龄大于2年
(6)助教兼工龄等于2年(7)助教兼工龄小于2年
测试用例如下:
输入数据
预期结果
覆盖范围
教授
输入有效,进行工资调整
(1)
副教授
输入有效,进行工资调整
(2)
讲师
输入有效,进行工资调整
(3)
助教3
输入有效,进行工资调整
(4)
助教2
输入有效,不进行工资调整
(6)
助教1
输入有效,不进行工资调整
(7)
工程师
输入无效
(5)
5、分析如下数据流图,指出其中有哪些错误?
图1分层数据流图
(1)父图的处理1没有输入流
(2)子图的数据流B应为C
(3)子图的数据流F多余
6、选课系统。
(140页例6.1)
Ø在每个学期选课开始之前,系统管理员需要对系统中的教师信息、课程信息和学生信息进行维护。
学期结束后,将本学期成绩归档到学籍档案系统。
Ø学生登录系统后会得到一份本学期将要开设的课程目录。
每门课程包含的信息有开课系别、教师、上课时间、教室、容纳的学生数量和学生选择课程的先决条件。
Ø当学生选择了一门课程后,系统需访问学籍档案系统,查询是否符合选课的先决条件。
如果不符合,系统给出提示信息。
Ø每个学期有一段时间让学生可以改变计划,学生可以在这段时间内访问联机系统以增选课程或退选课程。
Ø教师可以访问在线系统,查看将要教授哪些课程和每门课程有哪些学生报名,课程考试结束后可以提交成绩,系统可以生成带有成绩分布统计结果的成绩单。
(1)该选课系统的参与者都有哪些?
学生
教师
系统管理员
学籍档案系统
(2)给出该系统的用例图。
(140页图5-4)