软测(概念) · 开发模型 · 软件的生命周期 · 瀑布模型 · 螺线模型 · 增量模型 · 迭代模型 · 敏捷模型 · scrum · 软件测试模型之 V 模型 W 模型

news2024/12/27 11:04:29

  • 一、开发模型的由来
  • 二、软件的生命周期
  • 三、瀑布模型(Waterfall Model)
  • 四、螺线模型(Spiral Model)
  • 五、增量模型(Incremental Model)
  • 六、迭代模型(Rational UnifiedProcess)
  • 七、敏捷模型(Fig. Agile Model)
  • 八、scrum
    • 敏捷模型中的测试人员
  • 九、软件测试 V 模型
  • 十、软件测试 W 模型

一、开发模型的由来

随着软件工程学科的发展,人们对计算机软件的认识逐渐深入。软件工作的范围不仅仅局限在程序编写,而是扩展到整个软件生命周期,如软件基本概念的形成、需求分析、设计、实现、测试、安装部署、运行维护,直到软件被更新和替换新的版本
软件工程还包括很多技术性的管理工作,如过程管理、产品管理、资源管理和质量管理,这些方面也渐渐的建立起标准和规范。


二、软件的生命周期

软件的生命周期是指从软件产品的设想开始到软件不再使用而结束的时间。
如果把软件看成是有生命的事物,那么软件的生命周期可以分为六个阶段,即 需求分析、计划、设计、编码、测试、运行维护


三、瀑布模型(Waterfall Model)

瀑布模型在软件工程中占有重要地位,是其它所有模型的基础框架
瀑布模型的每一阶段都只执行一次,因此是线性顺序进行的软件开发模式。

优点:

  • 强调开发的阶段性
  • 强调早期计划以及需求调查
  • 强调产品测试

缺点:

  • 依赖于早期进行的唯一一次需求调查,不能适应需求的变化
  • 由于单一的流程,开发中的经验教训不能反馈应用于产品本身
  • 风险往往到后期的测试阶段才能显露,因此失去及早纠正的机会

瀑布模型的一个最大缺陷在于,可以运行的产品很迟才能被看到。
这会给项目带来很大的风险,尤其是在集成的时候。因为如果需求引入的一个缺陷要到测试阶段甚至更后的阶段才能发现,通常会导致前面阶段的工作大面积返工,业界流行的说法是:“集成之日就是爆炸之日”。

尽管瀑布模型存在很大的缺陷,但是目前很多软件企业还是沿用了瀑布模型的线性思想,在这个基础上做出了自己的修改。例如在细化了各个阶段,在某些重点关注的阶段之间掺入了迭代的思想。

对于测试环节来说,测试阶段处于软件实现之后,这意味着必须在代码完成后有足够的时间预留给测试,否则将导致测试不充分,从而把缺陷直接遗留给用户。


四、螺线模型(Spiral Model)

一般在软件开发初期,需求还不是很明确的时候,采用渐进式的开发模式。螺旋模型就是渐进式开发模型的代表之一。

这对于那些规模庞大、复杂度高、风险大的项目尤其适合。这种迭代开发的模式给软件测试带来了新的要求,它不允许有一段独立的测试时间和阶段,测试必须跟着开发的迭代而迭代。因此,回归测试的重要性就不言而喻了。

原理:

其实就是在瀑布模型的基础上,每一步骤后面都加上风险分析。

优点:

  • 强调严格的全过程的风险把控。
  • 强调各个开发阶段的质量。
  • 提供机会,探讨项目是否正确的继续下去。

缺点:

  • 引入非常严格的风险识别、风险分析和风险控制,这对风险管理的技能水平提出了很高的要求。
  • 提高了人员、资金和时间的投入。

五、增量模型(Incremental Model)

增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实施之一。

例如:
用户有一个需求,功能包含 a、b、c。
增量模型就是,开发完 a,我就直接上线提供给用户去使用;开发完 c 我就直接上线提供给用户使用;开发完 b 我就直接上线提供给用户使用。


六、迭代模型(Rational UnifiedProcess)

迭代模型经常和增量模型混为一谈,其实两者是有区别的。

增量是逐块建造的概念,例如画一幅人物画,增量先画出人头部,再画身体,再画手脚…

而迭代模型是反复求精的概念,同样是画人物画,迭代是先画出整体轮廓,再勾勒出基本雏形,再细化、着色。

例如:
对于用户的需求,先开发一个基础版本(包含了 a、b、c),但是 a、b、c 的功能比较简陋。接下来我会继续在基础版本上对 a、b、c 功能进行迭代优化。


七、敏捷模型(Fig. Agile Model)

2001年,以Kent Beck、Alistair Cockbum、Ward Cunningham、Martin Fowler等人为首的“轻量”过程派聚集在犹他州的Snowbird,决定把“敏捷”(Agile)作为新的过程家族的名称。

在会议上,他们提出了《敏捷宣言》: 我们通过身体力行和帮助他人来揭示更好的软件开发方式。经由这项工怍,我们形成了如下价值观。

个体与交互重于过程和工具
可用的软件重于完备的文档
客户协作重于合同谈判
响应变化重于遵循计划
在每对比对中,后者并非全无价值,但我们更加看重前者

《敏捷宣言》提出:
轻流程,强调人与人之间面对面的高效沟通;
轻文档,重产出可用的软件;
与客户友好的交流;
用户提出需求再过两天,用户又需要替换一个功能。

从中我们可以知道敏捷模型的一个特点:轻流程,轻文档,重目标,重产出。

敏捷开发有很多种,其中 scrum 是比较流行的一种。


八、scrum

scrum 里面的三个角色和五个会议

scrum 由 product owner(产品经理)、scrum master(项目经理)、team(研发团队)组成。

  • 其中 product owner 负责整理 user story(用户故事),定义其商业价值,对其进行排序,制定发布计划,对产品负责。
  • scrum master 负责召开各种会议,协调项目,为研发团队服务。
  • 研发团队由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。

迭代开发

与瀑布不同,scrum 将产品的开发分解为若干个小 sprint(迭代),其周期从 1 周到 4 周不等,但不会超过 4 周。参与的团队成员一般是 5 到 9 人。每期迭代要完成的 user story 是固定的。每次迭代会产生一定的交付。

scrum 的基本流程

产品负责人负责整理用户需求 user story,形成需求代办列表 product backlog。

发布计划会议:product owner 负责讲解 user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的 story 列表,sprint backlog。

迭代计划会议:项目团队对每一个 story 进行任务分解,分解的标准是完成该 story 的所有任务,每个任务都有明确的负责人,并完成工时的初步估计。

每日例会:每天 scrum master 召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。目的为了及时了解项目角度,预知风险,规避风险。

演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队代表向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由 product owner 整理,形成新的 story。

回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,以此达到持续进步的效果。

整个流程示例图如下…

敏捷模型中的测试人员

在敏捷模型开发中,测试人员如何做好自己本身的任务呢?

挑战1:轻文档

挑战2:快速迭代

  1. 测试工作的核心内容是没有改变的,就是不断的找 Bug,只要调整好自己的心态,一切以敏捷的原则为主。
  2. 测试人员不能依赖文档,测试用例的作用减弱,更多的采用思维导图、探索性测试(强调自由度,设计和执行同步,根据测试结果不断调整测试计划)、自动化测试。
  3. 敏捷讲究合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一起研究 Bug 出现的原因。

九、软件测试 V 模型

V 模型最早在 20 世纪 80 年代后期由 Paul Rook 提出的,目的是改进软件开发的效率和效果,是瀑布模型的变种。

  • 明确标注了测试过程中存在不同类型的测试,并且清楚描述了这些测试阶段和开发过程期间各阶段的对应关系

  • V 模型指出,单元和集成测试检测程序的执行是否满足软件设计的要求;系统测试检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求

  • 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试


十、软件测试 W 模型

  • W 模型增加了软件各开发阶段中应该同步进行的验证和确认活动。W 模型由两个 V 字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。

  • W 模型的特点:测试的对象不仅仅是程序,需求和设计等同样要测试,测试与开发是同步进行的。

  • W 模型优点:有利于尽早发现问题。例如,需求分析完成后,测试人员就应该参加到对需求的验证和确认活动中,以尽早地找到缺陷所在。同时,对需求分析也有利于尽早了解项目难度和测试风险,尽早制定应对措施,显著减少总体测试时间,加快项目进度。

  • 局限性:需求设计编码等活动都是串行的,测试和开发活动保持一种线性的前后关系,导致要上一阶段结束,才能开展下一个阶段的工作。无法支持敏捷开发模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL Server 2014 数据库误删数据的恢复处理

一、序言 作为程序开发人员或 DBA,经常会接触到数据库(以 SQL Server 2014 数据库为例)的增、删、改查操作。执行 delete 语句时不小心误删数据表的记录情况,而数据库之前又没有任何备份。 SQL Server 数据库自身的数据库还原数…

使用蚁群优化 (ACO) 解决背包问题(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 背包问题(Knapsack problem)是一种组合优化的NP完全(NP-Complete,NPC&#xff0…

【My Electronic Notes系列——组合逻辑电路】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

【页面设计】03.JavaScript

一、什么是JavaScript? 一种编程语言,可以在网页上实现复杂的功能、交互等。是一种解释型语言,也是一种面向对象的语言。 ps:解释型语言,是在运行的时候将程序翻译成机器语言。解释型语言的程序不需要在运行前编译&a…

怎么找回删除的文件?尝试下这些恢复数据的方法

我们使用电脑时,总会产生各种各样的文件数据。这些文件保存在电脑里面,但是有时不免手滑误删重要的文件。这些文件被删除、被清空了,还可以恢复回来吗?怎么找回删除的文件?建议你尝试下这些恢复数据的方法。 一、文件恢…

一篇了解Eureka

文章目录一.Eureka注册中心1.1.Eureka简介1.2.Eureka基本架构1.2.1 EurekaServer(注册中心)1.2.2 EurekaClient(客户端)二.Eureka项目的构建2.1 新建一个工程EurekaServer-70012.2.将user-service注册到Eureka2.3 消费者从Eureka获取服务2.4.注册微服务信息完善三、CAP理论3.1.…

ITK多线程加速filter

文章目录1. ITK多线程简介1.1 平台多线程1.1.1 基本内容1.1.2 Intel的TBB1.2 典型例子(执行原理)1.3 5.X版本之后的变动1.4 ITK多线程整体认识1.4.1 基本内容1.4.2 过滤器级别的多线程(Filter Level Multithreading)1.4.3 内存管理…

Shader绘制2D圆-学习Cherno教程笔记-(OpenGL/Vulkan/DirectX/Metal)-新手向

文章目录相关网址前言基本实现画一个圆步骤1.初步-根据长度绘画圆2.初步-根据1-length(uv)绘画圆3.正式-绘画白色形状的圆(1)if逻辑代码实现(2)用shader的step函数完善圆-实现绘画手环圆1.if逻辑代码实现2.用step函数代替if用smoothstep代替step函数1.smoothstep函数2.使用smoo…

ESP-IDF:使用STL stack栈做检查括号是否匹配测试

ESP-IDF:使用STL stack栈做检查括号是否匹配测试 /使用栈检查括号是否匹配测试/ #include typedef struct LINKNODE20 { struct LINKNODE20 * next; }linknode20; typedef struct MYCHAR20 { linknode20 node; char * address; int index; }MyChar20; MyChar20 * createMyC…

【MFC】文档操作——范例(12)

使用MFC框架文档操作范例: 创建工程 创建工程,其中: 1、MFC单文档 2、自定义改应用程序数据文件扩展名: 3、 最后一步选择CListView(用报表显示数据) 重点问题:数据文件的读写功能 添加数据类…

电脑多个不同分辨率屏幕鼠标移动时出现偏移、错位情况的解决方法

本文介绍在使用不同尺寸、不同分辨率的两个或多个电脑屏幕时,鼠标在不同屏幕之间切换时,出现偏移、飘动、不规则运动等情况的解决方法。 对于使用两个或多个电脑屏幕的用户而言,鼠标在不同屏幕之间的切换有时候会出现偏移的问题。在同时使用多…

【My Electronic Notes系列——逻辑函数的化简】

目录 序言: 🏆🏆人生在世,成功并非易事,他需要破茧而出的决心,他需要永不放弃的信念,他需要水滴石穿的坚持,他需要自强不息的勇气,他需要无畏无惧的凛然。要想成功&…

MySQL入门篇-MySQL字符集小结

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL的字符集 前言: 字符集和排序规则 说实话我对这两个概念比较模糊,其实可以简单的理解: 字符集(character set):定义了字符以及字符的编码。 排序规则(collation):定义了字符的比…

【Django】ORM增删改查、F对象和Q对象、聚合操作和原生数据库操作

1、ORM的增删改查均需要通过管理器对象进行。 2、可使用python3 manage.py shell 进入脚本页方便操作。 3、可修改输出格式 一、ORM查询操作 1、查询方法 (1)all()方法 用法:MyModel.objects.all()作用:查询所有数据&#xff0c…

微信小程序——自定义组件(纯数据字段),组件的生命周期,组件所在页面的生命周期,插槽,父子组件之间的通信,事件绑定,属性绑定,behavior

一.纯数据字段1.什么是纯数据字段概念:纯数据字段指的是那些不用于界面渲染的data字段。应用场景:例如有些情况下,某些 data 中的字段既不会展示在界面上,也不会传递给其他组件,仅仅在当前组件内部使用。带有这种特性的…

《Keras深度学习:入门、实战与进阶》之回归问题实例:波士顿房价预测

本文摘自《Keras深度学习:入门、实战与进阶》。 本节将要预测20世纪70年代中期波士顿郊区房屋价格的中位数。这个数据是1978年统计收集的,数据集中的每一行数据都是对波士顿周边或城镇房价的描述,包含以下14个特征和506条数据。  CRIM&am…

verilog图像算法实现和仿真(代码与实践)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 这里的代码指的是verilog代码,而不是之前的python代码。因为verilog处理的是数据,所以之前我们也谈到过,如果需要用verilog处理图像数据,需要先用python把图像变成文本文件,等到…

菜鸟的进阶--手写一个微型Spring

前言想干嘛深入了解spring原理,特别是IOC容器是如何实现的?AOP是如何实现的?手写一个spring迷你版框架,实现容器和AOP机制。我为什么想这么做spring是整个java体系中最重要的框架,它整合第三方技术,将所有的…

交联剂134272-64-3,Maleimide-NH2 HCl,2-马来酰亚胺乙胺盐酸盐

【中文名称】N-(2-氨乙基)马来酰亚胺盐酸盐,2-马来酰亚胺乙胺盐酸盐【英文名称】 MAL-NH2 HCl,Maleimide-NH2 HCl,MAL NH2 HCl,Maleimide-amine HCl,MAL-amine HCl,N-(2-AMinoethyl)MaleiMide Hydrochlorid…

5年老测试员,面试被刷,别人说他不懂自动化测试.....

圈内认识的朋友最近跳槽了,之前在一家小公司干了5年测试,本来以为很容易跳一个高待遇的工作,结果却比想象的难,因为他不会自动化测试… 最近也看了很多人的简历,写的都是3年工作经验,但面试中&#xff0c…