毕业论文
您现在的位置: 在线软件 >> 在线软件优势 >> 正文 >> 正文

全程软件测试四十六软件测试过程模型

来源:在线软件 时间:2023/2/28

软件测试过程是一种抽象的模型,用于定义软件测试的流程和方法。软件开发过程至关重要,因为开发过程的质量将决定软件的整体质量;同样,测试过程也是十分重要的,因为测试过程的质量会直接影响测试结果的准确性和有效性。软件测试过程与软件开发过程都必须遵循软件工程原理和管理学原理。

随着测试过程管理的进步,许多优秀的测试过程模型被软件测试专家通过无数次的实践总结出来。这些优秀的模型将测试活动进行抽象,并与开发活动相结合,是测试过程管理的重要参考依据。

在软件开发的历史长河中,开发人员及研究人员总结了很多种开发模型,比如瀑布模型、螺旋模型、增量模型、原型模型、迭代模型、快速原型模型以及Rational统一过程等,这些模型对软件开发过程都有良好的指导作用,但这些过程方法并未充分强调测试的价值,也并未对测试工作给予足够的重视,所以利用这些模型无法更好地指导测试实践。

软件测试与软件开发是密切相关的有计划的系统性活动,显而易见,软件测试也需要测试模型去指导实践。值得欣慰的是,软件测试专家也通过无数次测试实践总结出了许多优秀的测试模型。当然,由于测试与开发的结合非常密切,这些测试模型也都对开发过程进行了很好的总结,体现了测试与开发的融合。下面讲解几种主要的测试模型。

V模型

V模型是最具有代表性的测试模型,其最早由保罗·鲁克(PaulRook)在20世纪80年代后期提出,于英国国家计算中心文献中发布,主要用于改进软件开发的效果和效率。

在传统的开发模型(如瀑布模型)中,通常把测试过程作为在需求分析、概要设计、详细设计和编码全部完成后的一个阶段,尽管测试工作可能会占用整个项目周期一半的时间,但仍有人认为测试只是一个收尾工作,而不是主要的工程。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析、分析与设计的关系。V模型从左到右分别描述了开发的基本过程和测试行为,标明测试工程中存在的不同级别,清楚地描述了测试阶段和开发过程各阶段的对应关系。

V模型如图1所示。模型图中箭头代表时间方向,左边的是开发过程的各阶段,与此相对应的是右边测试过程的各个阶段。

图1软件测试V模型

V模型采用了包括低层测试和高层测试的软件测试策略,低层测试是为了保证源代码的正确性,高层测试是为了使整个系统可以满足用户需求。

V模型存在一定的局限性,它把测试过程仅仅作为软件开发的最后一个阶段,这样会间接地让人认为测试可以放在最后来做,如此一来,需求分析等开发的前期工作中隐藏的问题只能到后期验收时发现,这不仅会影响整个开发工作,还可能造成严重的损失。

W模型

V模型无法体现“尽早地和不断地进行软件测试”的原则。在V模型中增加对应软件各开发阶段应同步进行的测试,就演化为W模型。在模型中不难看出,开发是“V”,测试是与其并行的“V”。基于“尽早地和不断地进行软件测试”原则,在软件的需求和设计阶段的测试活动应遵循IEEE-标准。W模型如图2所示。

图2软件测试W模型

W模型由Evolutif公司提出,相对于V模型,W模型更科学。可以说W模型是V模型的升级版,其主要强调的是测试工作伴随着整个软件开发周期,并且测试的对象不只是程序,需求、功能和设计也需要测试。测试与开发同步进行,有利于尽早地发现问题。

W模型也有局限性。W模型和V模型二者都将软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。

H模型

前面的两个测试过程模型都不能较好地体现测试流程的完整性。H模型的提出就是为了解决上述问题。H模型将测试活动完全独立出来,形成一个独立的流程,并将测试准备活动和测试执行活动清晰地体现出来。H模型如图11.3所示。

图3软件测试H模型

图3是在整个生产周期中某个层次上的一次测试“微循环”。其中的“其他流程”可以是任意开发流程,如设计流程、编码流程,也可以是其他非开发流程,如质量保证流程甚至测试流程本身。只要测试条件成熟,测试准备活动完成,测试执行活动便可进行。

H模型具体揭示了以下内容。

(1)软件测试是一个独立的流程,其贯穿产品整个生命周期,与其他流程并行。

(2)软件测试要尽早准备,尽早执行。

(3)软件测试根据被测对象的不同而分层次进行。不同层次的测试活动可以按照某个次序先后进行,但也有可能会反复进行。

(4)软件测试不单单指测试的执行,还包括很多其他的活动。

X模型

X模型的基本思想是由马里克(Marick)提出的,但Marick最开始并不打算建立一个替代模型。罗宾(RobinF.Goldsmith)引用了Marick的一些想法,并对其进行重新组织,建立了X模型。选择“X模型”这一名称是由于X一般代表未知,而Marick也认为他的观点并不足以支撑一个完整的模型,但已经含有一个模型所需要的部分主要内容,包括模型中的一些亮点,如探索性测试(ExploratoryTesting)。X模型如图4所示。

图4软件测试X模型

Marick认为V模型的最大缺点是无法引导项目的全部过程。他还认为一个模型必须能处理开发的所有问题,包括交接、频繁重复的集成以及需求文档的缺乏等。

Marick认为,一个模型不应规定与目前公认的实践不一致的行为。X模型的左侧描述的是针对单独程序片段而进行的相互分离的编码和测试,此后二者将进行频繁的交接,通过集成最终合成可执行程序(图11.4右上半部分),其中可执行程序还需要进一步测试。已通过集成测试的成品可进行封版(图11.4右上的最后一个操作)并提交给用户,也可作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以发生在各个部分。

由图11.4可见,X模型还定位了探索性测试(图11.4右下方)。探索性测试是不进行事先计划的特殊类型的测试。

X模型包含的测试设计步骤与工具配置步骤一样多,而V模型中并没有。但从这层意义来看,X模型也不够真实,实际上,应允许在任何时候采用测试设计步骤。

Marick对V模型提出质疑,还因为V模型基于一套必须按照一定顺序严格排列的开发步骤,而这并不能很好地反应实际的开发过程。

尽管很多项目缺乏足够的需求分析,V模型仍然从需求出发。V模型提示测试人员需要对各开发阶段中已得到的内容进行测试,但未规定需要取得内容的数量。若没有任何需求资料,开发人员可能根本不清楚自己需要做什么。而X模型忽略了需求。一个有效的模型有利于很多良好的实践方法的采用,因此,V模型的一个优点是它对需求角色的确认,而X模型并未如此做,这可能是X模型的一个不足之处。

X模型填补了V模型和W模型的缺陷,可以为测试人员和开发人员带来非常明显的帮助。

模型应用

前面介绍了4种典型的测试模型,上述模型对指导测试工作的进行具有很重要的意义。但任何一个模型都不是完美的,应尽可能地去应用模型中对项目有实用价值的部分,切不可为使用模型而使用模型,那没有任何实际意义。

在上述模型中,V模型强调在整个软件项目开发过程中需要经历的若干个测试级别,而且每一个测试级别都对应一个开发级别。但它忽略了测试的对象不只是程序,或者说它并没有明确指出应对软件需求以及设计进行测试,而这些在W模型中都得到了补充。

W模型强调测试计划等工作先行和对系统需求、系统设计的测试,但W模型和V模型都没有专门针对软件测试的流程予以说明。

事实上,随着软件质量越来越为大家所重视,软件测试也逐步发展成一个独立于软件开发的活动,每个软件测试的细节都有一个独立的操作流程。例如,现今最常见的第三方测试,就包含了从测试计划和编写测试用例,到测试实施以及测试报告编写的全过程,此过程在H模型中有相应的体现。

在H模型中,测试是独立的部分,只要提前做好测试准备工作,就可以开始进行测试。

当然,X模型又在此基础上增加了许多不确定因素的处理措施,因为在真实项目中,经常会有突发情况出现,比如需求变更。

在实际工作中,若要灵活运用各模型的优点,则可在W模型的框架下,运用H模型的思想进行测试,同时将测试和开发密切结合,寻找恰当的就绪点开始测试并进行反复迭代测试,最终保证如期完成预定目标。

转载请注明:http://www.0431gb208.com/sjszjzl/3611.html