【软件测试】3.开发模型

目录

1.常见的开发模型

1.1瀑布模型

1.2螺旋模型

1.3增量模型和迭代模型

1.4敏捷模型

1.4.1特点:

1.5Scrum模型(三个角色和五个重要会议)

1.5.1三个角色:

1.5.2Scrum工作流程(五个会议)

1.6测试模型

1.6.1V模型

1.6.2W模型(双V模型)


1.常见的开发模型

1.1瀑布模型

需求分析——计划——设计——编码——测试

瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。

特点:瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。

1.优点:

  • 强调开发的重要性。
  • 线性结构,每个阶段都只执行一次。
  • 是其他模型的基础框架。

2.缺点:

  • 测试后置   前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会。必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷直接暴露给用户(产品质量差)。
  • 周期太长,产品很迟才能被看到或者使用,可能会导致需求/功能过时。

 瀑布模型使用场景:需求固定的小项目。

1.2螺旋模型

特点:螺旋模型中各个阶段都引入了风险分析+原型

引入的目的:是为了减少各阶段遗留的风险问题,避免吧问题遗留到后面阶段

1.优点:

  • 强调严格的全过程风险管理。
  • 强调各开发阶段的质量。
  • 增加风险分析和模型。

2.缺点:

  • 项目中可能存在的风险性和风险管理人员的技能水平有直接联系。
  • 需求人员、资金、时间的增加和投入,可能会导致项目的成本太高。

适用场景:规模庞大、复杂度高、风险性大的项目。

1.3增量模型和迭代模型

增量模型和迭代模型配合使用。

使用场景:大型项目,需求不明确。

1.4敏捷模型

主要困难包括在项目开发期间处理来自客户的变更需求以及合并这些变更所需的高成本和时间。为了克服这些模型的缺点,在1990年代中期提出来了敏捷软件开发模型。

敏捷模型主要旨在帮助项目快速适应变更请求。

在敏捷模型中,需求被分解成许多可以增量开发的小部分。

敏捷模型非常重要的内容:

  • 个体与交互重于过程和工具。(强调高效的沟通)
  • 可用的软件重于完备的文档。(强调轻文档,文档不应该作为工作验收的标准)
  • 客户协作重于合同谈判。(及时了解当下需求)
  • 响应变化重于遵循计划。(能够主动迎接变化)
1.4.1特点:

轻文档、轻流程、重目标、重产出

1.5Scrum模型(三个角色和五个重要会议)
1.5.1三个角色:

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

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

迭代开发:

每次迭代会产生一定的交付。

1.5.2Scrum工作流程(五个会议)
  • 产品负责人负责整理user story ,形成左侧的product backlog。
  • 发布计划会议:product owner负责讲解user story,对其进行估算和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表,sprint backlog。
  • 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初统计。
  • 每日例会:每天Scrum master召开站立会议,团队成员回答昨天做了什么,今天计划做什么,有什么问题。
  • 延时会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,形成新的story。
  • 回顾会议:项目团队对本次迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。(回顾上一次迭代过程中的问题,不断优化)

敏捷中的测试:

轻文档和快速迭代:

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

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

1.6.1V模型

优点:

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

2.V模型指出:

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

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

1.6.2W模型(双V模型)

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

优点:

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

缺点:

  • 需求、设计、编码等活动被视为串行的。
  • 测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可以正式开始下一个阶段工作。
  • 重流程,无法支持敏捷开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。

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

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

相关文章

移动应用开发实验四AlarmManager实现闹钟提醒

实验目的和要求 在Android Studio中,通过AlarmManager实现闹钟提醒。 点击“SET ALARM”后,采用Toast方式提示用于设定的闹钟成功,并包含设定的闹钟启用时间。 当闹钟生效时,采用AlertDialog实现闹钟题型,并通过Ale…

2023盘古石杯晋级赛 apk分析 WP

1. 涉案应用刷刷樂的签名序列号是[答案:123ca12a] 2. 涉案应用刷刷樂是否包含读取短信权限 无 3. 涉案应用刷刷樂打包封装的调证ID值是[答案:123ca12a] 4. 涉案应用刷刷樂服务器地址域名是[答案:axa.baidun.com] 代理模式抓个包 5. 涉案应用…

UE4 3D文字自动换行

效果:3D文字超过5位自动换行 1.随意输入一段字符串测试,创建string临时变量,用于迭代存储字符串 2.当字符串遍历至第“换行长度”(我这里是5)位时,附加一次空行

设计模式——中介者模式(Mediator)

中介者模式(Mediator Pattern)是一种行为型设计模式,其主要作用是通过一个中介对象来封装一系列对象的交互,从而降低它们之间的耦合度,提高系统的可维护性和可扩展性。 中介者模式的主要特点 封装交互:用…

windows gradle配置

安装 gradle下载地址: 官网:https://gradle.org/releases/ 所有版本:https://services.gradle.org/distributions/ 将下载后的zip文件解压 配置环境变量 在系统变量中新增以下变量 1、gradle的目录: GRADLE_HOME:D…

创新指南|将会话式AI聊天机器人纳入PLG增长战略

想象一个繁荣的数字城市广场,志同道合的人们在这里分享他们的激情、经验和知识。想象一个将房东与旅行者、顾客与司机、人们与他们喜爱的品牌无缝连接起来的平台。在这个世界里,用户交流促进增长,社区成为推动力。 如果您的应用程序天生不符…

P8802 [蓝桥杯 2022 国 B] 出差

P8802 [蓝桥杯 2022 国 B] 出差 分析 很明显:单源最短路径 没有负权边 dijkstra 1.存图 2.准备两个数组 dis[]:更新源点到各个点的距离 vis[]:标记是否访问 3.从源点开始,更新源点到与其邻接的点的距离,每次选…

鸿蒙OpenHarmony开发板解析:【特性配置规则】

特性 特性配置规则 下面介绍feature的声明、定义以及使用方法。 feature的声明 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 在部件的bundle.json文件中通过feature_list来声明部件的feature列…

spring的核心详解

Spring 核心详解 文章目录 Spring 核心详解前言什么是springspring的优点spring用到了哪些设计模式 什么是AOPAOP的实现方式静态代理动态代理 什么是IOCIOC的好处什么是依赖注入 前言 什么是spring Spring是一个开源的Java/Java EE全功能栈(full-stack&#xff09…

MQTT 5.0 报文解析 03:SUBSCRIBE 与 UNSUBSCRIBE

欢迎阅读 MQTT 5.0 报文系列 的第三篇文章。在上一篇中,我们介绍了 MQTT 5.0 的 PUBLISH 及其响应报文。现在,我们将介绍用于订阅和取消订阅的控制报文。 在 MQTT 中,SUBSCRIBE 报文用于发起订阅请求,SUBACK 报文用于返回订阅结果…

蓝桥杯备战4.双子数

P9420 [蓝桥杯 2023 国 B] 子 2023 / 双子数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 筛素数 void get_prime(int n) {for(int i1;i<n;i){if(!st[i])prime[cnt]i;for(int j0;prime[j]<n/i;j){st[prime[j]*i]true;if(i%prime[j]0)break;}} } 解题 #include<…

Java通过百度地图API获取定位-普通IP定位

项目中有一个登录邮箱提醒的功能&#xff0c;需要根据IP地址获取定位信息&#xff0c;从而更好地提示用户账号登录的所在地。为此&#xff0c;花费了一些时间来实现这个功能。 在CSDN搜索了一下&#xff0c;发现关于获取定位的文章说明都不够详细&#xff0c;于是决定自己创作一…

Markdown和Latex中文字上下标的方法

技术背景 在Markdown和Latex中&#xff0c;如果只是写公式&#xff0c;不论是行内公式还是行间公式&#xff0c;都可以直接使用^和_这两个符号实现上下标。但有个问题是&#xff0c;如果只是使用公式来做上下标&#xff0c;出来的字体是斜着的。例如这样的语法&#xff1a; $$ …

为什么要学Python?学Python有什么用?

为什么要学Python&#xff1f;学Python有什么用&#xff1f; 在当今的数字化时代&#xff0c;编程已成为一项宝贵的技能。Python&#xff0c;作为一种流行的编程语言&#xff0c;因其易于学习和强大的功能而受到全球开发者的青睐。本文将探讨学习Python的原因和它的实际应用&am…

【操作系统期末速成】​操作系统概述(定义|功能|特征)|发展阶段和分类|结构设计|概念补充

&#x1f3a5; 个人主页&#xff1a;深鱼~&#x1f525;收录专栏&#xff1a;操作系统&#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到…

Nginx部署前后端分离项目

部署前后端分离项目&#xff0c;要求前端项目、后端项目、数据库分别部署在3台服务器 服务器准备 服务器名IP软件包前端192.168.99.137nginx后端192.168.99.139jar数据库192.168.99.100mariadb 1、前端服务器 yum install -y epel-release && yum install -y nginx…

202012青少年软件编程(Python)等级考试试卷(二级)

第 1 题 【单选题】 执行以下代码中,输出的结果是?( ) sum=0for i in range(1,10,3):sum=sum+iprint(sum,i)A :22 10 B :12 7 C :45 9 D :55 10 正确答案:B 试题解析: 第 2 题 【单选题】 下列代码的执行结果是?( ) s1="abcde"s2="fgh"s3=…

golang编程规范

文章目录 1&#xff1a;使用适当的缩进2&#xff1a;规范地导入包3&#xff1a;使用描述性变量和函数名称4&#xff1a;限制行长5&#xff1a;使用常量来代替魔术值6&#xff1a;错误处理7&#xff1a;避免使用全局变量8&#xff1a;使用结构体处理复杂数据9&#xff1a;给代码…

官宣:vAsterNOS正式发布!开放网络操作系统免费试用!

近期&#xff0c;vAsterNOS&#xff08;设备模拟器&#xff09;正式发布&#xff0c;可以满足用户快速了解 AsterNOS、体验实际操作、搭建模拟网络的需求&#xff0c;可运行在GNS3、EVE-NG等网络虚拟软件中。 AsterNOS 网络操作系统是星融元为人工智能、机器学习、高性能计算、…

算法 第56天 动态规划16

583 两个字符串的删除操作 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 def minDistance(word1,word2):dp[[0]*(len(word2)1) for _ in range(len(word1)1)]for i in range(len(word…