软件开发生命周期模型描述了在软件开发项目的每个阶段开展的活动类型,以及这些活动在逻辑上和时间上是如何相互关联的。有许多不同的软件开发生命周期模型,每个模型都需要不同的测试方法。
2.1.1 软件开发和软件测试
为了能够进行适当的测试活动,熟悉常见的软件开发生命周期模型是测试人员职责的重要组成部分。
在任何软件开发生命周期模型中,好的测试都有以下特点:
• 每个开发活动都有对应的测试活动
• 每个测试级别都有与该级别对应的特有测试目标
• 在相应的开发活动中开始对给定的测试级别进行测试分析和设计
• 测试人员参加讨论,以确定和完善需求和设计,并在初稿完成后立即参与评审工作产品(如需求、设计、用户故事等)
无论选择哪种软件开发生命周期模型,测试活动都应该在生命周期的早期阶段开始,以遵循测试尽早介入的原则。
本大纲将常见的软件开发生命周期模型分类如下:
• 顺序开发模型
• 迭代增量开发模型
顺序开发模型将软件开发过程描述为线性且按照顺序的活动次序。这意味着开发过程的任何阶段都应在前一阶段完成时开始。理论上阶段没有重叠,但在实践中,从下一阶段得到早期反馈是有益的。
在瀑布模型中,开发活动(例如需求分析、设计、编码、测试)陆续完成。在这个模型中,测试活动只在所有其他开发活动完成后才会开始。
与瀑布模型不同,V模型在整个开发过程中集成了测试过程,践行了尽早测试的原则。此外,V模型还包括与每个相应开发阶段对应的测试级别,这进一步支持了尽早测试(关于测试级别的讨论见第2.2节)。在此模型中,与每个测试级别相关联的测试的执行按照顺序方式进行,但在某些情况下会发生重叠。
顺序开发模型交付的软件包含了全套的功能,但通常需要几个月或几年的时间才能交付给利益相关者和用户。
增量开发涉及到建立需求、设计、构建和测试部分系统,这意味着软件的特性逐渐增加。这些特性逐步增加的大小各不相同,有些方法增加的大一些,有些方法小一些。增加的特性可以小到对一个用户接口界面的修改或者一个新的查询选项。
迭代开发发生在多个特性在一系列周期中一起被指定、设计、构建和测试的时候,通常是固定的时间周期。迭代可能涉及到对早期迭代中开发的特性的更改,以及项目范围的更改。每次迭代都交付工作软件,这是整个特性集中不断增长的一个子集,直到最终软件交付或开发停止。
例子包括:
• Rational统一过程RUP:每次迭代相对较长(例如:两到三个月),特性增加相应较大,例如两组或三组相关特性
• SCRUM:每次迭代都较短(例如:几个小时、几天或几个星期),相应的特性增加较小,例如一些增强和(或)两三个新特性
• 看板:实现时使用或不使用固定长度的迭代,这种迭代可以在完成时交付单个增强或特性,也可以将特性组合在一起立即发布
• 螺旋式(或原型):包括创造实验性增量,其中一些可能被大量返工,甚至在后续的开发工作中被放弃
在整个开发过程中,使用这些方法开发的组件或系统往往涉及到测试级别的重叠和迭代。理想的情况是,每个特性在交付之前,在多个测试级别上进行测试。在某些情况下,团队使用持续交付或持续部署,这两者都涉及到作为其交付过程一部分的多个测试级别的大量自动化。许多使用这些方法的开发工作量还包括自组织团队的概念,它可以改变测试工作的组织方式以及测试人员和开发人员之间的关系。
这些方法形成了一个不断发展的系统,它可以按照特性、迭代,或者以更传统的主版本发布方式交付给最终用户。无论软件增量是否发布给最终用户,随着系统的增强回归测试变得越来越重要。
与顺序模型不同,迭代模型和增量模型可以在几周甚至几天内交付可用的软件,但只能在几个月甚至几年内交付全套需求产品。
有关敏捷开发背景下的软件测试的更多信息,请参见ISTQB-AT基础级敏捷测试扩展大纲,Black 2017,Crispin 2008和Gregory 2015。
2.1.2 基于上下文的软件开发生命周期模型
软件开发生命周期模型必须根据项目和产品的特点选择和调整。应根据项目目标、正在开发的产品类型、业务重点(如市场要求时间)以及已识别的产品和项目风险,选择和调整合适的软件开发生命周期模型。例如:小型内部管理系统的开发和测试,应与汽车制动控制系统等安全关键系统的开发和测试有所不同。另一个例子是,在某些情况下,组织和文化问题可能会阻碍团队成员之间的交流,从而阻碍迭代开发。
根据项目的背景,可能需要合并或重组测试级别和/或测试活动。例如:为了将现成的商用现货软件产品集成到更大的系统中,购买者可以在系统集成测试级别(例如:与基础设施和其他系统的集成)和验收测试级别(功能测试和非功能测试,以及用户验收测试和操作验收测试) 上进行互操作性测试。关于测试级别的讨论见第2.2节,关于测试类型的讨论见第2.3节。
此外,软件开发生命周期模型本身也可以合并。例如:V模型可用于开发和测试后端系统及其集成,而敏捷开发模型可用于开发和测试前端用户界面(UI)和功能。在项目早期可以使用原型,在试验阶段完成后采用增量开发模型。
物联网(IoT)系统由许多不同的对象组成,如设备、产品和服务,通常为每个对象应用单独的软件开发生命周期模型。这对物联网系统版本的开发提出了特殊的挑战。另外,这些对象的软件开发生命周期更强调在它们运行使用(例如:运行、更新和退役阶段)之后的软件开发生命周期的后期阶段。

2.1 软件开发生命周期模型相关推荐

  1. 软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结...

    在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格 ...

  2. 【中级软考】软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型、RUP(Rational Unified Process 统一软件开发过程)、敏捷开发(开发方法,不是周期模型)

    文章目录 瀑布模型/改进的瀑布模型(Waterfall Model) 螺旋模型(Spiral Model) 增量和迭代模型(Incremental Model) 原型法(RAPId Prototype ...

  3. 软件开发生命周期模型 瀑布模型、增量模型、原型模型、螺旋模型、喷泉模型总结

    在校期间学习过这些模型,现在来复习一下. 瀑布模型/改进的瀑布模型 虽然瀑布模型仍然存在很多的问题有待解决,但瀑布模型仍然是最基本的和最效的一种可供选择的软件开发生命周期模型.瀑布模型要求软件开发严格 ...

  4. 软件开发生命周期模型选择方法指南

    概述 本文介绍如何利用项目的特性指标来选择生命周期模型. 文档定义了11个项目的特性指标,在下面的描述中对每一个特性指标都有相关的描述来说明该指标的含义以及它对选择模型的影响和作用. 在2.1节中描述 ...

  5. 信息系统项目管理:软件开发生命周期模型的选择比较

    一.边做边改模型(Build-and-Fix Model) 遗憾的是,许多产品都是使用"边做边改"模型来开发的.在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次 ...

  6. 软件开发生命周期模型

    1.瀑布模型 瀑布模型各个步骤是分立的,没有交叉,瀑布模型无法回溯 2.V模型 V模型存在一定的局限性,它仅仅作为需求分析概要设计...最后一个阶段,主要是针对测试寻找错误,需求分析的问题一直留到后期 ...

  7. 软件开发生命周期中的设计阶段_什么是软件生命周期模型?软件测试和软件开发的关系分析!...

    软件生命周期这个词,对于大部分人应该比较陌生,但却不容忽视!正因为它的重要性,才有许多不同的软件开发生命周期模型,但是它们都有一个共同的特点,那就是在生命周期中的某一时刻,软件都会被测试.今天我就和大 ...

  8. 数据仓库的软件开发生命周期

    数据仓库的软件开发生命周期 需求工程 设计 实施和单元测试 集成和系统测试 操作和维护 传统上,数据仓库项目遵循软件开发生命周期模型的一个变体,称为瀑布模型.虽然文献中有多个版本,各阶段的数量和名称不 ...

  9. 软件开发生命周期及开发模型

    软件开发生命周期 软件开发生命周期又叫做SDLC(Software Development Life Cycle),它是集合了计划.开发.测试和部署过程的集合.如下图所示 : 需求分析 这是生命周期的 ...

  10. SDLC 软件开发生命周期及模型

    SDLC 软件开发生命周期及模型 SDLC Waterfall Model 瀑布模式 V-Shaped Model V型模式 Prototype Model 原型模式 Spiral Model Ite ...

最新文章

  1. matlab画多个垂直的线段,新手求助,图形最后多出一条垂直线
  2. 检测到包降级: Microsoft.Extensions.Configuration.Abstractions 从 2.1.1 降 2.1.0
  3. vue-cli3 中跨域解决方案
  4. shell date 格式化
  5. python画笑脸-用Python画滑稽
  6. vsFTPD编译安装使用实用手册
  7. ribbon和feign的区别
  8. 如何垂直居中一个img
  9. React 教程第六篇 —— 样式绑定
  10. hive2solr问题小结
  11. 积累bootstrap的一些知识
  12. MySQL-05:pymysql与pycharm设置
  13. DFS深搜与BFS广搜专题
  14. 黑马程序员顺义校区php_黑马程序员:从PHP零基础到月薪11K为何送锦旗给班主任?...
  15. 犹太人从未透露的12个秘密(图)
  16. 曲线(信息学奥赛一本通-T1435)
  17. JDK 1.8新特性
  18. 弄懂bind,apply和call的区别
  19. 微信小程序云开发:上传图片、视频到云存储指定目录并渲染到页面上
  20. 团队作业9——展示博客

热门文章

  1. java 单例 内存释放_java 单例模式 防止内存泄漏
  2. php培训周期,合肥PHP培训周期为什么往往比2个月要长?
  3. vue插件颜色选择器
  4. 虚幻4服务端linux,UE4 虚幻4教程 服务端构建后启动错误的解决方法
  5. CMSIS-RTOS
  6. Android布局——小米便签编辑界面xml
  7. java链表实现多项式的运算
  8. VS2017社区版试用30天过期重新激活方法
  9. soui 设置边框_UI神器-SOUI
  10. 英文学术论文写作常用词句积累