第1章软件测试概述
1.5 习题
一、名词解释
软件缺陷:又被叫做Bug。
所谓软件缺陷,即为计算机软件或程序中存在的某种破坏软件正常运行的问题、错误,或者隐藏的功能缺陷。
软件测试:利用人工或者自动手段按照测试方案和流程对产品进行功能和性能测试的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
它是识别开发的(中间或最终)软件(整体或部分)的正确度、完全度和质量的过程。
V模型:描述基本的开发过程和测试行为,其价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
W模型:W模型由两个V字型模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。
X模型:X模型的左边,描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终合成为可执行的程序。
右上半部分,这些可执行程序还需要进行测试。
已通过集成测试的成品可以封版,并提交给用户,也可以作为更大规模和范围内集成的一部分。
多根并行的曲线表示变更可以在各个部分发生。
H模型:在H模型中,软件测试过程的活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进入到测试执行阶段。
软件测试可以尽早的进行,并且可以根据被测对象的不同而分层次进行。
二、填空题
1、软件的测试不仅仅是对程序的测试,而且软件的测试应贯穿于整个软件生命周期。
在软件定义阶段产生的可行性报告、项目实施计划、软件需求说明书或系统功能说明书,在软件开发阶段产生的概要设计说明书、详细设计说明书,以及源程序等都是软件测试的对象。
2、软件测试的目的,就是检验软件是否满足任务书或合同等规定的软件质量要求。
简言之,测试的目的应该是满足用户。
3、软件测试模型,主要包括V模型、W模型、X模型、H模型和前置模型。
4、按软件生存周期划分,软件测试可分为:软件测试可分为:定义阶段测试、开发阶段测试、运行阶段测试、维护阶段测试。
5、按实施测试部门划分,软件测试可分为:开发方测试、用户方测试、第三方测试、联合测试。
6、按是否检查软件内部结构和实现算法划分,软件测试可分为:黑盒测试、白盒测试、灰盒测试。
7、软件测试的步骤:测试需求分析、测试计划制定、软件测试设计、测试环境搭建、测试工作执行、测试工作记录、测试缺陷管理、软件测试评估、测试工作总结。
三、判断题
1、用黑盒法测试时,测试用例是根据程序内部逻辑设计的。
(╳)
2、白盒测试是基于对程序控制结构了解的基础上设计测试用例的。
(√)
3、测试是为了验证软件正确地实现了用户的需求。
(√)
4、软件测试的目的是尽可能多的找出软件的缺陷。
(√)
5、 测试是验收测试的一种。
(√)
6、验收测试是由最终用户来实施的。
(╳)
7、软件测试按照测试过程分类为黑盒测试、白盒测试。
(╳)
8、软件项目在进入需求分析阶段,测试人员应该开始介入其中。
(√)
9、软件生存周期是从软件开始开发到开发结束的整个时期。
(╳)
四、单项选择题
1、软件测试是按照特定的规程,A的过程。
A. 发现软件错误
B. 说明程序正确
C. 证明程序没有错误
D. 设计并运行测试用例
2、测试用例是专门为了发现软件错误而设计的一组或多组数据,它由C组成。
A. 测试输入数据
B. 预期的测试输出数据
C. 测试输入和预期的输出数据
D. 按照测试用例设计方法设计出的数据
3、一个成功的测试是B。
A. 发现错误
B. 发现了至今尚未发现的错误
C. 没有发现错误
D. 证明发现不了错误
4、软件测试的目的是B。
A. 避免软件开发中出现的错误
B. 发现软件开发中出现的错误
C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性
D. 修改软件中出现的错误
5、软件测试是软件开发过程的重要阶段,是软件质量保证的重要手段,下列 C是软件测试的任务?
A. 只有预防软件发生错误
B. 只有发现改正程序错误
C. 只有提供诊断错误信息
D. 都是
6、软件测试是软件质量保证的重要手段,下述A测试是软件测试的最基础环节?
A. 功能测试
B. 单元测试
C. 结构测试
D. 确认测试
7、编码阶段产生的错误由A检查出来。
A. 单元测试
B. 集成测试
C. 有效性测试
D. 系统测试
四、简答题
1、软件测试的目的与原则是什么?
软件测试的目的:(1)验证软件是否满足任务书或合同或项目开发计划、系统/子系统设计文档、软件需求分析说明书、软件设计说明书和软件产品说明书等规定的软件质量要求;(2)通过测试,发现软件缺陷;(3)为软件产品的质量测量和评价提供依据。
软件测试的原则:(1)应当把“尽早和不断地测试”作为开发者的座右铭;(2)程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完成;(3)设计测试用例时,应该考虑到合法的输入和不合法的输入,以及各种边界条件,特殊情况下要制造极端状态和意外状态,比如:网络异常中断、电源断电等情况;(4)一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系;(5)对测试错误结果一定要有一个确认的过程。
一般由A测试出来的错误,一定要由B来确认,严重的错误可以召开评审会进行讨论和分析;(6)制定严格的测试计划,排除测试的随意性,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个复杂的、高水平的测试;(7)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见;(8)妥善保存一切测试过程文档,包括测试计划,测试用例,出错统计和最终分析报告,为测试的重现及维护提供方便。
2、什么是软件测试。
利用人工或者自动手段按照测试方案和流程对产品进行功能和性能测试的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
它是识别开发的(中间或最终)软件(整体或部分)的正确度、完全度和质量的过程。
3、简述软件测试的步骤。
严格的说,软件测试从软件开始立项时就开始了,前后要经过以下一些主要环节:测试需求分析→测试计划制定→软件测试设计→测试环境搭建→测试工作执行→测试工作记录→测试缺陷管理→软件测试评估→测试工作总结。
软件测试的步骤,见图1-9。
4、α测试与β测试的区别是什么?
α测试:由潜在用户或者独立的测试团队在开发环境下或者模拟实际操作环境下进行的测试,通常在开发组织之外进行。
通常是对现货软件进行内部验收测试的一种方式。
β测试:用户在开发组织外,没有开发人员参与的情况下进行的测试,检验软件是否满足客户及业务需求。
这种测试是软件产品获得市场反馈进行验收测试的一种形式。
α测试成功后,才能进行β测试。
5、简述软件测试模型及其特点。
软件测试模型,主要包括V模型、W模型、X模型、H模型和前置模型。
V模型指出,单元测试和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户的需要。
但V模型存在一定的局限性,它仅仅把测试作为在编码之后的一个阶段,是针对程序进行的寻找错误的活动,而忽视了测试活动对需求分析、系统设计等活动的验证和确认的功能。
W模型强调,测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等也同样要测试。
也就是说,测试与开发是同步进行的。
W模型有利于尽早地全面的发现问题。
例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。
同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
但W模型也存在局限性。
在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。
这样就无法支持迭代的开发模型。
对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临的困惑。
X模型定位了探索性测试(右下方)。
这是不进行事先计划的特殊类型的测试,诸如“我要这样测一下,结果会怎样?”这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。
由于X模型从没有被文档化,其内容一开始需要从V模型的相关内容中进行推断,因为它还没有完全从文档上成为V模型的全面扩展。
H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生存周期,与其他流程并发地进行。
H模型指出软件测试要尽早准备,尽早执行。
不同的测试活动可以按照某个次序先后进行,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。
前置模型,将开发和测试的生存周期整合在一起,随项目开发开始到结束,关系到每个阶段,每个关键行为,要求对每一个交付的内容都进行测试。