}elseif(t!
=i){temp=a[t];
a[t]=a[i];a[i]=temp;
}
}
}
12•什么是黑盒测试,主要方法有哪些?
什么是白盒测试,主要方法有哪些?
答:
黑盒测试:
测试人员不用考虑程序内部的逻辑结构和内部特性,指依据程序父需求规格说明书,检查程序的功能是否符合它的功能。
主要方法有:
等价类划分、边界值分析、错误推测,因果图和综合策略。
白盒测试:
逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例技术,属于白盒测试。
白盒测试方法分为两大类:
静态测试方法和动态测试方法:
静态测试方法:
检查软件的表示和描述是否一致没有冲
突或者没有歧义。
动态测试方法:
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条
件组合覆盖、路径覆盖。
13.软件测试包括哪些步骤?
说明这些步骤的测试对象是什么?
答:
(1)单元测试,测试对象对单元模块;集成测试,测试对象为组装后的程序模块;确认测试,测试对象为可运行的目标软件系统。
二、论述题(2*7分)
1、“软件就是程序,软件开发就是编写代码”,这种观点对不对,为什么?
答:
“软件就是程序,软件开发就是编写程序”这个观点是错误的。
软件是计算机系统中和硬件相互依存的另一部分,包括程序,数据及其相关文档的完整集合。
其中,程序是使程序能够正确的处理信息的数据结构;文档是和程序开发。
维护和使用有关的图文材料。
2、“从软件生命周期的角度来看,测试是编码的下一个阶段,因此测试工作应该在编码完成后才开始”,这种观点对不对,为什么?
答:
软件测试应贯穿于软件定义和开发的整个期间。
因此,需求分析,概要设计。
详细设计以及程序编码等各阶段所得到的文件资料,包括需求规格说明,概要设计说明,详细设计规格说明以及源程序,都应成为软件测试的对象。
软件测试不应局限在程序的狭小范围内。
事实上,到程序的测试为止,软件开发工作已经经历了许多环节,每个环节都可能发生问题。
为了把握各个环节的正确性,在每个过程都需要测试,而不仅仅是只在编码的下一个阶段进行测试。
3、“在软件开发过程中,因为模块分解可以简化要解决的问题,所以模块分解应该越小越好”,这种观点对不对,为什么?
答:
不对,在软件开发过程中,尽管模块分解可以简化要解决的问题,但模块分析并不是越小越好。
当模块数目增加时,每个模块的规模将减小,开发单个模块的成本确实减少了;但是,随着模块数目增加,模块之间关系的复杂程度也会增加,设计模块间接口所需要的工作量也将增加。
4、“在测试过程中,根据测试用例,若实际输出结果等于预期输出结果,则说明该程序一定没有错误”,这种观点对不对,为什么?
答:
观点是错误的。
通过收集和分析测试结果数据,开始对软件建立可靠的模型。
如果在测试过程中,根据测试用例,若实际输出结果等于预期输出结果。
也就是说测试发现不了错误,不能证明软件不存在问题。
可能是软件配置考虑的不够细致充分,错误仍然潜伏在软件中。
这些错误最终不得不由用户发现并在维护时改正。
5、“由于程序最终是交由计算机来执行,因此不需要注释”,这种观点对不对,为什么?
答:
正确的注释能够帮助读者理解程序,为测试和维护提供明确的指导,注释绝不是可有可无的。
大多数程斥设计语言允许使用自然语言来写注释,一些正规的程序文本中注释行的数量占到整个源程序的1/3到1/2o注释分为序言性注释和功能性注释,序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于程序本身具有指导作用。
有些软件开发部门对序言性注释作了明确而严格的规定,要求程序编制者逐项列出。
功能性注释嵌在源程序体中,用以描述其后的语句或程序段,也就是解释下面的语句会怎么样,而不要解释下面怎么做,因为程序怎么做和程序本身常常是重复的,而且对阅读者理解程序没什么帮助。
因此注释
是必需的。
三.应用题(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)
测试用例如下:
4)冀H87774(5)
5)京987774(7)
6)京BA7774(9)2、根据白盒测试,给出这段代码的语句覆盖测试用例?
判定覆盖测试用
例?
条件覆盖测试用例?
条件组合测试用例?
1)输入a,b,x;
2)If(aM2andb==l)
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)