1.1.3 软件工程模型
讨论软件测试学,不得不涉及软件工程模型,因为软件测试学与软件工程学的发展是依依相关、相辅相成的。根据目前比较先进的软件测试理念,软件测试应该贯穿于软件工程的整个过程中。下面介绍几种软件工程模型。
1.瀑布模型
图1-6 瀑布模型
图1-6为瀑布模型。这个模型是最经典的软件工程模型,包括“计划”->“需求分析”->“设计”->“编码[J1] ->“测试”->“运行维护”这几个阶段。
但是,这个模型存在比较严重的缺点。
(1)不可反复及不适用于需求变更比较频繁的情况。由于瀑布模型从业务建模到运行维护一脉相承,不可以反复。而现代软件项目中,需求变更是无处不在的:“唯一不变的是需求变更”。若运用这种模型,只要项目需求发生变化,就要把原有的设计打翻,重新进行系统分析,概要设计,详细设计等。
(2)用户很难在项目初期了解项目状态:由于用户在项目初期很难提出明确的需求,而利用瀑布模型只有到编码结束,软件测试工程师才可介入软件测试,客户才可以看到是否是他们需要的产品,在此之前这些产品他们不完全了解,有时需要补充,有时客户也有可能推翻他们原本的需求,提出新的需求,这样往往会给客户方、开发方带来很多麻烦。
2.迭代模型和螺旋模型
图1-7为迭代模型。瀑布模型和迭代模型往往在概念上区别不明显。事实上,这两个模型在思想本质上是一致的。它将客户的需求按照用户的重要等级和模块自身的等级进行安排,从最开始进行分析、设计、编码、测试,然后再进入下一轮迭代。用户只要在每一轮结束后,就可以看到产品的一些雏形,从而可以进行需求变更和提出下一轮建议。该模型初期开发工作比较少,用户又可以及时提出下一轮更详细的需求和变更,所以这样的模型往往利于软件公司产品的研发。这类模型有著名的RUP模型、快速开发模型以及现在比较流行的敏捷开发等,它们都遵循迭代的思想。
图1-7 迭代模型
扩展阅读:增量开发与迭代开发 |
|
增量开发 |
迭代开发 |
注:本书中扩展阅读大部分来自于百度百科,请见参考文献【21】。
1.1.4 软件测试模型
1.V模型
图1-8所示为V模型测试。
图1-8 V模型测试
- 单元测试相对于编码进行,这一步往往由开发工程师执行。
- 集成测试相对于详细设计,将模块以由上到下、由下到上或混合方式进行逐步集成。测试软件模块与模块、类与类之间的关联性。
- 系统测试相对于概要设计,软件测试工程师站在整体的立场上对系统进行全面的软件测试工作。
- 验收测试是用户对产品进行的测试,一般分为Alpha测试和Beta测试。验收测试往往由系统维护人员或者用户来完成,需要完全站在用户的立场上进行测试,测试环境也要尽可能与用户的实际环境保持一致,大多数时候,需要到用户现场去进行验收测试工作。
2.W模型
图1-9所示为W模型测试。W模型其实是V模型的变种,它提倡的主要思想是软件前置测试理念(即软件测试需要贯穿软件研发的始终)。所以,W模型又称双V模型或前置模型。在需求、设计和编码阶段对产生的工件进行文档评审,一个目的是提出自己的建议和意见,另外一个目的是尽可能理解产品的需求和实现方式。使用前置软件测试法,Bug在软件前期就可以发现,从而降低软件开发的成本。
图1-9 W模型测试
3.X模型
图1-10为X模型。X模型将软件系统分为若干模块,对每个模块进行单元测试、集成测试以及系统测试,然后统一对模块进行集成测试。事实上,这里已经提出了“探索式软件测试”的概念,在本书第3章会详细介绍探索式测试。
图1-10 X模型测试
顾翔凡言:
在正确的道路上作自己擅于做得事,大方向把握好,不要过于纠结,就可以了。