软件维护的困难主要原因是(C ) A 、费用低 B 、人员少 C 、开发方法的缺陷 D、用户不配合 23. 软件维护费用高的主要原因是(C )。 A 、人员少B 、人员多C 、生产率低D 、生产率高 24. 为了适应软硬件环境变化而修改软件的过程是(C ) 。 A 、校正性维护 B、完善性维护 C 、适应性维护D 、预防性维护 25. 可维护性的特性中,相互矛盾的是(B ) A. 可理解性与可测试性 B.效率与可修改性 C. 可修改性和可理解性 D.可理解性与可读性 26. 各种不同的软件维护中,以(C )维护所占的维护量最小。 A 、 纠错性维护B 、代码维护C 、预防性维护D 、文档维护 27. 在变更控制中,(B )可以用来确保由不同用户所执行的并发变更。 A .异步控制B .同步控制C .存取控制D .基线控制 28. 变更控制是一项最重要的软件配置任务,其中“检出”和(A )处理实现了两个重要的变更 控制要素,即存取控制和同步控制。 A .登入B .管理C .填写变更要求D .审查 29. 用图表示软件项目进度安排,下列说法中正确的是(B )D.《计算机病毒防治管理办法》 14.效率是一个性能要求,因此应当在以下哪个阶段规定?B A、可行性分析B、需求分析C、概要设计D、详细设计 15.需求规格说明书的作用不包括(D) A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解 C、软件可行性研究的依据D、软件设计的依据 16.数据字典是用来定义(D)中的各个成份的具体含义的。 A、程序流程图B、功能结构图C、系统结构图D、数据流程图 17.数据流程图是(A)方法中用于表示系统逻辑模型的一种图形工具。 A、SAB、SDC、SPD、SC 18.DFD中的每个加工至少有(A)。 A、一个输入流或一个输出流B、一个输入流和一个输出流 C、一个输入流D、一个输出流 19.需求分析阶段的关键任务是确定(D) A、软件开发方法B、软件开发工具C、软件开发费D、软件系统的功能 20.在SD方法中全面指导模块划分的最重要的原则是(D)。 A、程序模块化B、模块高内聚C、模块低耦合D、模块独立性 21.在模块的3种基本属性中,反映模块内部特性的是(C)。 A、接口B、功能C、逻辑D、状态 22.模块的耦合性可以按照耦合程度的高低进行排序,以下哪一项符合从低到高的正确次序(D)。 A、数据结构耦合,公共耦合,控制耦合,内容耦合 B、数据耦合,控制耦合,数据结构耦合,公共耦合 C、无直接耦合,数据结构耦合,内容耦合,控制耦合 D、无直接耦合,数据耦合,控制耦合,内容耦合 23.PDL是描述处理过程(C) A、做什么B、为什么做C、怎么做D、对谁做 24.(D)工具在软件详细设计过程中不采用。 A、判定表B、IPO图C、PDLD、DFD图 25.为高质量地开发软件项目,在软件结构设计时,必须遵循(A)原则。 A.信息隐蔽B、质量控制C、程序优化D、数据共享 26.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为(D) A、数据耦合B、公共耦合C、标记耦合D、内容耦合 27.详细设计与概要设计衔接的图形工具是( )A. 能够反映多个任务之间的复杂关系 B. 能够直观表示任务之间相互依赖制约关系 C. 能够表示哪些任务是关键任务 D. 能够表示子任务之间的并行和串行关系 30. 基线可作为软件生存期中各开发阶段的一个检查点。当采用的基线发生错误时,可以返回到 最近和最恰当的(C )上 A. 配置项B. 程序C. 基线D. 过程 二、 简答题 1. 为建立良好的编程风格应遵循什么原则? 答:1)节简化 ①不使用不必要的变量和函数 ②避免变量重名,变量重名可导致很难被发现的错误。 ③尽量减小代码量。 ④尽量减少代码的执行时间,提高执行效率。 ⑤避免功能冗余的模块。 ⑥尽量不使用全局变量。 2)模块化 ①确保物理和逻辑功能密切相关。 ②限定一个模块完成一个独立的功能,提高模块的内聚度。 ③检查代码的重复率,重复多的代码,要抽出来作为一个单独的模块。 3)简单化 ①采用直接了当的算法,避免使用技巧性高和难懂的代码。 ②使用简单的数据结构,避免使用多维数组、指针和复杂的表。 ③注意对象命名的一致性。 ④以手工的方式简化算术和逻辑表达式。 4)结构化 ①按标准化的次序说明数据; ②按字母顺序说明对象名 ③使用读者明了的结构化程序部件; ④采用直截了当的算法; ⑤根据应用背景排列程序各个部分; ⑥不随意为效率而牺牲程序的清晰度和可读性; ⑦让机器多做烦琐的工作,如重复、库函数; ⑧用公共函数调用代替重复出现的表达式; ⑨避免循环、分支的嵌套层数过高; ⑩单入口单出口。 5)文档化(documentation ) E. yout) ①始终采用统一缩进规则; ②适当插入括号表明运算次序、排除二义性; ③有效地使用空格符以区别程序的不同意群。 2. 什么是软件测试? 答:软件测试从广义上讲, 是指软件产品生存周期内所有的检查、评审和确认活动。从狭义上讲,软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各个阶段的规格说明和程序内部结构而精心设计一批测试用例,用这些测试用例运行程序,以发现程序错误的过程。 3. 软件测试的原则是什么? 答:软件测试的原则有: 1) 应该把测试贯穿在整个开发过程之中。事实上,从需求分析阶段开始,每个阶段结束之前都要进行阶段审查,目的是尽早发现和纠正错误。 2) 每个测试用例都应该包括测试输入数据和这组数据输入作用下的预期输出结果。在实际操作中可以列出一张表格,包括每个测试用例的编号、类型、输入数据、预期输出结果、实际输出结果、出错原因分析。 3) 要对每个测试结果进行全面检查,不要漏掉已经出现的错误迹象。 4) 程序员应该尽量避免检查自己编写的代码。测试工作需要严格的工作作风,程序员在测试自己编写的代码时往往会带有一些倾向性,使得他们工作中常常出现一些疏漏。而且,程序员对设计规格说明书的理解错误而引入的错误更是难于发现。 5) 在设计测试用例时,应该包括有效的、期望的输入情况,也要包括无效的和不期望的输入情况。既能够验证程序正常运行的合理输入,也能够验证对异常情况处理的不合理输入数据以及临界数据。在测试程序时,人们常常过多地考虑合法的和期望的输入条件,以检查程序是否做了它应该做的事情,而忽视了不合法的和预想不到的输入条件。事实上,用户在使用系统时,输入一些错误指令和参数是经常发生的,如果软件遇到这种情况不能做出适当的反应,给出相应的提示信息,就可能会误导用户,甚至造成严重损失。 6) 软件中遗留的错误数量与已经发现的错误数量成正比。根据这个规律,对测试中发现错误成堆的模块更要仔细测试。例如,在某个著名的操作系统中,44%的错误仅与4%的模块有关。 7) 回归测试的关联性要特别引起注意,修改一个错误而引起更多错误的现象并不少见。 8) 测试程序时不仅要检查程序是否做了它应该做的事情,还要检查它是否做了不该做的事情。 例如,工资软件中,软件只完成在编职工的工资计算和输出,不在编人员的工资是不进行计算和输出的。如果软件将不在编人员的工资信息也输出显然是不合适的。 9) 严格执行测试计划。在测试之前应该有明确的测试计划,内容包括:要测试的软件功能和内容、测试用例和预期结果、测试的进度安排、需要的工具和资源、测试控制方式和过程等。 10)做好测试记录,为统计和维护提供基础数据。 4. 请说明集成测试、系统测试和验收测试有什么不同? 答:集成测试界于单元测试和系统测试之间,起到 F. 、测试的内容相同 b、一个等价类中的某个测试可以发现缺陷,那么这个等价类的其他测试也能发现缺陷 c、一个等价类中的某个测试不能发现缺陷,那么这个等价类的其它测试也不能发现缺陷2)边界值分析法 特点是:用边界值分析时时常收获较大,它是在等价类的边界上选择测试用例3)错误推测法 特点是:没有确定的步骤,很大程度上是凭借经验进行的 4)因果图法 特点是:考虑输入条件间的组合关系;考虑输出条件对输入条件的信赖关系;测试用例发现错误的效率高;能查出功能说明中的某些不一致或遗漏 9. 白盒测试法有哪些覆盖标准?试对它们的检错能力进行比较。 答:白盒测试的覆盖标准有:语句覆盖->判定覆盖->条件覆盖->判定/条件覆盖->条件组合覆盖->路径覆盖 检错能力由弱到强 10. 根据下面程序代码,画出程序流程图,然后设计满足条件/判定覆盖、条件组合覆盖的测试用例。 G. EGIN T:=0 IF ( X>=80 AND Y>=80 )THEN T:=1 ELSE IF ( X>=90 AND Y>=75 ) THEN T:=2 ENDIF IF (X>=75 AND Y>=90) THEN T:=3 ENDIF NDIF RETURN开始-|||-T=0-|||-x =80AN Y==80-|||-=80AN D N-|||-Y X> =90 A Ygt =75 ND-|||-Y-|||-T=2-|||-T=1-|||-N =75 AD Ygt =90-|||-Y-|||-T=3-|||-结束 条件/判定覆盖:
软件维护的困难主要原因是(C ) A 、费用低 B 、人员少 C 、开发方法的缺陷 D、用户不配合 23. 软件维护费用高的主要原因是(C )。 A 、人员少B 、人员多C 、生产率低D 、生产率高 24. 为了适应软硬件环境变化而修改软件的过程是(C ) 。 A 、校正性维护 B、完善性维护 C 、适应性维护D 、预防性维护 25. 可维护性的特性中,相互矛盾的是(B ) A. 可理解性与可测试性 B.效率与可修改性 C. 可修改性和可理解性 D.可理解性与可读性 26. 各种不同的软件维护中,以(C )维护所占的维护量最小。 A 、 纠错性维护B 、代码维护C 、预防性维护D 、文档维护 27. 在变更控制中,(B )可以用来确保由不同用户所执行的并发变更。 A .异步控制B .同步控制C .存取控制D .基线控制 28. 变更控制是一项最重要的软件配置任务,其中“检出”和(A )处理实现了两个重要的变更 控制要素,即存取控制和同步控制。 A .登入B .管理C .填写变更要求D .审查 29. 用图表示软件项目进度安排,下列说法中正确的是(B )
D.《计算机病毒防治管理办法》 14.效率是一个性能要求,因此应当在以下哪个阶段规定?B A、可行性分析B、需求分析C、概要设计D、详细设计 15.需求规格说明书的作用不包括(D) A、软件验收的依据B、用户与开发人员对软件要做什么的共同理解 C、软件可行性研究的依据D、软件设计的依据 16.数据字典是用来定义(D)中的各个成份的具体含义的。 A、程序流程图B、功能结构图C、系统结构图D、数据流程图 17.数据流程图是(A)方法中用于表示系统逻辑模型的一种图形工具。 A、SAB、SDC、SPD、SC 18.DFD中的每个加工至少有(A)。 A、一个输入流或一个输出流B、一个输入流和一个输出流 C、一个输入流D、一个输出流 19.需求分析阶段的关键任务是确定(D) A、软件开发方法B、软件开发工具C、软件开发费D、软件系统的功能 20.在SD方法中全面指导模块划分的最重要的原则是(D)。 A、程序模块化B、模块高内聚C、模块低耦合D、模块独立性 21.在模块的3种基本属性中,反映模块内部特性的是(C)。 A、接口B、功能C、逻辑D、状态 22.模块的耦合性可以按照耦合程度的高低进行排序,以下哪一项符合从低到高的正确次序(D)。 A、数据结构耦合,公共耦合,控制耦合,内容耦合 B、数据耦合,控制耦合,数据结构耦合,公共耦合 C、无直接耦合,数据结构耦合,内容耦合,控制耦合 D、无直接耦合,数据耦合,控制耦合,内容耦合 23.PDL是描述处理过程(C) A、做什么B、为什么做C、怎么做D、对谁做 24.(D)工具在软件详细设计过程中不采用。 A、判定表B、IPO图C、PDLD、DFD图 25.为高质量地开发软件项目,在软件结构设计时,必须遵循(A)原则。 A.信息隐蔽B、质量控制C、程序优化D、数据共享 26.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为(D) A、数据耦合B、公共耦合C、标记耦合D、内容耦合 27.详细设计与概要设计衔接的图形工具是( )
A. 能够反映多个任务之间的复杂关系B. 能够直观表示任务之间相互依赖制约关系
C. 能够表示哪些任务是关键任务
D. 能够表示子任务之间的并行和串行关系 30. 基线可作为软件生存期中各开发阶段的一个检查点。当采用的基线发生错误时,可以返回到 最近和最恰当的(C )上 A. 配置项B. 程序C. 基线D. 过程 二、 简答题 1. 为建立良好的编程风格应遵循什么原则? 答:1)节简化 ①不使用不必要的变量和函数 ②避免变量重名,变量重名可导致很难被发现的错误。 ③尽量减小代码量。 ④尽量减少代码的执行时间,提高执行效率。 ⑤避免功能冗余的模块。 ⑥尽量不使用全局变量。 2)模块化 ①确保物理和逻辑功能密切相关。 ②限定一个模块完成一个独立的功能,提高模块的内聚度。 ③检查代码的重复率,重复多的代码,要抽出来作为一个单独的模块。 3)简单化 ①采用直接了当的算法,避免使用技巧性高和难懂的代码。 ②使用简单的数据结构,避免使用多维数组、指针和复杂的表。 ③注意对象命名的一致性。 ④以手工的方式简化算术和逻辑表达式。 4)结构化 ①按标准化的次序说明数据; ②按字母顺序说明对象名 ③使用读者明了的结构化程序部件; ④采用直截了当的算法; ⑤根据应用背景排列程序各个部分; ⑥不随意为效率而牺牲程序的清晰度和可读性; ⑦让机器多做烦琐的工作,如重复、库函数; ⑧用公共函数调用代替重复出现的表达式; ⑨避免循环、分支的嵌套层数过高; ⑩单入口单出口。 5)文档化(documentation )
E. yout) ①始终采用统一缩进规则; ②适当插入括号表明运算次序、排除二义性; ③有效地使用空格符以区别程序的不同意群。 2. 什么是软件测试? 答:软件测试从广义上讲, 是指软件产品生存周期内所有的检查、评审和确认活动。从狭义上讲,软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各个阶段的规格说明和程序内部结构而精心设计一批测试用例,用这些测试用例运行程序,以发现程序错误的过程。 3. 软件测试的原则是什么? 答:软件测试的原则有: 1) 应该把测试贯穿在整个开发过程之中。事实上,从需求分析阶段开始,每个阶段结束之前都要进行阶段审查,目的是尽早发现和纠正错误。 2) 每个测试用例都应该包括测试输入数据和这组数据输入作用下的预期输出结果。在实际操作中可以列出一张表格,包括每个测试用例的编号、类型、输入数据、预期输出结果、实际输出结果、出错原因分析。 3) 要对每个测试结果进行全面检查,不要漏掉已经出现的错误迹象。 4) 程序员应该尽量避免检查自己编写的代码。测试工作需要严格的工作作风,程序员在测试自己编写的代码时往往会带有一些倾向性,使得他们工作中常常出现一些疏漏。而且,程序员对设计规格说明书的理解错误而引入的错误更是难于发现。 5) 在设计测试用例时,应该包括有效的、期望的输入情况,也要包括无效的和不期望的输入情况。既能够验证程序正常运行的合理输入,也能够验证对异常情况处理的不合理输入数据以及临界数据。在测试程序时,人们常常过多地考虑合法的和期望的输入条件,以检查程序是否做了它应该做的事情,而忽视了不合法的和预想不到的输入条件。事实上,用户在使用系统时,输入一些错误指令和参数是经常发生的,如果软件遇到这种情况不能做出适当的反应,给出相应的提示信息,就可能会误导用户,甚至造成严重损失。 6) 软件中遗留的错误数量与已经发现的错误数量成正比。根据这个规律,对测试中发现错误成堆的模块更要仔细测试。例如,在某个著名的操作系统中,44%的错误仅与4%的模块有关。 7) 回归测试的关联性要特别引起注意,修改一个错误而引起更多错误的现象并不少见。 8) 测试程序时不仅要检查程序是否做了它应该做的事情,还要检查它是否做了不该做的事情。 例如,工资软件中,软件只完成在编职工的工资计算和输出,不在编人员的工资是不进行计算和输出的。如果软件将不在编人员的工资信息也输出显然是不合适的。 9) 严格执行测试计划。在测试之前应该有明确的测试计划,内容包括:要测试的软件功能和内容、测试用例和预期结果、测试的进度安排、需要的工具和资源、测试控制方式和过程等。 10)做好测试记录,为统计和维护提供基础数据。 4. 请说明集成测试、系统测试和验收测试有什么不同? 答:集成测试界于单元测试和系统测试之间,起到
F. 、测试的内容相同 b、一个等价类中的某个测试可以发现缺陷,那么这个等价类的其他测试也能发现缺陷 c、一个等价类中的某个测试不能发现缺陷,那么这个等价类的其它测试也不能发现缺陷2)边界值分析法 特点是:用边界值分析时时常收获较大,它是在等价类的边界上选择测试用例3)错误推测法 特点是:没有确定的步骤,很大程度上是凭借经验进行的 4)因果图法 特点是:考虑输入条件间的组合关系;考虑输出条件对输入条件的信赖关系;测试用例发现错误的效率高;能查出功能说明中的某些不一致或遗漏 9. 白盒测试法有哪些覆盖标准?试对它们的检错能力进行比较。 答:白盒测试的覆盖标准有:语句覆盖->判定覆盖->条件覆盖->判定/条件覆盖->条件组合覆盖->路径覆盖 检错能力由弱到强 10. 根据下面程序代码,画出程序流程图,然后设计满足条件/判定覆盖、条件组合覆盖的测试用例。
G. EGIN T:=0 IF ( X>=80 AND Y>=80 )THEN T:=1 ELSE IF ( X>=90 AND Y>=75 ) THEN T:=2 ENDIF IF (X>=75 AND Y>=90) THEN T:=3 ENDIF
NDIF RETURN

条件/判定覆盖:
题目解答
答案
B