开发模型和测试模型

软件的生命周期

软件的生命周期是指:从软件产品的设想开始到软件不再使用而结束的时间。

软件的生命周期分为六个阶段:需求分析、计划、设计、编码、测试、运行维护。

开发模型

1.瀑布模型(Waterfall Model)

开发模型和测试模型

适用场景:适合需求变化少的项目、是串行的。

优点:

(1)强调开发的阶段性;

(2)强调早期计划及需求调查;

(3)强调产品测试。

缺点:

(1)依赖于早期进行的唯一一次需求调查,不能适应需求的变化;

(2)由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;

(3)风险性往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。

2.螺旋模型(Spiral Model)

开发模型和测试模型

适用场景:强调风险分析,适合规模大的、复杂度高的项目。

优点:

(1)强调严格的全过程风险管理;

(2)强调各开发阶段的质量;

(3)提供机会检讨项目是否有价值继续下去。

缺点:

(1)引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。

(2)需要人员、资金和时间的投入。

3.增量、迭代

增量是指一块一块来进行测试、而迭代是指先整体再细化。

举个例子:比如画一副人物画,用增量,就是先画人的头部,再画身体,再画手脚;而迭代,是先画整体轮廓,在勾勒基本雏形,再细化、着色。

4.敏捷

(1)敏捷宣言

  • 个体与交互重于过程和工具(强调“人与人的沟通”)
  • 可用的软件重于完备的文档(强调“轻文档”,对文档的依赖性不高)
  • 客户协作重于合同谈判(强调“客户参与”)
  • 相应变化重于遵循计划(“强调拥抱变化”)
  • 在每对比对中,后者并非全无价值,但我们更看重前者

(2)scrum

敏捷开发有很多种方式,其中scrum是比较流行的一种。

scrum里面的角色:

scrum由 product owner(产品经理)、scrum master(项目经理)和 team(研发团队)组成;

  • 其中 product owner 负责整理 user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • scrum master 负责召开各种会议,协调项目,为研发团队服务。
  • 研发团队则由不同技能的成员组成,通过紧密协同,完成每一次迭代目标,交付产品。

(3)敏捷中的测试

挑战1:轻文档(即对文档的依耐性比较少)

挑战2:快速迭代

测试模型

1.软件测试V模型(瀑布模型的变种)

开发模型和测试模型

注:在系统测试阶段测试人员需要(环境搭建、数据准备、测试执行、缺陷管理、测试报告编写)

优点:该模型明确标注了测试过程中存在的不同类型的测试,并且清楚地描述了这些阶段和开发过程期间各个阶段的对应关系。

缺点:本模型具有局限性(仅仅把测试作为编码之后的一个阶段,未在需求阶段就进入测试)。

2.软件测试的W模型(双“V”模型)

开发模型和测试模型

优点:从图中我们不难发现,在W模型中,测试和开发是并行的关系。这样有利于尽早的全面发现问题。例如,在需求分析结束后,测试人员就应该尽早参与到需求验证和确认活动中,以便于尽早的发现缺陷所在。

缺点:该模型还是有一定的局限性,虽然说开发和测试是并行的,但该模型整体还是串行的,上一个阶段完全结束,才可正式开始下一个阶段工作,无法支持敏捷开发模式。

 

关于开发和测试模型今天就介绍到这儿,大佬们可以留言补充~~~