软件测试学习4-测试基础:软件开发模型
软件开发模型
由于项目、需求的模式不同,所以在软件生命周期过程中选择的软件开发模型也会有所不同,在历史上,软件开发模型经历了边做边改、瀑布型、快速原型模型、迭代式型、V模型、W模型、螺旋型、敏捷开发模型 等模式的变更
瀑布模型
首先由温斯顿·罗伊斯(Winston Royce)提出。该模型由于酷似瀑布闻名。在该模型中,首先确定需求,并接受客户和软件质量保证(SQA)小组的验证。然后拟定规格说明,同样通过验证后,进入计划阶段…可以看出,瀑布模型中至关重要的一点是只有当一个阶段的文档已经编制好并获得软件质量保证小组的认可才可以进入下一个阶段。这样,瀑布模型通过强制性的要求提供规约文档来确保每个阶段都能很好的完成任务。但是实际上往往难以办到,因为整个的模型几乎都是以文档驱动的,这对于非专业的用户来说是难以阅读和理解的。想象一下,你去买衣服的时候,售货员给你出示的是一本厚厚的服装规格说明,你会有什么样的感触。虽然瀑布模型有很多很好的思想可以借鉴,但是在过程能力上有天生的缺陷。
模型流程:计划 → 需求分析 → 设计 → 编码 → 测试 → 运行维护
模型特点: 1.软件开发的各项活动严格按照线性方式进行。
2.当前活动接受上一项活动的工作结果。
迭代式型
是RUP(Rational Unified Process,统一软件开发过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。迭代的思想如下图所示。

快速原型模型
快速原型(Rapid Prototype)模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。在我的经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在你的原型面前往往口若悬河,有些观点让你都觉得非常的吃惊。在得到用户的需求之后,原型将被抛弃。因为原型开发的速度很快,设计方面是几乎没有考虑的,如果保留原型的话,在随后的开发中会为此付出极大的代价。至于保留原型方面,也是有一种叫做增量模型是这么做的,但这种模型并不为大家所接受。
模型特点: 1、实现客户与系统的交互
2、进一步细化待开发软件需求
3、开发人员可以确定客户的真正需求是什么
4、客户与开发公司紧密联系,开发周期长。开发会受到需求变更的影响
V模型
瀑布模型的变种,它将软件生命周期划分为计划、分析、设计、编码、测试和维护六个阶段。它反映了测试活动与分析和设计的关系 。
模型特点: 1、清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系,这两个并行过程会极大减少BUG出现的几率
2、由于早期的错误可能要等到开发后期的测试阶段才能发现,所以可能带来严重的后果

W模型
瀑布模型的变种,相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。 W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。 但W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。

螺旋模型
是一个演化软件过程模型,将原型模型中的迭代特征和瀑布模型线性顺序控制和系统化的方面结合起来。
模型流程:制订计划(决定目标、方案和限制) → 风险分析(评价方案、识别风险、消除风险) → 实施工程(开发、验证下一产品) → 客户评估
模型特点:强调了其它模型所忽略的风险分析,特别适用庞大而复杂、高风险系统开发
模型缺点:过于强调风险分析,但要求许多客户接受并相信这种分析,是不容易的
敏捷开发模型
敏捷开发模型(Agile)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
模型特点: 1、短周期开发
2、增量开发
3、由程序员和测试人员编写的自动化测试来监控开发进度
4、通过口头沟通、测试和源代码来交流系统的结构和意图
5、编写代码之前先写测试代码,也叫做测试先行
模型缺点: 1、团队的组建较难,人员素质要求较高
2、对测试员要求完全掌握各种脚本语言编程,能执行单元测试、自动化测试

参考文档:《MBA智库-软件生命周期》
参考文档:《Blibili用户"Tuple_元组-软件开发模型"》
参考文档:http://t.zoukankan.com/laoshuai-p-13130234.html

浙公网安备 33010602011771号