“有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。”
(1) 试利用因果图法,建立该软件的因果图; (2) 设计测试该软件的全部测试用例。
作业9:
1. 请从供选择的答案中选出应填入下列( )中的字句。
程序的三种基本控制结构是( A )。它们的共同点是( B )。结构化程序设计的一种基本方法是( C )。软件测试的目的是( D )。软件调试的目的是( E )。 供选择的答案:
A. ① 过程,子程序,分程序 ② 顺序,条件,循环
③ 递归,堆栈,队列 ④ 调用,返回,转移 B. ① 不能嵌套使用 ② 只能用来写简单的程序
③ 已经用硬件实现 ④ 只有一个入口和一个出口 C. ① 筛选法 ② 递归法 ③ 归纳法 ④ 逐步求精法 D. ① 证明程序中没有错误 ② 发现程序中的错误
③ 测量程序的动态特性 ④ 检查程序中的语法错误 E. ① 找出错误所在并改正之 ② 排除存在错误的可能性
③ 对错误性质进行分类 ④ 统计出错的次数 2.从下列关于软件测试的叙述中,选出5条正确的叙述。 (1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。 (2) 尽量用公共过程或子程序去代替重复的代码段。 (3) 测试是为了验证该软件已正确地实现了用户的要求。
(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。 (5) 尽量采用复合的条件测试,以避免嵌套的分支结构。
(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。
(7) 发现错误多的程序模块,残留在模块中的错误也多。 (8) 黑盒测试方法中最有效的是因果图法。
(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。 (10) 程序效率的提高主要应通过选择高效的算法来实现。
3.从供选择的答案中选出应填入下面有关软件测试的叙述的( )内的正确答案。
软件测试方法可分为黑盒测试法和白盒测试法两种。
黑盒测试法是通过分析程序的( A )来设计测试用例的方法。除了测试程序外,它还适用于对( B )阶段的软件文档进行测试。
白盒测试法是根据程序的( C )来设计测试用例的方法。除了测试程序外,它也适用于对( D )阶段的软件文档进行测试。
白盒法测试程序时常按照给定的覆盖条件选取测试用例。( E )覆盖比( F )覆盖严格,它使得每一个判定的每一条分支至少经历一次。( G )覆盖既是判定覆盖,又是条件覆盖,但它并不保证使各种条件都能取到所有可能的值。( H )覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。
单元测试一般以( I )为主,测试的依据是( J )。 供选择的答案:
A, C:① 应用范围 ② 内部逻辑 ③ 功能 ④ 输入数据 B, D:① 编码 ② 软件详细设计 ③ 软件总体设计 ④ 需求分析 E, F, G, H:① 语句 ② 判定 ③ 条件 ④ 判定/条件
⑤ 多重条件 ⑥ 路径
I:① 白盒法 ② 黑盒法
J:① 模块功能规格说明 ② 系统模块结构图 ③ 系统需求规格说明
4.从供选择的答案中选出应该填入下列关于软件测试的叙述的( )内的正确答案。
软件测试中常用的静态分析方法是( A )和( B )。( B )用于检查模块或子程序间的调用是否正确。分析方法(白盒方法)中常用的方法是( C )方法。非分析方法(黑盒方法)中常用的方法是( D )方法和( E )方法。( E )方法根据输出对输入的依赖关系设计测试用例。 供选择的答案:
A ? B: ① 引用分析 ② 算法分析 ③ 可靠性分析 ④ 效率分析 ⑤ 接口分析 ⑥ 操作分析
C ~ E: ① 路径测试 ② 等价类 ③ 因果图 ④ 归纳测试
⑦ 深度优先 ⑧ 调试 ⑤ 综合测试 ⑥ 追踪
⑨ 相对图 5. 黑盒测试是从( )观点出发的测试,白盒测试是从( )观点出发的测试。
A. 开发人员、管理人员 B. 用户、管理人员 C. 用户、开发人员 D. 开发人员、用户 6. 因果图方法是根据( )之间的因果关系来设计测试用例的。
A. 输入与输出 B. 设计与实现 C. 条件与结果 D. 主程序与子程序 7. 为了提高测试的效率,应该( )。
A. 随机地选取测试数据
B. 取切可能的输入数据作为测试数据 C. 在完成编码以后制定软件的测试计划
D. 选择发现错误可能性大的数据作为测试数据
8. 在结构测试用例设计中,有语句覆盖、条件覆盖、判定覆盖(即分支覆盖)、路径覆盖等,其中( )是最强的覆盖准则。
A. 语句覆盖 B. 条件覆盖 C. 判定覆盖 D. 路径覆盖 9. 使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。
A. 程序的内部逻辑 B. 程序的复杂结构 C. 使用说明书 D. 程序的功能 10. ( )就是简化模拟较低层次模块功能的虚拟子程序。
A. 过程 B. 函数 C. 仿真 D. 桩 11. 在程序设计过程中,要为程序调试做好准备,主要体现在( )。
A. 采用模块化、结构化的设计方法设计程序 B. 编写程序时要为调试提供足够的灵活性
C. 根据程序调试的需要,选择并安排适当的中间结果输出和必要的断点 D. 以上全是
12. 软件测试是软件开发过程的重要阶段,是软件质量保证的重要手段,下列( )是软件测试的任务。
① 预防软件发生错误
② 发现并改正程序错误 ③ 提供诊断错误信息
A. 只有① B. 只有② C. 只有③ D. 全部 13. 设计下列伪代码程序的语句覆盖和路径覆盖测试用例。 START
INPUT (A , B) IF A > 5
THEN X := 10 ELSE X := 1 ENDIF IF B> 10
THEN Y := 20 ELSE Y := 2 ENDIF
PRINT(X , Y) STOP
作业10:
1.一个软件产品开发完成投入使用后,常常由于各种原因需要对它做适当的变更。在软件的使用过程中,软件原来的( A )可能不再适应用户的要求,需要进行变更;软件的工作环境也可能发生变化,最常见的是配合软件工作的( B )有变动;还有一种情况是在软件使用过程中发现错误,需要进行修正。通常把软件交付使用后做的变更称为( C )。软件投入使用后的另一项工作是( D ),针对这类软件实施的软件工程活动,主要是对其重新实现,使其具有更好的( E ),包括软件重构、重写文档等。( D )和新的软件开发工作的主要差别在于( H )。我们把常规的软件开发称为( F ),而( G )是从代码开始推导出设计或是规格说明来。 供选择的答案:
A, B. ① 环境 ② 软件 ③ 硬件 ④ 功能和性能 ⑤ 要求 C, D, F, G. ① 逆向工程 ② 正向工程 ③ 软件再工程 ④ 维护 ⑤ 设计 E. ① 可靠性 ② 可维护性 ③ 可移植性 ④ 可修改性 H. ① 使用的工具不同 ② 开发的过程不同 ③ 开发的起点不同 ④ 要求不同
2.软件维护是软件生存期的最后一个阶段。软件工程学针对维护工作的主要目标是提高( A ),降低( B )。软件的( C )、( D )、( E )是决定软件可维护性的基本因素。软件生存期( F )的工作与软件可维护性有密切的关系。
供选择的答案:
A, B. ① 软件的生产率 ② 文档 ③ 软件的可靠性
④ 软件的可维护性 ⑤ 维护的代价 ⑥ 维护的效率 C, D, E. ① 可测试性 ② 互操作性 ③ 可理解性 ④ 可修改性 ⑤ 可复用性 ⑥ 可管理性 F. ① 编码阶段 ② 设计阶段 ③ 测试阶段 ④ 每个阶段
3.软件可维护性是指纠正软件系统出现的错误和缺陷,以及为满足新的要求进行修改,
( A )的容易程度。目前广泛使用7个特性来衡量软件的可维护性,其中就有( B )、( C )、( D )。其中,( B )和( D )主要在改正性维护中侧重应用,( C )主要在适应性维护和( E )维护中侧重应用。 供选择的答案: A. ① 维护 ② 扩充与压缩 ③ 调整 ④ 再工程 B ? D. ① 安全性 ② 可靠性 ③ 完整性 ④ 适应性 ⑤ 可理解性 ⑥ 可使用性 ⑦ 一致性 ⑧ 数据无关性 E. ① 预防性 ② 完善性 ③ 改正性 ④ 容错性 4.为什么软件需要维护?维护有哪几种类型?简述它们的维护过程。
5.在软件维护的实施过程中,为了正确、有效地修改,需要经历以下3个步骤:( A )、( B )、( C )。( A )是决定维护成败和质量好坏的关键。( C )包括( D )确认、计算机确认和维护后的( E )。 供选择的答案:
A ? C. ① 修改程序 ② 建立目标程序 ③ 分析和理解程序 ④ 重新验证程序 ⑤ 验收程序 D. ① 动态 ② 静态 ③ 人工 ④ 自动 E. ① 验证 ② 验收 ③ 检验 ④ 存档 6.从供选择的答案中选出同下列各叙述关系最密切的字句。
A. 软件从一个计算机系统或环境转移到另一个计算系统或环境的容易程度。 B. 软件在需要它投入使用时能实现其指定的功能的概率。
C. 软件使不同的系统约束条件和用户需求得到满足的容易程度。
D. 在规定的条件下和规定的一段期间内,实现所指定的功能的概率。 E. 尽管有不合法的输入,软件仍能继续正常工作的能力。 供选择的答案:
① 可测试性 ② 可理解性 ③ 可靠性 ④ 可移植性 ⑤ 可使用性 ⑥ 兼容性 ⑦ 容错性 ⑧ 可修改性 ⑨ 可接近性 ⑩ 一致性
7.改错性维护与“排错”是否是一回事?为什么?
8.软件可移植性是用来衡量软件的( A )的重要尺度之一。为了提高软件的可移植性,应注意提高软件的( B )。采用( C )有助于提高( B )。为了提高可移植性,还应( D )。使用( E )语言开发的系统软件具有较好的可移植性。 供选择的答案:
A. ① 通用性 ② 效率 ③ 质量 ④ 人机界面 B. ① 使用的方便性 ② 简洁性 ③ 可靠性 ④ 设备独立性 C. ① 优化算法 ② 专用设备 ③ 表格驱动方式 ④ 树型文件目录 D. ① 有完备的文件资料 ② 选择好的宿主计算机 ③ 减少输入输出次数
④ 选择好的操作系统
E. ① COBOL ② APL ④ SQL ③ C
作业11:
一.选择题