《软件测试技术实战 设计、工具及管理》联载-2

简介: 《软件测试技术实战 设计、工具及管理》联载-2

1.1.3  软件工程模型


讨论软件测试学,不得不涉及软件工程模型,因为软件测试学与软件工程学的发展是依依相关、相辅相成的。根据目前比较先进的软件测试理念,软件测试应该贯穿于软件工程的整个过程中。下面介绍几种软件工程模型。


1.瀑布模型


image.png

1-6  瀑布模型


1-6为瀑布模型。这个模型是最经典的软件工程模型,包括“计划”->“需求分析”->“设计”->“编码[J1] ->“测试”->“运行维护”这几个阶段。


但是,这个模型存在比较严重的缺点。


1)不可反复及不适用于需求变更比较频繁的情况。由于瀑布模型从业务建模到运行维护一脉相承,不可以反复。而现代软件项目中,需求变更是无处不在的:“唯一不变的是需求变更”。若运用这种模型,只要项目需求发生变化,就要把原有的设计打翻,重新进行系统分析,概要设计,详细设计等。


2用户很难在项目初期了解项目状态:由于用户在项目初期很难提出明确的需求,而利用瀑布模型只有到编码结束,软件测试工程师才可介入软件测试,客户才可以看到是否是他们需要的产品,在此之前这些产品他们不完全了解,有时需要补充,有时客户也有可能推翻他们原本的需求,提出新的需求,这样往往会给客户方、开发方带来很多麻烦。


2.迭代模型和螺旋模型

       1-7为迭代模型。瀑布模型和迭代模型往往在概念上区别不明显。事实上,这两个模型在思想本质上是一致的。它将客户的需求按照用户的重要等级和模块自身的等级进行安排,从最开始进行分析、设计、编码、测试,然后再进入下一轮迭代。用户只要在每一轮结束后,就可以看到产品的一些雏形,从而可以进行需求变更和提出下一轮建议。该模型初期开发工作比较少,用户又可以及时提出下一轮更详细的需求和变更,所以这样的模型往往利于软件公司产品的研发。这类模型有著名的RUP模型、快速开发模型以及现在比较流行的敏捷开发等,它们都遵循迭代的思想。

image.png

1-7 迭代模型


 

 

扩展阅读:增量开发与迭代开发


微信图片_20230211203555.jpg

微信图片_20230211203601.jpg


        增量开发

       迭代开发

注:本书中扩展阅读大部分来自于百度百科,请见参考文献【21】。


1.1.4  软件测试模型


1V模型

1-8所示为V模型测试。

image.png



1-8  V模型测试


  •  单元测试相对于编码进行,这一步往往由开发工程师执行。
  •  集成测试相对于详细设计,将模块以由上到下、由下到上或混合方式进行逐步集成。测试软件模块与模块、类与类之间的关联性。
  •  系统测试相对于概要设计,软件测试工程师站在整体的立场上对系统进行全面的软件测试工作。
  •  验收测试是用户对产品进行的测试,一般分为Alpha测试和Beta测试。验收测试往往由系统维护人员或者用户来完成,需要完全站在用户的立场上进行测试,测试环境也要尽可能与用户的实际环境保持一致,大多数时候,需要到用户现场去进行验收测试工作。


2W模型

1-9所示为W模型测试。W模型其实是V模型的变种,它提倡的主要思想是软件前置测试理念(即软件测试需要贯穿软件研发的始终)。所以,W模型又称双V模型或前置模型。在需求、设计和编码阶段对产生的工件进行文档评审,一个目的是提出自己的建议和意见,另外一个目的是尽可能理解产品的需求和实现方式。使用前置软件测试法,Bug在软件前期就可以发现,从而降低软件开发的成本。

image.png


1-9 W模型测试


3X模型

1-10X模型。X模型将软件系统分为若干模块,对每个模块进行单元测试、集成测试以及系统测试,然后统一对模块进行集成测试。事实上,这里已经提出了“探索式软件测试”的概念,在本书第3章会详细介绍探索式测试。

image.png


1-10  X模型测试


顾翔凡言:

在正确的道路上作自己擅于做得事,大方向把握好,不要过于纠结,就可以了。

目录
相关文章
|
敏捷开发 测试技术 程序员
《软件测试技术实战 设计、工具及管理》联载-17
《软件测试技术实战 设计、工具及管理》联载-17
62 0
《软件测试技术实战 设计、工具及管理》联载-17
|
搜索推荐 Java 测试技术
软件测试技术实战 设计、工具及管理》联载-35
软件测试技术实战 设计、工具及管理》联载-35
76 0
软件测试技术实战 设计、工具及管理》联载-35
|
监控 Java 测试技术
《软件测试技术实战 设计、工具及管理》联载-40
《软件测试技术实战 设计、工具及管理》联载-40
89 0
《软件测试技术实战 设计、工具及管理》联载-40
|
测试技术 程序员 Linux
《软件测试技术实战 设计、工具及管理》联载-3
《软件测试技术实战 设计、工具及管理》联载-3
75 0
《软件测试技术实战 设计、工具及管理》联载-3
|
存储 敏捷开发 编解码
《软件测试技术实战 设计、工具及管理》联载-11
《软件测试技术实战 设计、工具及管理》联载-11
92 0
《软件测试技术实战 设计、工具及管理》联载-11
|
敏捷开发 Web App开发 算法
《软件测试技术实战 设计、工具及管理》联载-41
《软件测试技术实战 设计、工具及管理》联载-41
98 0
《软件测试技术实战 设计、工具及管理》联载-41
|
Java 测试技术 程序员
软件测试技术实战 设计、工具及管理》联载-31
软件测试技术实战 设计、工具及管理》联载-31
82 0
软件测试技术实战 设计、工具及管理》联载-31
|
测试技术
《软件测试技术实战 设计、工具及管理》联载-10
《软件测试技术实战 设计、工具及管理》联载-10
84 0
《软件测试技术实战 设计、工具及管理》联载-10
|
缓存 网络协议 关系型数据库
《软件测试技术实战 设计、工具及管理》联载-22
《软件测试技术实战 设计、工具及管理》联载-22
86 0
《软件测试技术实战 设计、工具及管理》联载-22
|
开发框架 IDE 算法
《软件测试技术实战 设计、工具及管理》联载-39
《软件测试技术实战 设计、工具及管理》联载-39
112 0
《软件测试技术实战 设计、工具及管理》联载-39