软件工程课自测题3

软件工程课自测题3
软件工程课自测题3

一. 判断题

1.软件实际就是程序( X )

2.成功的测试是没有发现错误的测试(X )

3.软件工程的主要思想是从理论的角度来观察分析软件开发盒生产活动(X )

4.一个模块直接引用另一个模块中的数据,这两个模块之间的耦合不是内容耦合(X )

5.程序只要逻辑正确,能够被机器理解并执行就够了(X )

二.选择题

1.在软件质量因数中,软件在异常条件下人能运行的能力称为软件的

( B )

A)可靠性B)健壮性C)可用性D)安全性

2.软件开发可行性研究,一般涉及经济,技术盒操作可行性,而进行可行性研究的基本依据是用户提出的软件( C )

A)系统质量B)系统目标C)系统功能D)系统性能

3.结构化程序设计中,一般包含3种基本结构,下列结构中哪个不属于基本结构

A)顺序结构B)嵌套结构C)顺序结构D)选择结构

4.JACKSON方法是一种面向( B )的方法

A)对象 B )数据结构C)数据流D)控制流

5.模块内部过程描述就是模块内部的( B ),它的表述形式就是详细设计语言

A)模块化设计B)算法设计C)程序设计D)详细设计

6.在设计测试用例时,( A )是用的最多的一种黑盒测试方法

A)等价类划分B)边值分析C)因果图D)判定表

1

7软件的可维护性,可使用性, ( B ) 是衡量软件质量的几个主要特性

A)可靠性B)可复用性C)可理解性D)可修改性

8.原型化方法是一种( B )型的设计过程

A)自外向内B)自顶向下C)自内向外D)自底向上

9.模块( B )定义为受该模块内一个判断影响的所有模块集合

A)控制流B)作用域C)宽度D)接口

10.程序控制的3种基本结构中,( C )结构可提供程序重复控制

A)遍历B)排列 C )循环D)分支

三.填空题

1.黑箱测试即_________、白箱测试即_________________。

2.开发期的主要任务_____________,_________________,_______________,________________。

3. 结构化方法将软件生命周期分为____________,_________________,________________三个时期.

4. 各模块经过单元测试后,将各模块组装起来进行,以检查与设计相关的的有关问题。

5. 在单元测试时,需要为被测模块设计和。

6. 集成测试的方法主要有两种:和。

7. 非渐增式方法把和分成两个不同的阶段。

8. 渐增式测试有以下两种不同的组装模块的方法:、。

9. 软件测试的目的是.。

10. 软件维护的内容有四种:、、、。

11. 为了提高软件的可维护性和可靠性而对软件进行的修改称为。

12. 因修改软件而造成的错误或其他不希望出现的情况称为。

13维护的副作用有------------------,-------------------,-----------------三种

2

14. 软件的、、是衡量软件质量的几个主要特性。

15. 软件可维护性可用下面七个质量特性来衡量,即、、、、、和。四.名词解释

1.数据字典

2.内聚性

3.软件生存周期模型

4.多态性

5. 集成测试

6. 维护

7. 正确性维护

8. 预防性维护

五.简答题

1. 软件测试的目的是什么?

2. 什么是集成测试?为什么要进行集成测试?

3. 非渐增式测试与渐增式测试有什么区别?

4. 软件维护有哪些内容?

5. 软件维护的副作用有哪些?

六. 应用题

1. 请将下图的DFD转换为软件结构图(注:图中的 表示“或者”)

主图:

3

4

子图A :

答案

二. 选择题

三.填空题

1.功能测试 结构测试

2需求分析 总体设计 详细设计 编码 测试

3.计划 开发 运行

4. 集成测试 软件体系结构

5. 驱动模块 桩模块

6. 非增式测试 渐增式测试

7. 单元测试 集成测试

8. 自顶向下结合 自底向上结合

9. 尽可能多地发现程序中的错误 .

10. 正确性维护适应性维护完善性维护预防性维护

11. 预防性维护

12. 维护的副作用

13. 编码副作用数据副作用文档副作用

14. 可理解性可使用性可靠性

15. 可理解性可测试性可修改性可靠性可移植性可使用性效率

四.名词解释

1.数据字典是用来定义数据流图中的各个成分的具体含义的。它以一

种准确的、无二义性的说明方式为系统的分析、设计及维护提供了

有关元素的一致的定义和详细的描述。

2.内聚性是模块独立性的衡量标准之一,它是指模块的功能强度的度

量,即一个模块内部各个元素彼此结合的紧密程度的度量。

3.是描述软件开发过程中各种活动如何执行的模型。

4.指相同的操作或函数、过程可作用于多种类型的对象上并获得不同

结果。或(不同的对象,收到同一消息可以产生不同的结果。)

5. 集成测试是指在单元测试的基础上,将所有模拟按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。

6. 在软件运行/维护阶段对软件产品所进行的修改就是维护。

7. 为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。

8. 为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。

5.

五.简答题

5

1. 答:软件测试的目的。G. J. Myers对软件测试的目的提出了以下观点:

(1)软件测试是为了发现错误而执行程序的过程。

(2)一个好的测试用例能够发现至今尚未发现的错误。

(3)一个成功的测试是发现了至今尚未发现的错误的测试。

2. 答:集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统进行的测试,故也称组装测试或联合测试。

实践证明,单个模块能正常工作,组装后不见得仍能正常工作,这是因为:(1)单元测试使用的驱动模块和桩模块,与它们所代替的模块并不完全等效,因此单元测试有不彻底、不严格的情况。

(2)各个模块组装起来,穿越模块接口的数据可难会丢失。

(3)一个模块的功能可能会对另一个模块的功能产生不利的影响。

(4)各个模块的功能组合起来可能达不到预期要求的主功能。

(5)单个模块可以接受的误差,组装起来可能累积和放大到不能接受的程度。

(6)全局数据可能会出现问题。

因此必须要进行集成测试,用于发现模块组装中可能出现的问题,最终构成一个符合要求的软件系统。

集成测试的方法主要有两种:非渐增式测试和渐增式测试。

(1)非渐增式测试。首先对每个模块分别进行单元测试,然后再把所有的模块按设计要求组装在一起进行测试。

(2)渐增式测试。逐个把未经过测试的模块组装到已经过测试的模块上去,进行集成测试。每加入一个新模块进行一次集成测试,重复此过程直至程序组装完毕。

3. 渐增式与非渐增式测试的方法有以下区别:

(1)非渐增式方法把单元测试和集成测试分成两个不同的阶段,前一阶段完成模拟的单元测试,后一阶段完成集成测试。而渐增式测试往往把单元测试

6

与集成测试合在一起,同时完成。

(2)非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。

(3)渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。

(4)渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。

(5)渐增式比较彻底,已测试的模块和新的模块再测试。

(6)渐增式占用的时间较多,但非渐增式需更多的驱动模块。桩模块也占用一些时间。

(7)非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。

4. 答:软件维护的内容。软件维护的内容有四种:正确性维护,适应性维护,完善性维护和预防性维护。

(1)正确性维护。在软件交付使用后,由于在软件开发过程中产生的错误并没有完全彻底的在测试中发现,因此必然有一部分隐含的错误被带到维护阶段上来。这些隐含的错误在某些特定的使用环境下会暴露出来。为了识别和纠正错误,修改软件性能上的缺陷,应进行确定和修改错误的过程,这个过程就称为校正性维护。

(2)适应性维护。随着计算机的飞速发展,计算机硬件和软件环境也在不断发生变化,数据环境也在不断发生变化。为了使应用软件适应这种变化而修改软件的过程称为适应性维护。例如,某个应用软件原来是在DOS环境下运行的,现在要把它移植到Windows环境下来运行;某个应用软件原来是在一种数据库环境下工作的,现在要改到另一种安全性较高的数据库环境下工作,这些变动都需要对相应的软件作修改。

(3)完善性维护。在软件漫长的运行时期中,用户往往会对软件提出新的功能要求与性能要求。这是因为用户的业务会发生变化,组织机构也会发生变

7

化。为了适应这些变化,应用软件原来的功能和性能需要扩充和增强。这种增加软件功能、增强软件性能、提高软件运行效率而进行的维护活动称为完善性维护。例如,软件原来的查询响应速度较慢,要提高响应速度;软件原来没有帮助信息,使用不方便,现在要增加帮助信息。

(4)预防性维护。为了提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。这是为以后进一步的运行和维护打好基础。这需要采用先进的软件工程方法对需要维护的软件或软件中的某一部分进行设计、编码和测试。

5. 答:因修改软件而造成的错误或其他不希望出现的情况称为维护的副作用。维护的副作用有编码副作用、数据副作用、文档副作用三种。

(1)编码副作用。在使用程序设计语言修改源代码时可能引入错误。例如:①删除或修改一个子程序、一个标号、一个标识符;②改变程序代码的时序关系,改变占用存储的大小,改变逻辑运算符;③修改文件的打开或关闭;④改进程序的执行效率;⑤把设计上的改变翻译成代码的改变;⑥为边界条件的逻辑测试作出改变;⑦以上这些变动都容易引入错误。

(2)数据副作用。在修改数据结构时,有可能造成软件设计与数据结构不匹配,因而导致软件错误。数据副作用是修改软件信息结构导致的结果。例如:①重新定义局部或全局的常量,重新定义记录或文件格式;②增加或减少一个数组或高层数据结构的大小;③修改全局或公共数据;④重新初始化控制标志或指针;⑤重新排列输入/输出或子程序的参数。

(3)文档副作用。对数据流、软件结构、模拟逻辑或任何其他有关特性进行修改时,必须对相关技术文档进行相应修改。否则会导致文档与程序功能不匹配、缺省条件改变、新错误信息不正确等错误,使文档不能反映软件当前的状态。如果对执行软件的修改没有反映在文档中,就会产生文档副作用。

六.应用题

8

9

相关主题
相关文档
最新文档