Python 测开27期 - WL - 学习笔记 - 软件开发流程

软件开发流程

软件

  • 与计算机系统操作有关的计算机程序、可能有的文件、文档及数据。

软件开发流程的演变

瀑布模型

  • 软件开发的各项获得严格按照线性方式进行
  • 当前活动接受上一项活动的工作结果
  • 当前活动的工作结果需要进行验证
    image

优点

  • 开发的各个阶段比较清晰
  • 强调早期计划及需求调查
  • 适合需求稳定的产品开发

缺点

  • 由于开发模型是线性的,增加了开发的风险
  • 早起的错误可能要等到开发后期的阶段才能发现

V 模型

  • V 模型是瀑布模型的一种改进
  • V 模型标明了测试过程中的不同阶段
    image

优点

  • 既有底层测试又有高层测试
  • 将开发阶段清除的表现出来,便于控制开发的过程

缺点

  • 容易让人误解为测试是在开发完成之后的一个阶段
  • 由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些 bug 可能不容易找到其根源,并且代码修改起来很困难
  • 如果需求变更较大,导致要重复变更需求、设计、编码、测试,返工量大

W 模型

  • W 模型明确表示出了测试与开发的并行关系
  • W 模型中测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试
    image

优点

  • 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试
  • 更早的介入到软件开发中,能尽早的发现缺陷进行修复
  • 测试与开发独立起来,并与开发并行

缺点

  • 无法支持迭代的开发模型
  • 对于有些项目,开发过程中根本没有文档产生,故 W 模型无法使用
  • 对于需求和设计的测试技术要求很高,实践起来很困难

H 模型

  • 软件开发中需求、设计、编码等活动被分阶段执行,但是实践中,他们并不是完全串行的,它们之间更多是交叉进行的,更多的是迭代执行
  • 把测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
    image

优点

  • 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行
  • 软件测试活动可以尽早准备,尽早执行,具有很强的灵活性

缺点

  • 测试就绪点分析困难
  • 对于整个项目组的人员要求非常高

敏捷模型

XP

SCRUM

  • 增量迭代
  • 小步快跑

DevOps

image

  • 生命周期
    ** 持续开发
    ** 持续测试
    ** 持续集成
    ** 持续部署
    ** 持续监控
    image
  • DevOps 对发布的影响
    ** 减少变更范围
    ** 加强发布协调
    ** 自动化
  • CI/CD
    ** 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就以为着每天可能会发生多次集成,每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,根据测试结果,我们可以确定新代码和原有代码能否正确的集成在一起。
    ** 持续交付(Continuous delivery),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以发布的状况,它的目标在于让软件的构建、测试与发布变得更快以及更频繁,这种方式可以减少软件开发的成本与实际按,减少风险。
  • CD 与 DevOps 的关系
    ** DevOps 的范围更广,是软件交付过程所设计的多个团队之间的合作,并且将软件交付的过程自动化
    ** 持续交付是一种自动化交付的手段,关注点在于将不同的过程集中起来,并且更快、更频繁的执行这些过程
    ** DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型