测试基础知识3》》软件测试流程及过程模型

在前面两篇,我们已经学习了基本的一些知识点,今天继续了解软件测试流程,软件测试流程可以说是跟随软件开发阶段而形成的相应任务。

软件测试流程是一种抽象的模型,用于定义软件测试的流程和方法。众所周知,开发过程的质量决定了软件测质量,同样的,测试过程的质量将直接影响测试结果的准确性和有效性。软件测试过程和软件开发过程一样,都遵循软件工程原理,遵循管理学原理。

 

软件测试过程可分成以下步骤:单元测试、集成测试、确认测试、系统测试和验收测试。如下图

其中单元测试主要是分别完成每个单元的测试任务,以确保每个模块能正常工作。

集成测试是把已测试过的模块组装起来,进行集成测试,其目的在于检验与软件设计相关的程序结构问题,这时较多的采用黑盒测试方法来设计测试用例。

确认测试主要是在完成集成测试之后,要对开发工作初期指定的确认准则进行检验。

系统测试是针对在完成确认测试以后,给出的应该是合格的软件产品,但为检验它能否与系统的其他部分(如硬件、数据库及操作人员)协调工作,需要进行测试;严格地说,系统测试已经超出了软件工程的范围。

验收测试是检验软件产品质量的最后一道工序,与前面讨论的各种测试活动的不同之处在于它突出了客户的作用,同时软件开发人员也应有一定程度的参与。

其实这些测试,在上一篇博客概述过,只不过现在结合图形来学习比较的深刻、形象。

 

软件测试的过程模型

V模型:V模型是最具代表意义的测试模型,它最早由Paul Rook在20世纪80年代后期提出的,V模型在英国国家计算机中心文献中发布,旨在改进软件开发的效率。

 

在传统的开发模型中,比如瀑布模型,人们通常把测试过程作为在需求分析、概要设计、详细设计和编码全部完成之后的一个阶段,尽管有时测试工作会占用整个项目周期一半的时间,但是有人仍然认为测试只是一个收尾工作,而不是主要的过程。V模型的推出就是对此种认识的改进,V模型就是软件开发瀑布模型的变种。

 

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

 

V模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段。容易使人理解为测试是软件开发的最后一个阶段,主要是针对程序进行测试寻找错误,而需求分析阶段隐藏的问题一直到后期的验收测试才被发现。

 

W模型的建立

V模型的局限性在于没有明确地说明早起的测试,不能体现“尽早地和不断地进行软件测试”的原则。基于这个原则,在软件的需求和设计阶段的测试活动应遵循IEEE标准的原则,所以两个V原理的W模型就问世了。

 

W模型是由Evolutif公司提出,相对于V模型,W模型更科学。W模型可以说是V模型自然而然的发展。它更强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试这样,只要相应的开发活动完成,我们就可以开始执行测试。可以说,测试与开发是同步进行的,从而有利于尽早的发现问题。以需求为例,需求分析一完成,我们就可以对需求进行测试,而不是等到最后才进行对需求的验收测试。

同样的,W模型也是有局限性的。W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行活动。同样的,软件开发和测试保持一种线性的前后关系,需要有严格的指令表示上一阶段完全结束,才可正式开始下一阶段。这样就无法支持迭代、自发性以及变更的调整了。

H模型:虽然软件开发期望有清晰的需求、设计和编码阶段,但是实践告诉我们,严格的阶段划分只是一种理想状况。没有几个项目在有了明确的需求之后才开始设计的。所以,相应的测试之间也不存在严格的次序关系。同时,各层次之间的测试也存在着反复触发、迭代和增量的关系,其次,V模型和W模型都没有很好的体现流程的完整性。

 

为了解决以上问题,有专家提出了H模型。它将测试活动完全的独立出来,形成一个完成独立的流程,将测试准备活动和测试执行清晰的体现出来。

这里图中的其他流程可以是任意开发流程,如设计流程和编码流程,也可以是其他非开发流程,比如SQA流程,甚至是测试流程自身,也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。

 

X模型:由于V模型收到了很多人的质疑,因此,也有人提出额一些不同的观点和意见。在此,向大家介绍另外一种测试模型,X模型,其目标是弥补V模型的一些缺陷。

 

X模型左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后,将进行频繁的交接,通过集成最终合成为可执行的程序,图中的右上方可以体现出来,而且这些可执行程序还需要进行测试,已通过集成测试的成品可以进行封版并提交给用户,也可以作为更大规模和范围内集成的一部分。


同时,X模型还定位了探索性测试,这是不进行事先计划的特殊类型测试,诸如,“我这么测试一下,结果会如何?”,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。

以上为基础理论知识,作为了解级别处理。

猜你喜欢

转载自blog.csdn.net/Yorkie_Lin/article/details/79419733