【软件测试】基础知识第二篇

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

一. 开发模型

1. 瀑布模型

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


f2a0f532b6c1407bb4a7027e188f2a4e.png


适用场景:需求固定的小项目


缺点:测试被后置


需要留足够的时间来测试,否则测试不充分,导致缺陷遗留给用户。

风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。

2. 螺旋模型

螺旋模型是在瀑布模型的基础之上引入全流程的风险分析,每次分析完成之后都会生成一个新的原型


4ee5ea57320741b6b2199fdf21f19b32.png

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


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


3. 增量和迭代模型

3.1 增量模型

增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言,采用增量模型进行开发,开发人员不需要一次性地把整个软件产品提交给用户,而是可以分批次进行提交。


725e747d0486470990ac7ef690e816cc.png


3.2 迭代模型

迭代模型(stagewise model)(也被称作迭代增量式开发或迭代进化式开发),是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。


在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。


教学中,对迭代和版本的区别,可理解如下: 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。


与传统的瀑布模型相比较,迭代过程具有以下优点:


降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。因此复用性更高

3.3 增量和迭代模型的区别

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


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


举个实例:

ea4f11638f7a4a4b80cfed3e807df8b9.png


4. 敏捷模型

敏捷软件开发 (Agile development)是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。


敏捷开发小组主要的工作方式可以归纳为:作为一个整体工作; 按短迭代周期工作; 每次迭代交付一些成果,关注业务优先级,检查与调整。敏捷软件开发要注意项目规模,规模增长,团队交流成本就上去了,因此敏捷软件开发暂时适合不是特别大的团队开发,比较适合一个组的团队使用。


敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。 敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。


适应性的方法集中在快速适应现实的变化。当项目的需求起了变化,团队应该迅速适应。这个团队可能很难确切描述未来将会如何变化。


4.1 敏捷宣言

个体与交互重于过程和工具(轻流程,强调人与人之间高效地沟通)

可用的软件重于完备的文档(轻文档,重产出)

客户协作重于合同谈判

响应变化重于遵循计划

在每对比对中,后者并非全无价值,但我们更看重前者

敏捷宣言整体想表达敏捷模型的一个特点:轻流程、轻文档、重目标、重产出。


4.2 scrum模型

scrum模型介绍


scrum的规模是比较小的,通常都是小团队10人内的

很多公司可能实行的是scrum的变种(在流程、人员上稍作改变)

敏捷的英文叫Agile,scrum只是其中一种小团队的(一般10人以下),更大规模的叫SAFe(上百上千)

敏捷,常常会跟软件开发的瀑布模型(waterfall)来进行比较

waterfall是老式的开发周期比较长的

敏捷一般是小量迭代的,适应快速的市场变化的

人员


Product Owner(PO):一般翻译为产品经理,直译是"产品所有人",对product backlog负责的人

Scrum Master(SM):项目经理。管敏捷流程的人

Development Team:简称Team,由开发、测试等人员组成

需求池


backlog 待办事项,分为prodct backlog和sprint backlog

product backlog:待办事项

sprint backlog:某次sprint要做的待办事项,由product backlog挑选出来放入sprintt backlgo

sprint:某次迭代周期要做的事情,如sprint 1 / sprint 2 …(一次sprint安排的量通常是 1-3周完成),一般命名比如 sprint 1 加数字

会议


sprint planning:在这个会议中讨论并从product backlog挑出下次sprint要做的事情,输出有sprint goal和sprint backlog

daily scrum:指的是每天的会,也有叫daily meeting/daily standup/standup meeting,总之是每日站会,会上每个人一般会说明昨天做了什么、今天做什么、遇到什么困难,有时明天计划做什么也会说,其实就是每日交流会。一般还会提到白板这个概念

白板:一般指实体的白色黑板,上面贴上类型to do/doing/…等不同时期的便利贴以便跟进进度情况

sprint review:这个容易误以为是回顾会、复盘会,其实是对交付内容(即产品增量)进行review,即审查结果 (针对产品)

sprint retrospective:回顾会,会上讨论做得好的做得不好的,是一个总结类似复盘的会议。(针对人)

其它名词


increment:是一次sprint完成后的产出,即 “产品增量”,是产品增加了什么、修改了什么

user story:用户故事,一般是用 “作为…我需要…以便…” 描述用户的需求的,由产品经理负责收集

story:可以理解为描述要做什么的,story可拆分为更加细的任务(task)

流程

sprint backlog中挑出若干,在sprint planning中进行分析和拆分,会议输出sprint goal(目标)和sprint backlog(这次sprint要做的事情),进行迭代开发,每天有daily scrum(daily meeting),此次sprint完成后输出increment,对increment对行review的是spint review的过程,同时有sprint retrospective会议去总结团队成员做得好的做得不足的。


整个流程是Scrum Master去组织和把控的,所以SM会被翻译为 “流程管理员” 或者项目经理。


二. 开发模型

V 模型2511a2cbe4ea4f3b93bb8d9bb3b7f6ca.png



优点:


明确标注了测试的类型

明确标注了测试阶段和开发阶段之间的对应关系

缺点:测试后置


W 模型

219d2e2d7d6241fbb714a394cb7224b2.png


优点:测试从需求阶段就开始介入了


缺点:


上一个阶段完成,下一个阶段才能开始

开发和测试流程保持着一种前后的线性关系.

重文档、重过程,不支持敏捷模式


相关文章
|
2月前
|
Java 关系型数据库 数据库
Java 项目实战教程从基础到进阶实战案例分析详解
本文介绍了多个Java项目实战案例,涵盖企业级管理系统、电商平台、在线书店及新手小项目,结合Spring Boot、Spring Cloud、MyBatis等主流技术,通过实际应用场景帮助开发者掌握Java项目开发的核心技能,适合从基础到进阶的学习与实践。
267 3
|
2月前
|
运维 NoSQL Serverless
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
在轻休闲游戏流量波动大、生命周期短的背景下,传统架构难以应对成本与扩展挑战。本文介绍了基于阿里云函数计算 FC 和 Redis 构建的新一代服务器架构,实现弹性伸缩、成本优化与高效运维,助力轻休闲游戏快速迭代与稳定运营,提升开发效率并降低运维复杂度。
《第四纪元》玩得轻松,构建也轻松 | 阿里云云原生 API 网关、函数计算助力 IGame 快速构建轻休闲游戏
|
3月前
|
存储 数据采集 NoSQL
什么是数据仓库?数据库与数据仓库有什么关系?
数据仓库与数据库有何区别?数据仓库主要用于存储历史数据,支持企业分析决策;而数据库则负责管理实时业务数据,保障日常运作。两者在数据来源、处理方式、存储结构等方面差异显著,但又相辅相成,共同助力企业高效管理数据、提升运营与决策能力。
|
4月前
|
敏捷开发 设计模式 测试技术
软考软件评测师——软件工程之开发模型与方法
本内容主要介绍了软件开发过程中的核心概念及主流模型,包括瀑布模型、原型模型、增量模型、螺旋模型和敏捷开发等。每种模型各有优劣,适用于不同场景:瀑布模型适合需求明确的大型项目;螺旋模型适用于高风险复杂系统;增量模型支持模块化开发;原型模型适合需求模糊的小型项目;敏捷方法则强调灵活响应与持续交付。此外,还通过历年真题解析,深入探讨了各模型的应用场景及其特点,为实际开发提供了理论指导与实践经验。选择合适的开发模型需综合考虑需求明确度、项目规模、团队经验等因素。
|
9月前
|
敏捷开发 监控 数据可视化
敏捷开发的6大方法与模型,帮助你快速适应项目需求变化
3分钟了解6种常见的敏捷开发方法,包括Scrum,看板Kanban,极限编程(XP),DSDM、特征驱动开发和水晶法等方法。
996 5
敏捷开发的6大方法与模型,帮助你快速适应项目需求变化
|
算法 数据挖掘 调度
【调度算法】NSGA III(1)
【调度算法】NSGA III
1385 0
|
存储 DataWorks 数据处理
dataworks里面的stg层、ods层、dwd层、dws层、是怎么分层的呢?
【8月更文挑战第21天】dataworks里面的stg层、ods层、dwd层、dws层、是怎么分层的呢?
1260 7
|
JavaScript API UED
Vue3使用触摸滑动插件(Swiper)
本文介绍如何在Vue2项目中使用Swiper插件实现触摸滑动功能,并封装了两种轮播图展示形式:首页轮播图(`type: banner`)和走马灯轮播图(`type: carousel`),以及信息展播模式(`type: broadcast`)。支持自定义轮播图片、区域尺寸、动画效果等属性。通过示例代码展示了不同切换动画及自定义效果,并提供了在线预览。适用于多种应用场景,提升用户体验。
703 1
Vue3使用触摸滑动插件(Swiper)
|
Unix API
SOCK_DGRAM
SOCK_DGRAM
462 2
|
12月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
223 0