开发模型和测试模型
随着软件工程学科的发展,软件工作的范围不仅仅局限在程序编写,而是扩展到了整个软件的生命周期,如软件基本概念的形成,需求分析,设计,实现,测试,安装部署,运行维护,直到软件被更新,替换成了其他版本。软件工程还包括很多技术性的管理工作,例如过程管理,产品管理,资源管理和质量管理,在这些方面也逐步地建立起来标准或规范
软件的生命周期:
软件的生命周期是指从软件产品的涉嫌开始到软件产品不在使用而结束。如果吧软件看成是有生命的事物,那么软件的生命周期可以分成6个阶段
即需求分析,计划,设计,编码,测试,运行维护
开发模型
一、瀑布模型:
瀑布模型是其他模型的基础框架,是线性顺序进行的。
- 适用于需求比较稳定,需求变化少的项目,是串行的
- 优点:
-
- 强调开发的阶段性
- 强调早期计划及需求
- 强调产品测试
- 缺点:
-
- 依赖于早期进行的唯一一次需求,不能适应需求的变化
- 流程单一,开发中的经验教训不能反馈应用于本产品的过程
- 风险性延迟至后期的测试阶段才显露,失去了早纠正的机会
- 瀑布模型的测试阶段处于软件实现后,这意味着必须在代码完成后,有足够的时间预留给测试活动,否则将导致测试不充分,从而把缺陷之间遗留给用户
二、螺旋模型
螺旋模式,一般在软件开发初期阶段雪球不是很明确的时候,采用渐进式的开发模式,螺旋模型式渐进式开发模型的代表之一
- 适用于规模大,复杂度高,风险大的项目
- 它不允许有一段独立的时间测试,测试必须跟随开发的迭代而迭代,因此回归测试的重要性不言而喻
- 优点:
-
- 强调严格的过程风险管理
- 强调各开发段的质量;
- 提供机会检讨项目是否有价值继续下去
- 缺点
- 引入非常严格的风险识别,风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。需要人员、资金和时间的投入
三、增量、迭代
- 增量是指一块一块来进行测试、而迭代是指先整体在细化
例如画一幅人物画,用增量就是先画头,再画身体,再画手脚;而迭代是先描绘出一个整体的轮廓,勾勒出基本的雏形,然后再细化,着色
- 增量通常和迭代混为一块,可以降低风险,和螺旋结构相似
四、敏捷
1.敏捷宣言:我们通过身体力行和帮助他人来揭示更好的软件开发方式。由此形成了以下价值观:
- 个体于交互重于过程和工具(强调“人与人的沟通”)
- 可用的软件重于完备的文档(强调“轻文档”,对文档的依赖性不高)
- 客户协作重于合同谈判(强调“用户参与”)
- 响应变化重于遵循计划(强调“拥抱变化”)
敏捷开发有很多种方式,其中scrum是比较留下的一种
2.敏捷中的角色:
scrum有product owner (类似于“产品经理”),scrum master(类似于“项目经理”)和team(研发团队)组成
- 其中product owner负责整理user story(用户事故),定义其商业价值,对其进行排序,直到发布计划,对产品负责
- scrum master负责召开各种会议,协调项目,为研发团队服务
- 研发团队由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品
迭代开发:
与瀑布模型不一样,scrum将产品的开发分解为若干各小的迭代,其周期从1~4不等,但不会超过四周期,参与团队成员一般5~9人,每期迭代要完成的user story是固定的,每次迭代会产生一定的交付
3.敏捷中的测试
挑战一:轻文档,即对文档的依赖性比较少
挑战二:快速迭代
测试模型
一、软件测试v模型(瀑布模型的变种)
优点:该模型明确标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段二号开发过程期间各个阶段的对应关系
缺点:本模型具有局限性,仅仅把测试作为编码之后的一个阶段,未在需求阶段写入测试
二、软件测试W模型(双v模型)
w模型由俩个v组成,分别代表测试和开发的过程,w模型下测试和开发并行。
特点:测试的对象不仅是程序,需求,设计等,同样要测试
优点:有利于尽早的全面的发现问题,例如:在需求分析后,测试人员就应该尽早的参与到需求验证和确认活动中,以便尽早发现缺陷所在
缺点:局限性,虽然开发与测试是并行的,但是需求,设计,编码等活动仍是串行,上一阶段完成,下一阶段才能开始工作,无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,w模型并不能解除测试管理面临的困惑
配置管理器:是通过对在软件生命周期不同的时间点上的软件配置进行标识,并对在这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可塑性的过程