软件质量保证与测试课后习题(第一章 软件测试概述)

本文介绍了软件测试的意义、缺陷类型与原因、测试的目的和原则,探讨了不同开发模式对测试的影响,以及软件测试在开发过程中的角色。强调了测试在软件质量保证中的作用,但并非万无一失,测试设计和执行同等重要。
摘要由CSDN通过智能技术生成

第一章 软件测试概述

1. 简述软件测试的意义。

随着计算机技术的迅速发展和广泛深入的应用,软件质量问题已成为开发和使用软件人员关注的焦点。而由于软件本身的特性,软件中的错误是不开避免的。不断改进的开发技术和工具只能减少错误的发生,但是却不可能完全避免错误。因此为了保证软件质量,必须对软件进行测试。软件测试是软件开发中必不可少的环节,是最有效的排除和防治软件缺陷的手段,是保证软件质量、提高软件可靠性的最重要手段。

2. 什么是软件缺陷?它的表现形式有哪些?

软件缺陷,即计算机系统或者程序中存在的任何一种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷、瑕疵。

表现形式:

(1)软件未达到产品说明书中已经标明的功能;

(2)软件出现了产品说明书中指明不会出现的错误;

(3)软件未达到产品说明书中虽未指出但应当达到的目标;

(4)软件功能超出了产品说明书中指出的范围;

(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。

3. 简单分析软件缺陷产生的原因。其中哪个阶段引入的缺陷最多,修复成本又最低?

原因:

(1)需求解释有错误;

(2)用户需求定义错误;

(3)需求记录错误;

(4)设计说明有误;

(5)编码说明有误;

(6)程序代码有误;

(7)其他,如:数据输入有误,问题修改不正确

系统详细设计阶段、概要设计阶段,需求分析阶段引入的缺陷最多,修复成本又最低

4.当用户登录进入某网站购物完毕并退出后,忽然想查查购物时付帐的总金额,于是按了浏览器 左上角的“退回”按钮,就又回到了退出前的网页。你认为该购物软件有缺陷吗?如有,是属于哪一类?

该购物软件存在缺陷。这个缺陷属于功能性缺陷中的"退回功能缺失"。

在购物软件中,用户在完成购物并退出后,希望能够方便地返回到之前的页面查看购物时的付款总金额。然而,当用户按浏览器的"退回"按钮时,却又回到了退出前的网页,而不是进入到查看付款总金额的页面。

5.什么是软件测试?简述其目的与原则。

软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程。软件测试是为了发现错误而执行程序的过程。

目的:

(1)证明:获取系统在可接受风险范围内可用的信心;尝试在非正常情况和条 件下的功能和特性;保证一个工作产品是完整的并且可用或可被集成。

(2)检测:发现缺陷、错误和系统不足;定义系统的能力和局限性;提供组件、工作产品和系统的质量信息。

(3)预防:澄清系统的规格和性能;提供预防或减少可能制造错误的信息;在过程中尽早检测错误;确认问题和风险,并且提前确认解决这些问题和风险的途径。

原则:

(1)测试不是为了证明程序的正确性,而是为了证明程序不能工作。正如 Mayer 所说,测试的目的是证伪而不是证真。事实上,证明程序的正确性是不可能的。一个大型的集成化的软件系统不能被穷尽测试以遍历其每条路径,而且即使遍历了所有的路径,错误仍有可能隐藏。我们做测试是为了尽可能地发现错误。

(2)测试应当有重点。因为时间和资源是有限的,我们不可能无休止地进行测试。测试的重点选择需要根据多个方面考虑,包括测试对象的关键程度,可能的风险,质量要求等。这些考虑与经验有关,随着实践经验的增长,判断也会更有效。

(3)事先定义好产品的质量标准。只有建立了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。同样,测试用例应确定预期输出结果。如果无法确定测试结果,则无法进行校验。必须用事先精确对应的输入数据和输出结果来对照检查当前的输出结果是否正确,做到“有的放矢”。

(4)软件项目一启动,软件测试也就开始,而不是等到程序写完才开始进行测试。测试是一个持续进行的过程,而不是一个阶段。在代码完成之前,测试人员要参与需求分析、系统或程序设计的审查工作,而且要准备测试计划、测试用例、测试脚本和测试环境。测试计划可以在需求模型一完成就开始,详细的测试用例定义可以在设计模型被确定后开始。

(5)穷举测试是不可能的。即使一个大小适度的程序,其路径排列的数量也非常大,因此在测试中不可能运行路径的每一种组合。然而,充分覆盖程序逻辑,并确保程序设计中所使用的所有条件都达到是有可能的。

(6)第三方进行测试会更客观,更有效。程序员应避免测试自己的程序,为达到最佳的效果,应由第三方来进行测试。测试是带有“挑剔性”的行为,心理状态是测试自己程序的障碍。同时对于需求规格说明的理解产生的错误也很难在程序员本人测试时被发现。

(7)软件测试计划是做好软件测试工作的前提。所以在进行实际测试之前,应制定良好的、切实可行的测试计划并严格执行,特别要确定测试策略和测试目标。

(8)测试用例是设计出来的,不是写出来的。所以要根据测试的目的,采用相应的方法去设计测试用例,从而提高测试的效率,更多的发现错误,提高程序的可靠性。除了检查程序是否做了它应该做的事,还要看程序是否做了它不该做的事。不仅应选用合理的输入数据,对于非法的输入也要设计测试用例进行测试。

(9)对发现错误较多的程序段,应进行更深入的测试。一般来说,一段程序中已发现的错误数越多,其中存在的错误概率也就越大。

(10)重视文档,妥善保存一切测试过程文档。测试计划、测试用例、测试报告都是检查整个开发过程的主要依据,有利于今后流程改进,同时也是测试人员的智慧结晶和经验积累,对新人或今后的工作都有指导意义。

6.简述软件测试的阶段划分。

规格说明书审查;系统和程序设计审查;单元测试;集成测试;确认测试;系统测试;验收测试。

7.简述软件开发的几个模式,并说明每种模式对软件测试的影响。

(1)大棒模式

大棒模式的优点是简单。计划、进度安排和正规开发过程几乎没有。软件项目组成员的所有精力都花在开发软件和编写代码上,它的开发过程是非工程化的。

大棒模式的软件测试通常是在开发任务完成后进行无法回头修复存在的问题,所以软件测试的工作只是向客户报告软件产品经过测试后发现的情况。

(2)边写边改模式

采用这种方式的软件开发通常最初只有粗略的想法,就进行简单的设计,然后开始较长的反复编写、测试和修复过程。在认为无法更精细地描述软件产品要求时就发布产品。

处于边写边改开发项目的软件测试员要明确的是,其将和程序员一起陷入可能是长期的循环往复的一个开发过程。通常,新的软件(程序)版本在不断地产生,而旧的版本的测试工作可能还未完成,新版本还可能又包含了新的或修改了的功能。

(3)瀑布模式

瀑布模式是将软件生命周期的各项活动规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品。

软件测试在后期展开,使得开发中出现的问题直到开发后期才显露,失去了及早纠正的机会。

(4)快速原型模式

快速原型模式是一种以计算机为基础的系统开发方法,它首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。这个模型可在运行中被检查、测试、修改,直到它的性能达到用户需求为止。

(5)螺旋模式

螺旋模式是瀑布模式与边写边改模式演化、结合的形式,并加入了开发风险评估所建立的软件开发模式。

螺旋模式的主要思想是在开始时不必详细定义所有细节,而是从小开始,定义重要功能,尽量实现,接受客户反馈,进入下一阶段并重复上述过程,直到获得最终产品。

螺旋开发模式中包含了一些瀑布模式(分析、设计、开发和开发步骤)、边写边改模式(每次盘旋上升)和大棒模式(从外界看)。该开发模式具有发现早、产品的来龙去脉清晰、成本相对低、测试从最初就参与各项工作的特点。该软件开发模式目前最常用,并被广泛认为是软件开发的有效手段。

8.简述软件测试过程。

(1)测试计划,确定测试基本原则、生成测试概要设计。

(2)测试需求分析。

(3)测试设计,包括测试用例设计和测试规程规格说明。

(4)测试规程实现。

(5)测试执行。

(6)总结生成报告

9.“软件测试能够保证软件的质量”这句话对吗?软件测试和软件质量之间是什么关系?

这句话不完全准确。软件测试的根本目的是为了保证软件质量。但软件测试不能完全保证软件的质量

软件测试是通过执行一系列测试活动来评估软件系统的功能、性能、可靠性等方面的质量。它旨在发现和纠正软件中的问题和缺陷,以确保软件符合预期的要求和标准。软件测试可以帮助发现潜在的问题和提供反馈,以便开发团队能够及时进行修复和改进。

然而,软件测试并不能完全消除软件中的所有问题和缺陷。软件的质量不仅取决于测试的覆盖范围和质量,还取决于软件开发过程的质量控制和管理。软件质量是一个综合性的概念,包括设计合理性、开发规范性、测试覆盖性等多个方面。

要实现软件质量保证,主要有两种途径:首先通过贯彻软件工程各种有效的技术方法和措施使得尽量在软件开发期间减少错误,其次就是通过分析和测试软件来发现和纠正错误。因此,软件测试是软件质量的重要保证。

对于一个系统做的测试越多,就越能确保它的正确性。然而,软件的测试通常不能保证系统的运行百分之一百的正确。因此,软件测试在确保软件质量方面的主要贡献在于它能发现那些一开始就应避免的错误。软件质量保证的使命首先是避免错误

因此,软件测试是提高软件质量的重要环节之一,但它不能单独保证软件的质量,还需要结合其他质量保障措施和流程进行综合管理和控制。

不对。软件测试是保障软件质量的手段之一,但不是唯一手段。测试是产品高质量的必要非充分条件,软件测试不能决定软件质量。

10. 判断以下说法是否正确:

(1)软件测试和软件调试是同一回事。

(2)软件测试是可以穷尽的。

(3)测试是为了证明软件的正确性。

(4)测试过程中应重视测试的执行,可以轻视测试的设计。

(5)测试不能修复所有的软件故障。

(6)因为测试工作简单,对软件产品影响不大,所以可以把测试作为新员工的一个过渡工作,或把不合格的开发人员安排做测试。

(1)不正确。软件测试和软件调试是不同的概念。软件测试是通过运行系统并评估其行为来发现问题和缺陷,而软件调试是指在开发过程中定位和修复已知问题和缺陷。

(2)不正确。软件测试是一项资源有限的活动,无法穷尽地测试所有可能的情况和路径。测试的目标是在有限的资源和时间内最大程度地发现问题和缺陷。

(3)不正确。测试的目标是发现问题和缺陷,而不是证明软件的正确性。虽然测试可以提供关于软件质量的信息,但无法证明软件的完全正确性。

(4)不正确。测试过程中测试的设计同样重要。测试设计的质量直接影响到测试的有效性和覆盖范围。测试的执行和设计都是测试过程中需要重视的方面。

(5)正确。测试无法修复所有的软件故障。测试的目标是发现问题和缺陷,然后通过修复来解决这些问题。但测试无法保证发现所有问题,也无法修复软件中已经存在的故障。

(6)不正确。测试工作对软件产品的质量和稳定性有重大影响。测试需要专业的知识和技能,以确保测试的有效性和覆盖范围。将测试作为过渡工作或安排不合格的开发人员进行测试可能会导致测试不够专业和有效,从而影响软件产品的质量。

11.简述软件开发进程与测试进程的关系。

软件测试是一个贯穿软件开发生命周期的活动,它可以是一个与开发并行的过程,也可以是在开发完成某个阶段任务之后的活动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值