【测试】开发模型

news2024/11/18 12:16:42

什么是模型 

规范的流程是在时代的演变下逐渐成型,并不是一开始就是规范的流程。

你以为的模型

实际的模型

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

软件的生命周期

  • 软件生命周期实际就是软件的开发模型

以人的生命周期举例:

生命开始——>幼儿——>儿童——>青少年——>青年——>中年——>中老年——>老年——>生命结束

而软件/产品的生命周期也是如此,需求的开始是软件生命的起点,中间会经历需求的计划,设计,程序开发,程序测试等阶段,直至软件不再进行维护便到了生命的重点。

如果想要建造一座房子,房子的生命周期是什么样的?

步骤总结映射软件流程
为什么要建房⼦?商品房还是普通住宅?建造100层技术上是否可⾏?
明确合理的建房⽬标
需求分析
什么时候开发建房⼦?计划竣⼯时间?多久可以交房?
计划好时间计划
建房前明确流程:先打地基,做基础框架,砌墙、粉刷、⽔电⼯程......
设计好具体的建房流程设计
按照前⾯的流程和时间实施建房中....
施⼯中
编码
房屋建造完成,开发商验收成果、买家验收房⼦品质(房⼦是否牢固,是否漏⽔及其他偷⼯减料的地⽅,是否按照规定来建造的)
检查房屋建造结果测试
检查结束开始逐步⼊住,使⽤中出现了各种情况如房屋漏⽔、墙⾯掉⽪、下⽔道堵塞等问题,⼀边使⽤⼀边找物业修理
使用并及时维护运行维护

那么对于软件的生命周期,每个阶段都在干什么呢?

阶段具体内容产出
需求分析
分析⽤⼾需求是否合理,分别从市场需求、技术等⽅⾯进⾏分析。
该阶段会输出需求等⽂档。
计划
对成⽴的需求执⾏需求执⾏计划,多⻓时间内完成该需求,每段时间具体完成哪些功能。
该阶段会输出计划等⽂档。
设计
将需求细化成⼀个个任务,团队成员各司其职领取任务并进⾏技术设计(如何进⾏架构设计,设计哪些接⼝、采⽤什么技术)
该阶段会输出技术等⽂档。
编码
开发⼈员参考需求⽂档、设计⽂档、交互图等等⽂件进⾏代码的编写。
代码⽂件等⽂档。
测试
测试⼈员需要介⼊到软件的测试中来,参考测试⽤例对软件进⾏测试。
测试⽤例、测试设计与计
划、测试报告等⽂档
运行维护
项⽬测试结束之后,项⽬需要进⾏上线,并对产品进⾏线上的维护。线上的维护主要分为三个⽅⾯。分别为修复性维护、完善性维护和预防性维护。
  • 修复性维护:对项⽬中未发现的问题进⾏修复。
  • 完善性维护:对功能进⾏完善。
  • 预防性维护:居安思危,为了避免产品在线上出现⼀些其他不可预料的问题,进⾏⼀些防护的⼿段。

这是软件的通用流程(基础流程) 

一个团队分为: 

  • 产品经理:定需求,明确需求是否正常执行中。 
  • 项目经理:为整个项目负责,人员调配等工作
  • 交互:设计交互图
  • 前端:设计前端内容
  • 后端:设计后端内容
  • 测试:测试用例、测试计划(测试类型、工具等)

常见开发模型

开发模型也成为软件开发流程(软件的生命周期)

瀑布模型 

瀑布模型同软件的生命周期基础流程一致。

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

        瀑布模型的⼀个最⼤缺陷在于,可以运⾏的产品很迟才能被看到。这会给项⽬带来很⼤的⻛险,尤其是集成的⻛险。因为如果在需求引⼊的⼀个缺陷要到测试阶段甚⾄更后的阶段才发现,通常会导致前⾯阶段的⼯作⼤⾯积返⼯,业界流⾏的说法是:“集成之⽇就是爆炸之⽇”。尽管瀑布模型存在很⼤的缺陷,例如,在前期阶段未发现的错误会传递并扩散到后⾯的阶段,⽽在后⾯阶段发现这些错误时,可能已经很难回头再修正,从⽽导致项⽬的失败。但是⽬前很多软件企业还是沿⽤了瀑布模型的线性思想,在这个基础上做出⾃⼰的修改。例如细化了各个阶段,在某些重点关注的阶段之间掺⼊迭代的思想。在瀑布模型中,测试阶段处于软件实现后,这意味着必须在代码完成后有⾜够的时间预留给测试活动,否则将导致测试不充分,从⽽把缺陷直接遗留给⽤⼾。

优点/特点
  • 强调开发的阶段性;
  • 线性结构,每个阶段只执⾏⼀次
  • 是其他模型的基础框架
缺点
  • 测试后置
  1. 前⾯各阶段遗留的⻛险推迟到测试阶段才被发现,导致项⽬⼤⾯积返⼯,失去了及早修复的机会
  2. 必须留有⾜够的时间给测试活动,否则导致测试不充分,将缺陷直接暴露给⽤⼾(产品质量差)
  • 周期太⻓,产品很迟才能被看到和使⽤,可能会导致需求/功能过时
  • 瀑布模型的适用场景:需求固定的小项目

螺旋模型

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

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

螺旋模型中各个阶段都引入了风险分析与原型。

引入风险分析和原型的目的是减少各阶段遗留的风险问题,避免把问题留到后面的阶段

在螺旋模型中需要额外招聘专业的风险分析人才。

各阶段是否遗留问题完全取决于风险分析人员,这跟风险分析人员的技术能力直接挂钩。

优点
  • 强调严格的全过程⻛险管理。
  • 强调各开发阶段的质量。
  • 增加⻛险分析和原型
缺点
  • 项目中可能存在的风险性与风险管理人员的技能水平有直接关系
  • 需求⼈员、资金、时间的增加和投入,可能会导致项目的成本太高
适应场景:规模庞大、复杂度高、风险大的项目。

增量模型、迭代模型

  • 增量模型将一个大的需求修改成多个小功能,每个功能独立开发上线。
  • 迭代模型会上线一个基础版本,但是基础版本所有的功能都有,只不过比较简陋,后期再继续迭代上线。 

        增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件⼯程最佳实践之⼀。增量开发模型,⿎励用户反馈,在每个迭代过程中,促使开发小组以⼀种循环的、可预测的⽅式驱动产品 的开发。因此,在这种开发模式下,每⼀次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试⼈员需要与开发⼈员更加紧密地协作。
        与此类似的有⼀个迭代开发,增量开发和迭代开发往往容易被人,但是其实两者是有区别的。增量是逐块建造的概念,迭代是反复求精的概念。

迭代模型和增量模型在现在已经不会单独去使用,而是配合着使用。

适应场景:大型项目,需求不明确。

敏捷模型

        在早期,迭代瀑布模型非常流行来完成⼀个项目。但是现在开发人员在使用它开发软件时面临着各种各样的问题。主要困难包括在项目开发期间处理来自客户的变更请求以及合并这些变更所需的高成本和时间。为了克服瀑布模型的这些缺点,在1990年代中期提出了敏捷软件开发模型。

实际在工作中,一款产品的功能是不断在变化的。

一款游戏的版本迭代,浏览器的版本迭代等

        敏捷模型主要旨在帮助项⽬快速适应变更请求。因此,敏捷模型的主要⽬的是促进项⽬的快速完成。要完成这项任务,需要敏捷。敏捷性是通过使过程适应项⽬,删除对特定项⽬可能不是必需的活动来实现的。此外,避免任何浪费时间和精⼒的事情。

敏捷模型中有⼀个⾮常重要的《敏捷宣⾔》,宣⾔内容:
  • 个体与交互重于过程和工具(强调高效的沟通
  • 可用的软件重于完备的文档(强调新文档,文档不应该作为工作验收的标准
  • 客户协作重于合同谈判(主动及时了解当下的需求
  • 响应变化重于遵循计划(能够主动迎接变化

总结敏捷模型的四个特点:轻文档、轻流程、重目标、重产出。

  • 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召集站⽴会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。

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

  • 回顾会议:项⽬团队对本期迭代进⾏总结,发现不⾜,制定改进计划,下⼀次迭代继续改进,以达到持续改进的效果

【注意】名称不重要,重要的是知道有哪些阶段。

敏捷中的测试

轻⽂档和快速迭代
  • 敏捷模型中强调轻⽂档,所以测试⼈员不应使⽤传统的Excel编写测试用例的方法,更多的是使用思维导图、探索性测试(强调⾃由度,设计和执行同时进行,根据测试结果不断调整测试计划)、自动化测试等
  • 敏捷讲求合作,在敏捷项目组中,测试⼈员应多主动跟开发人员了解需求、讨论设计、⼀起研究bug出现的原因。

测试模型

测试模型中有俩个非常重要且具有标志性的测试模型:V模型和W模型

V模型

V模型明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系,有效提升测试的质量和效率。

V模型指出:

  • 单元和集成测试应检测程序的执⾏是否满⾜软件设计的要求;

  • 系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;

  • 验收测试确定软件的实现是否满⾜⽤⼾需要或合同的要求

缺点:仅仅把测试作为在编码之后的⼀个阶段,未在需求阶段就介⼊测试。缺点同瀑布模型。

W模型(双V模型)

开发V模型并不是单单编码阶段,而是为产品开发流程而实施的各个阶段

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

特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进⾏的

优点:

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

缺点:

  • 需求、设计、编码等活动被视为串⾏的;

  • 测试和开发活动也保持着⼀种线性的前后关系,上⼀阶段完全结束,才可正式开始下⼀个阶段⼯作。

  • 重流程,⽆法⽀持敏捷开发模式(轻文档轻流程)。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理⾯临着困惑。

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

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

相关文章

5分钟快速制作高质量、美观的Excel甘特图

你是否还在为如何制作甘特图而感到苦恼? 是否因为甘特图制作过程繁琐、耗时过长而影响了你的工作效率? 是否每当任务计划发生变更时,都需要反复重新绘制甘特图,让你感到疲惫不堪? 又或者,你是否一直渴望…

戴尔笔记本怎么重装系统_戴尔笔记本重装系统win10教程(支持新旧机型安装)

戴尔笔记本怎么重装系统?戴尔笔记本这几年默认预装win10家庭版和win11家庭版。有的用户用上了预装win11家庭版的戴尔笔记本,使用一段时间依然不习惯,于是想退回win10。但不知道怎么重装win10,这几年的戴尔笔记本建议采用U盘方式安…

【GUI设计】基于Matlab的图像处理GUI系统(2),matlab实现

博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于Matlab的图像处理GUI系统(2),用matlab实现。…

工装检测摄像机

工装检测摄像机是一种结合了监控摄像技术和智能分析技术的先进设备,旨在通过实时监测和分析员工穿着的工作服装是否符合规定标准,识别是否存在违规穿着情况,并及时发出警报提醒相关人员。这种摄像机在生产制造、工业安全、医疗卫生等领域有着…

[240926] Pixtral 12B: 开源多模态模型,兼顾推理与文本能力 | OpenAPI 入门指南

目录 Pixtral 12B: 开源多模态模型,兼顾推理与文本能力性能评估方案指令遵循 架构 OpenAPI 入门指南一、什么是 OpenAPI?二、OpenAPI 的概念三、OpenAPI 的结构四、OpenAPI 的格式五、OpenAPI 的优势 Pixtral 12B: 开源多模态模型,兼顾推理与…

环形链表-注意起始双指针的位置

题目描述: 个人题解: 快慢指针法,注意起始双指针的位置,一个在head位置,一个在head->next的位置,慢指针每次只移动一步,而快指针每次移动两步。初始时,慢指针在位置 head&#xf…

微信小程序-使用vant组件库

文章目录 微信小程序-使用vant组件库概述构建npm构建步骤使用vant注册使用添加事件使用插槽 样式覆盖解除样式隔离使用外部样式类使用CSS变量 微信小程序-使用vant组件库 概述 Vant Weapp 是有赞前端团队开源的小程序 UI 组件库,基于微信小程序的自定义组件开发&a…

ESP8266 make flash ESPBAUD=921600加快eclipse烧录速度

要点: 1)Default baud rate (115200 baud) 既是烧录速度 2)UART0、UART1的波特率都同make monitor的74880 3)make flash时设置波特率,即实际使用的波特率 1. 波特率,默认115200,需27.8s Writi…

前端框架对比、分析与选择

在现代Web开发中,选择合适的前端框架对于项目的成功至关重要。本文将详细对比分析Vue.js、Angular、React和Layui这四种前端框架,帮助开发者做出明智的选择。 一、概述 1. Vue.js Vue.js是由尤雨溪创建的一个渐进式JavaScript框架,旨在通过简…

在精益生产现场管理和改善中,如何制定合理的奖励制度?

在精益生产的广阔实践领域中,现场管理与改善是推动企业持续进步、提升竞争力的关键环节。而制定合理的奖励制度,则是激发员工积极性、促进团队协作、加速改善进程的重要驱动力。本文,深圳天行健企业管理咨询公司将深入探讨在精益生产现场管理…

XSS | XSS 漏洞介绍

关注这个漏洞的其他相关笔记:XSS 漏洞 - 学习手册-CSDN博客 0x01:XSS 漏洞简介 跨站脚本(Cross-Site Scripting,简称为 XSS)攻击,是一种针对网站应用程序的安全漏洞进行攻击的技术,是代码注入的…

【在Linux世界中追寻伟大的One Piece】IP分片和组装的具体过程

目录 1 -> IP分片和组装的具体过程 2 -> 分片与组装的过程 2.1 -> 分片 2.2 -> 组装 3 -> 分片与组装的示意图 3.1 -> 分片组装场景 1 -> IP分片和组装的具体过程 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片…

linux入门到实操-11 Linux用户权限管理:添加和查看用户、获取root权限和删除用户、用户组管理

教程来源:B站视频BV1WY4y1H7d3 3天搞定Linux,1天搞定Shell,清华学神带你通关_哔哩哔哩_bilibili 整理汇总的课程内容笔记和课程资料(包含课程同版本linux系统文件等内容),供大家学习交流下载:…

Verba - Weaviate RAG 私人助理

文章目录 一、关于 Verba什么是Verba?功能列表 二、Verba入门安装部署 三、API密钥1、Weaviate2、Ollama3、UNSTRUCTURED4、AssemblyAI5、OpenAI6、HuggingFace 四、如何使用pip进行部署五、如何从源代码构建六、如何使用Docker安装VerbaVerba Walkthrough选择您的部…

进来看看吧,产品经理做APP从头到尾的所有工作流程详解!

一、项目启动前 从事产品的工作一年多,但自己一直苦于这样或者那样的困惑,很多人想要从事产品,或者老板自己创业要亲自承担产品一职,但他们对产品这个岗位的认识却不明晰,有的以为是纯粹的画原型,有的是以…

BACnet MS/TP协议解析(3)

1、MS/TP帧格式 例如数据(hex):55 FF 01 03 02 00 00 D7 0x550xff0x010x030x020x000x000xD7BACnet数据BACnet数据CRC帧头帧类型目的地址源地址BACnet数据长度,大端CRC 2、帧类型 帧类型目前定义为 0-7,8-127 为 AS…

vue3 vite模式配置测试,开发、生产环境以及代理配置

1、首先在根目录下创建三个文本文件:.env.development,.env.production,.env.test .env.development中的内容为: // 开发环境 .env.development NODE_ENV development VITE_APP_MODE development VITE_OUTPUTDIR dist_dev /…

基于Java的宠物之家小程序 宠物服务小程序【源码+调试】

精彩专栏推荐订阅:在下方主页👇🏻👇🏻👇🏻👇🏻 💖🔥作者主页:计算机毕设木哥🔥 💖 文章目录 一、宠物之家小程…

FPGA第 11 篇,Verilog 系统函数( Verilog 中的系统函数)

前言 Verilog 作为一种强大的硬件描述语言,不仅提供了用于设计和仿真数字电路的基础语法,还包含了丰富的系统函数,帮助我们高效地完成复杂的硬件操作。系统函数是 Verilog 语言中预定义的特殊函数,通常以 $ 开头,它们…

【深度学习】(7)--神经网络之保存最优模型

文章目录 保存最优模型一、两种保存方法1. 保存模型参数2. 保存完整模型 二、迭代模型 总结 保存最优模型 我们在迭代模型训练时,随着次数初始的增多,模型的准确率会逐渐的上升,但是同时也随着迭代次数越来越多,由于模型会开始学…