[整理] 软件开发过程模型和测试模型
软件开发过程模型
1. 瀑布模型
- 是线性模型的一种,在所有模型中占有重要地位,是所有其他模型的一个基础。
- 每一个阶段执行一次,按线性顺序进行软件开发。
测试的切入点
测试阶段处于软件实现后,必须在代码完成后留出足够的时间给测试活动,否则将导致测试不充分,很多问题到项目后期才暴露。
瀑布模型的优点
- 开发的各个阶段比较清晰。
- 强调早期计划及需求调查。
- 适合需求稳定的产品开发。
瀑布模型的缺点
- 依赖于早期的需求调查,不适应需求的变化。
- 单一流程不可逆。
- 风险往往延至后期才显露,失去及早纠正的机会。
- 问题在项目后期才开始暴露。
- 前面未发现的错误会传递并扩散到后面的阶段,可能导致项目失败。
改良
沿用瀑布模型的线性思想,细化了各个阶段,在某些重要关注的阶段之间掺入迭代的思想。
2. 快速原型模型
在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。
- 第一步是建造一企快速原型,实现用户与系统的交互,用户对原型进行评价,进一步细化徒开发软件的需求。通过逐步调整原型使其满足用户的要求,开发人员可以确定用户的真正需求是什么。
- 第二步是在第一步的基础上开发出用户满意的软件产品。
快速原型模型优点
- 克服瀑布模型的缺点,更好地满足用户的需求并减少由于软件需求不明确带来的项目开发风险。
- 适合预先不能确切定义需求的软件系统的开发。
快速原型模型缺点
- 不适合大型系统的开发(适合开发小型的、灵活性高的系统)。
- 前提要有一个展示性的产品原型,因此在一定程度上可能会限制开发人员的创新。
3. 螺旋模型
螺旋模型将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,螺旋模型沿着螺旋线旋转,即在坐标的4个象限上分别表示了4个方面的活动,如图所示:
- 制定计划
- 风险分析
- 实施开发
- 客户评估
螺旋模型优点
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。
螺旋模型缺点
采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。过多的迭代次数会增加开发成本,延迟提交时间。
测试模型
V模型
优缺点(测试方面)
-
优点:
包含了底层测试(单元测试)和高层测试(系统测试);
清楚的标识了开发和测试的各个阶段;
自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。 -
缺点:
自上而下的顺序导致了,测试工作在编码之后,就导致错误不能及时的进行修改;
实际工作中,需求经常变化,导致v模型步骤,反复执行,返工量很大,灵活度较低。
改良
每个步骤都可以进行小的迭代工作。
W模型(重要)
定义:开发一个v;测试一个v组合起来的模型(w模型也叫双v模型)
优点:
- 开发伴随着整个开发周期,需求和设计同样要测试;
- 更早的介入测试,可以发现初期的缺陷,修复成本低;
- 分阶段工作,方便项目整体管理。
缺点
- 开发和测试依然是线性的关系,需求的变更和调整,依然不方便;
- 如果没有文档,根本无法执行w模型;对于项目组成员的技术要求更高!
H模型
优点:
- 开发的H模型揭示了软件测试除测试执行外,还有很多工作;
- 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;
- 软件测试活动可以尽早准备、尽早执行,具有很强的灵活性;
- 软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。
缺点:
- 管理型要求高:
由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制; - 技能要求高:
H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小; - 测试就绪点分析困难:
测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难; - 对于整个项目组的人员要求非常高:
在很好的规范制度下,大家都能高效的工作,否则容易混乱。
例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰。
总结:
- v模型适用于中小企业,
- w模型适用于中大型企业(因为人员要求高),
- h模型人员要求非常高,很少有公司使用。
测试名词解释
-
单元测试
又称模块测诚,针对软件设计中的最小单位—程序模块,进行正确性检查的测试工作。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
单元定义:C中指一个函数,Java中指一个类,在图形化的软件中,单元一般指1个窗口,1个菜单。 -
集成测试
又叫组装测试,通常在单元测试的基础上,将所有程序模块进行有序的、递增的测试。重点测试不同模块的接口部分。 -
系统测试(system testing):
指的是将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
系统测试在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。 -
验收测试
-
α测试:
Alpha是内测版本,即现在所说的C8,比版本表示该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员。一般而言,该版本软件的bug较多,普通用户最好不要安装。 -
β测试:
Beta是公测版本,是对所有用户开放的测试版本。该版本相对于a颜已有了很大的改进,消除了严重的错误,但还是存在着一些陷需要经过大规模的发布试来进一步消除。这一版本通常由软件公司免费发布,用户可从相关的站点下载。通过一些专业爱好者的测试,将结果反馈给开发者,开发者们再进行有针对性的修改。该版本也不适合一般用户安装。 -
λ测试:
Gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了,与即将发行的正式版相差无几,成为正式反布的候选版本。现在也叫做RC-ReleaseCandidate。
简单来说,阿尔法测试主要是测试人员在开发环境下的测试,贝塔测试是在实际环境中的测试,或者公司内部人员在模拟真实环境中的测试。