【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)
1. 什么是需求
在企业中,经常会听到:用户需求和软件需求
- 用户需求:没用经过合理的评估,通常就是一句话(开发一个五彩斑斓的黑)
- 软件需求:开发人员和测试人员执行工作的依据
1.2 软件需求
在工作中实际见到的软件需求的文档类似于下面的表示:

注意:用户的需求不能直接作为开发和测试的依据。针对用户的需求,产品经理需要进行需求分析(技术可行性、市场可行性、成本投入和收益占比等)后续才可转变为软件需求
2. 开发模型
规范的流程是在时代的演变下逐渐成型的,并不是一开始就是规范的流程。
软件的生命周期
什么是生命周期?
生命周期指的是从生命开始到生命结束的一段时间。以人为例,人类的生命周期是从生命孕育开始,中间会经历幼年、童年、少年、青年、老年,最终直至死亡
而软件/产品的生命周期也是如此,需求的开始是软件生命的起点,中间会经历需求的计划、设计、程序开发、程序设计等阶段,直至软件不再进行维护便到了生命的终点
| 步骤 | 总结 | 映射软件流程 |
|---|---|---|
| 为什么要建房子?商品房还是普通住宅?建造 100 层技术上是否可行? | 明确合理的建房目标 | 需求分析 |
| 什么时候开发建房子?计划竣工时间?多久可以交房? | 计划好时间 | 计划 |
| 建房前明确流程:先打地基,做基础框架,砌墙、粉刷、水电工程… | 设计好具体的建房流程 | 设计 |
| 按照前面的流程和时间实施建房中… | 施工中 | 编码 |
| 房屋建造完成,开发商验收成果、买家验收房子品质(房子是否牢固,是否漏水及其他偷工减料的地方,是否按照 规定来建造的) | 检查房屋建造结果 | 测试 |
| 检查结束开始逐步入住,使用中出现了各种情况如房屋漏水、墙面掉皮、下水道堵塞等问题,一边使用一边找物业 修理 | 使用并及时维护 | 运行维护 |
- 在设计阶段
- 开发:设计开发文档(用什么技术、用什么框架等待)
- 测试:明确需求,设计测试用例、测试计划(明确本次测试设计到的工具、设计到的测试类型等等)
因此,我们就得到了软件(开发)的生命周期:
需求分析——计划——设计——编码——测试——运行维护
对于软件的生命周期中,每个阶段都在做什么呢?
| 阶段 | 具体内容 | 产出 |
|---|---|---|
| 需求分析 | 分析用户需求是否合理,分别从市场需求、技术等方面进行分析。 | 该阶段会输出需求等文档。 |
| 计划 | 对成立的需求执行需求执行计划,多长时间内完成该需 求,每段时间具体完成哪些功能。 | 该阶段会输出计划等文档。 |
| 设计 | 将需求细化成⼀个个任务,团队成员各司其职领取任务 并进行技术设计(如何进行架构设计,设计哪些接口、 采用什么技术) | 该阶段会输出技术等文档。 |
| 编码 | 开发人员参考需求文档、设计文档、交互图等等文件进 行代码的编写。 | 代码文件等文档。 |
| 测试 | 测试人员需要介入到软件的测试中来,参考测试用例对 软件进行测试。 | 测试用例、测试设计与计 划、测试报告等文档 |
| 运行维护 | 项目测试结束之后,项目需要进行上线,并对产品进行 线上的维护。线上的维护主要分为三个方面。分别为修 复性维护、完善性维护和预防性维护。 |
- 维护分为:
- 修复性维护:对项目中未发现的问题进行修复
- 完善性维护:对功能进行完善
- 预防性维护:居安思危,为了避免产品在线上出现一些不可预料的问题,进行一些防护的手段。正常使用没问题,但在一些极端的情况下会出现问题(性能问题),淘宝双十一并发太大、微博热搜
- 产品经历:定需求,明确需求是否正常执行
- 为整个项目负责,人员调配等工作
- 交互:设计交互图
- 前端:设计前端内容(框架、技术、工具)
- 后端:设计后端内容(框架、技术、工具)
- 测试:测试用例、测试计划(测试类型、测试工具等)
常见开发模型
软件开发流程(软件生命周期)
瀑布模型
与软件的生命周期基础流程大差不差

特点:
- 每个流程只执行一次
- 线性的开发流程
瀑布模型最大的一个缺陷在于,可以运行的产品很迟才能被看到
- 意味着没有收益/收益非常低
| 优点/特点 | 缺点 |
|---|---|
| 强调开发的阶段性 | 测试后置,前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会 |
| 线性结构,每个阶段只执行一次 | 测试后置,必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷直接暴漏给用户(产品质量差) |
| 是其他模型的基础框架 | 周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时 |
- 瀑布模型的适用场景:需求固定的小项目
螺旋模型
当企业中存在趣多规模庞大、复杂度高、风险大的项目,这种情况下就适合用螺旋模型
- 螺旋模型中,各个阶段都引入了风险分析和模型

- 目的是减少各阶段遗留的风险问题,避免把问题留到后面的阶段
| 优点 | 缺点 |
|---|---|
| 强调严格的全过程风险管理 | 项目中可能存在的风险性与风险管理人员的技能水平有直接关系 |
| 强调各开发阶段的质量 | 需求人员、资金、时间的增加和投入,可能会导致项目的成本太高 |
| 增加风险分析和原型 |
增量模型、迭代模型
既然需求有大有小,小需求我们可以直接用瀑布模型开发出来,复杂的需求我们就将其分解为很多小的需求。而这些被分解出的小需求就称为——增量1、增量2、增量3…

- 将大需求拆分成小需求,每个小需求独立开发上线,这就是增量模型
有一个大需求,先上面基础版本,再上线优化版本1、优化版本2、优化版本3…
- 基础版本:看商品下单
- 优化版本1:购物车,丰富详情页信息
- 优化版本2:丰富下单的付款方式
- …
这就是迭代模型

- 增量是逐块建造的概念
- 迭代是反复求精的概念
- 适用于大型项目,需求不明确
迭代模型和增量模型现在已经不会单独去使用了,而是配合着去使用
相关文章:
【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)
1. 什么是需求 在企业中,经常会听到:用户需求和软件需求 用户需求:没用经过合理的评估,通常就是一句话(开发一个五彩斑斓的黑)软件需求:开发人员和测试人员执行工作的依据 1.2 软件需求 在工…...
Python爬虫如何处理验证码与登录
Python爬虫如何处理验证码与登录 Python 爬虫在抓取需要登录的网站数据时,通常会遇到两个主要问题:登录验证和验证码处理。这些机制是网站用来防止自动化程序过度抓取数据的主要手段。本文将详细讲解如何使用 Python 处理登录与验证码,以便进…...
QT添加资源文件
QT添加资源文件 1.概述 这篇文章介绍为QT项目添加资源文件,例如项目中使用到的图片、音视频文件等等 2.添加资源文件 拷贝资源文件到项目中 在项目mainwindow.app文件上右键选择show in Finder 打开项目所在目录。 将图片文件夹复制到该目录中 创建资源文件结…...
负载均衡式在线oj项目开发文档(个人项目)
项目目标 需要使用的技术栈: 这个项目共分成三个模块第一个模块为公共的模块,用于解决字符串处理,文件操作,网络连接等等的问题。 第二个模块是一个编译运行的模块,这个模块的主要功能就是将用户的代码收集上来之后要…...
Python小白学习教程从入门到入坑------第二十六课 单例模式(语法进阶)
在这个节课的开始,我们先回顾一下面向对象课程中学的构造函数__init__() 目录 一、__init__() 和 __new__() 1.1 __init__() 1.2 __new__() 二、单例模式 2.1 特点 2.2 通过classmethod实现单例模式 2.3 通过装饰器实现单例模式 2.3 通过重写__new__() 实现…...
革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!
文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT…...
windows C#-使用异常
在 C# 中,程序中的运行时错误通过使用一种称为“异常”的机制在程序中传播。 异常由遇到错误的代码引发,由能够更正错误的代码捕捉。 异常可由 .NET 运行时或由程序中的代码引发。 一旦引发了一个异常,此异常会在调用堆栈中传播,直…...
玩的花,云产品也能拼团了!!!
说起拼单大家都不陌生,电商一贯的营销手段,不过确实可以给消费者省下一笔钱。双11到了,腾讯云产品也玩起了拼团,这明显是对开发人员和各企业的福利。 对于有云产品需求的个人或企业,这次绝对是难得的一次薅羊毛机会。…...
HTML+CSS基础【快速上手】
目录 一、HTML展示 1、HTML基础结构 2、认识元素属性 (1)元素属性理解 (2)实例 3、自结束标签和注释 (1)自结束标签 (2)注释 4、语义化标签 (1)语义…...
mysql分布式锁
大家好,今天我们来看下如何使用本地MySql实现一把分布式锁,以及Mysql实现分布式锁的原理是怎么样的 MySql实现分布式锁有三种方式 1:基于行锁实现分布式锁 k1.png 实现原理 首先我们的表lock要提前存好相对应的lockName,这时候…...
探索四款强大的免费报表工具,提升数据可视化能力
概述 在当今数据驱动的时代,报表工具成为了企业分析和可视化数据的重要助手。通过这些工具,用户可以轻松地将原始数据转换为直观易懂的报表,帮助决策者更快地获取信息和做出判断。本文介绍了四款免费的报表工具,包括山海鲸报表、…...
电机可靠性影响因素研究
电机作为现代工业自动化和日常生活中不可或缺的核心设备,其可靠性直接关系到系统的整体性能和安全性。电机的可靠性不仅影响生产效率、降低维护成本,还有助于提高产品的质量和企业的市场竞争力。 一、电机可靠性的概念 电机可靠性是指电机在规定条件下和…...
GB/T 28046.4-2011 道路车辆 电气及电子设备的环境条件和试验 第4部分:气候负荷(6)
写在前面 本系列文章主要讲解道路车辆电气及电子设备的环境条件和试验GB/T 28046标准的相关知识,希望能帮助更多的同学认识和了解GB/T 28046标准。 若有相关问题,欢迎评论沟通,共同进步。(*^▽^*) 第4部分:气候负荷 5. 试验和要求 5.8 流动混合气体腐蚀试验 5.8.1 目的…...
后端接口返回二进制文件,前端 window.opent预览展示
详细步骤 1.修改 PreviewApi 函数: 设置 responseType 为 ‘arraybuffer’,以接收二进制数据。 export const PreviewApi (data) > request({method: post,url: /dev-api/preview,responseType: arraybuffer,data });3.处理响应: 使用…...
基于STM32的红外遥控接收器
1. 引言 红外遥控技术广泛应用于电视、空调等家用电器的控制。通过本项目,我们将学习如何使用STM32开发板搭建一个红外遥控接收器,能够接收来自遥控器的信号,并在串口终端上显示按键信息。 2. 环境准备2.1 硬件需求 - STM32开发板࿰…...
K8S网络插件故障处理
1网络插件故障 1此故障问题处理方法 查询ip是否正常是否是主节点IP地址如果不是需要更改 更改方式 1 修改calico.yaml文件的相应参数 # Cluster type to identify the deployment type - name: IP_AUTODETECTION_METHOD #增加内容value: "interfaceens*" 或者 value…...
优化前端开发中的提示语设计基本原则
文章目录 一致1、同一对象,指称一致2、同一状态,描述一致3、同一行为,提示一致 简洁1、用词简短 条理1、上下呼应2、主次分明 亲和1、化“难”为易2、“礼”字当先3、正向表达 灵动1、用词多变2、远离平淡 契合1、身份契合2、产品契合 示例1、…...
飞凌嵌入式FET527N-C核心板现已适配Android 13
飞凌嵌入式FET527N-C核心板现已成功适配Android13,新系统的支持能够为用户提供更优质的使用体验。那么,运行Android13系统的FET527N-C核心板具有哪些突出的优势呢? 1、性能与兼容性提升 飞凌嵌入式FET527N-C核心板搭载了全志T527系列高性能处…...
uniapp 如何修改 返回按钮(左上角+物理按钮+侧滑)触发的返回事件
背景: 使用uniapp 开发安卓app,在用户编辑后直接返回时,使用弹窗提醒用户:还没有保存,是否保存? 方案 1. 使用自定义返回事件 //返回 back() { // 业务逻辑,弹窗提醒 uni.showModal({title:…...
appium启动 install driver安装驱动
appium启动 appiumPS C:\Windows\system32> appium [Appium] Welcome to Appium v2.12.1 [Appium] The autodetected Appium home path: C:\Users\liyd\.appium [HTTP] Could not start REST http interface listener. The requested port may already be in use. Please m…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Vite中定义@软链接
在webpack中可以直接通过符号表示src路径,但是vite中默认不可以。 如何实现: vite中提供了resolve.alias:通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
