软件测试技术基础教程第版习题答案 下载本文

内容发布更新时间 : 2022/12/9 7:50:43星期一 下面是文章的全部内容请认真阅读。

第一章 软件测试理论

一、选择题

1、C 2、A 3、D 4、B 5、D 6、D 7、B 8、B

二、简答题 1.

参考答案:

软件测试是伴随着软件的产生而产生的。在软件行业发展初期,没有系统意义上的软件测试,更多的是一种类似调试的测试,测试用例的设计和选取也都是根据测试人员的经验随机进行的,大多数测试的目的是为了证明系统可以正常运行。

到了20世纪70年代以后,很多测试理论和测试方法应运而生,逐渐形成了一套完整的体系。在产业界,从20世纪70年代后期到20世纪80年代中期,很多软件企业成立了QA或者SQA部门。后来QA的职能转变为流程监控(包括监控测试流程),而测试(Testing)则从QA中分离出来成为独立的组织职能。

到了20世纪80年代初期,一些软件测试的基础理论和实用技术开始形成,软件测试作为软件质量保证(SQA)的主要职能,包含软件质量评价的内容。软件测试已有了行业标准(IEEE/ANSI )。

在我国,软件测试目前还没有形成一个真正的产业,尚处于起步阶段。

但是,在国内,现在在软件测试行业中各种软件测试的方法、技术和标准都还在探索阶段。 总之,国内软件测试行业与一些发达国家相比还存在一定的差距。 2.

参考答案:

软件缺陷造成的修复费用随着时间的推移呈指数级地增长,如下图所示。 3.

参考答案:

软件测试的复杂性体现在:

? 不可能对程序实现完全测试。

? 杀虫剂现象,即为了克服被测试软件的免疫力,软件测试员必须不断编写新的测试程序,对程

序的各个部分进行不断测试,以避免被测试软件对单一的测试程序具有免疫力而使软件缺陷不被发现。

? 软件测试的代价不容易掌握,因为随着测试量的增加,测试成本将呈几何数级上升,而软件缺

陷数量降低到某一数值之后将没有明显的变化,寻求最优测试点,掌握好测试工作量是至关重要的。

? 在实际操作过程中,测试人员要进行正确的判断,合理的取舍,根据风险分析来决定哪些故障

需要修复,哪些故障可以不修复,即并不是所有的软件缺陷都需要被修复。 4.

参考答案:

软件测试是软件生命期中费用消耗最大的环节。测试费用除了测试的直接消耗外,还包括其他的相关费用。影响测试费用的主要因素有:

(1) 软件的功能,软件产品需要达到的标准决定了测试的数量。对于那些至关重要的系统必须进行更多的测试。

(2) 目标用户的数量,一个系统的目标用户数量的多少也在很大程度上影响了测试必要性的程度。 (3) 潜在缺陷造成的影响

在考虑测试的必要性时,还需要将系统中所包含的信息价值考虑在内。因此我们应该从经济方面考虑,投入与经济价值相对应的时间和金钱去进行测试。

(4) 开发机构的业务能力

一个没有标准和缺少经验的开发机构很可能会开发出充满错误的软件系统。而一个建立了标准和有很多经验的开发机构开发出来的软件系统中的错误将会少很多。

(5) 测试的时机

测试量会随时间的推移发生改变,在一个竞争很激烈的市场里,争取时间可能是制胜的关键。测试量应该针对合适的目标进行调整。

5.

参考答案:

软件测试是贯穿于整个软件开发的过程。在软件开发的各个阶段,测试人员必须制订本阶段的测试方案,把软件开发和测试活动集成到一起,如下图所示。

6.

参考答案:

软件测试从测试计划编写到测试实施,需要经过一系列的过程。这些测试按软件从编写到交付的各个阶段的先后顺序可分为:单元测试、集成测试、确认(有效性)测试、系统测试和验收(用户)测试5个阶段,如下图所示。

7.

参考答案:

通常软件人员应具备如下素质: (1) 良好的沟通能力

(2) 掌握比较全面的技术 (3) 充分的自信心

(4) 足够的耐心和责任感

(5) 要具备怀疑精神和学习能力 (6) 超强的记忆力和良好的洞察力

第2章 白盒测试技术 一、选择题

1、B 2、C 3、A 4、D 5、B 6、B 7、C 8、C 9、A 10、A

三、简答题 1.

参考答案:

白盒测试方法可以分为两大类:静态测试方法和动态测试方法,动态测试方法是设计一系列的测试用例,通过输入预先设定好的数据来动态地运行程序,从而达到发现程序错误的目的。静态测试方法则不在计算机上实际执行程序,而是以一些人工的模拟技术或使用测试软件对软件进行分析和测试。动态测试方法主要有逻辑覆盖、独立路径测试等。静态测试方法主要有静态结构分析、静态质量度量、代码检查方法等。 2.

参考答案:

根据不同的测试要求,覆盖测试可以分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

语句覆盖就是设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。 判定覆盖又称分支覆盖,就是设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。

条件覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断语句中的每个逻辑条件的可能值至少被满足一次。或者说设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。

判定/条件覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断本身的判定结果(真假)

至少满足一次,同时,每个逻辑条件的可能值也至少被满足一次。即同时满足100%判定覆盖和100%条件覆盖的标准。在保证完成要求的情况下,测试用例的数目越少越好。

条件组合覆盖是指设计足够多的测试用例,使得被测试程序中的每个判断的所有可能条件取值的组合至少被满足一次。

路径覆盖就是设计足够多的测试用例,使得被测试程序中的每条路径至少被覆盖一次。 3.

参考答案:

独立路径测试的基本步骤是:

步骤1:根据源程序导出程序控制流图。

步骤2:根据程序环形复杂度的计算公式,求出程序环形复杂度。 步骤3:根据上面环形复杂度的计算结果,设计测试用例。

4. 参考答案:

(1)请画出以上代码的控制流图。 注意:需要将复合条件分开单独画成节点。

例如:month >= 1 && month <= 12分别用节点2-1,2-2表示

month == 4 || month == 6 || month == 9 || month == 11分别用节点21-1,21-2,21-3,21-4表示

2-1 2-2 4 8 10 11 17 14 6 21-1 21-2 21-3 20 21-4 22 24 25 26

(2)请计算上述控制流图的环复杂度V(G)(独立线性路径数) 区域法:V(G)=11

边与节点的关系:V(G)=27-18+2=11 判定节点的关系:V(G)=10+1=11

(3)假设输入的取值范围是1000 < year < 2001,请使用基本路径测试法为变量year、month设计测试用例(写出year取值、month取值、maxday预期结果),使其满足基本路径覆盖要求。