当前位置: 首页 > news >正文

【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)

1. 什么是需求

在企业中,经常会听到:用户需求软件需求

  • 用户需求:没用经过合理的评估,通常就是一句话(开发一个五彩斑斓的黑)
  • 软件需求:开发人员和测试人员执行工作的依据

1.2 软件需求

在工作中实际见到的软件需求的文档类似于下面的表示:

image.png

注意:用户的需求不能直接作为开发和测试的依据。针对用户的需求,产品经理需要进行需求分析(技术可行性、市场可行性、成本投入和收益占比等)后续才可转变为软件需求

2. 开发模型

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

软件的生命周期

什么是生命周期?

  • 生命周期指的是从生命开始到生命结束的一段时间。以人为例,人类的生命周期是从生命孕育开始,中间会经历幼年、童年、少年、青年、老年,最终直至死亡

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

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

因此,我们就得到了软件(开发)的生命周期:
需求分析——计划——设计——编码——测试——运行维护

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

阶段具体内容产出
需求分析分析用户需求是否合理,分别从市场需求、技术等方面进行分析。该阶段会输出需求等文档。
计划对成立的需求执行需求执行计划,多长时间内完成该需
求,每段时间具体完成哪些功能。
该阶段会输出计划等文档。
设计将需求细化成⼀个个任务,团队成员各司其职领取任务
并进行技术设计(如何进行架构设计,设计哪些接口、
采用什么技术)
该阶段会输出技术等文档。
编码开发人员参考需求文档、设计文档、交互图等等文件进
行代码的编写。
代码文件等文档。
测试测试人员需要介入到软件的测试中来,参考测试用例对
软件进行测试。
测试用例、测试设计与计
划、测试报告等文档
运行维护项目测试结束之后,项目需要进行上线,并对产品进行
线上的维护。线上的维护主要分为三个方面。分别为修
复性维护、完善性维护和预防性维护。
  • 维护分为:
    1. 修复性维护:对项目中未发现的问题进行修复
    2. 完善性维护:对功能进行完善
    3. 预防性维护:居安思危,为了避免产品在线上出现一些不可预料的问题,进行一些防护的手段。正常使用没问题,但在一些极端的情况下会出现问题(性能问题),淘宝双十一并发太大、微博热搜
  • 产品经历:定需求,明确需求是否正常执行
  • 为整个项目负责,人员调配等工作
  • 交互:设计交互图
  • 前端:设计前端内容(框架、技术、工具)
  • 后端:设计后端内容(框架、技术、工具)
  • 测试:测试用例、测试计划(测试类型、测试工具等)

常见开发模型

软件开发流程(软件生命周期)

瀑布模型

与软件的生命周期基础流程大差不差
image.png

特点

  • 每个流程只执行一次
  • 线性的开发流程

瀑布模型最大的一个缺陷在于,可以运行的产品很迟才能被看到

  • 意味着没有收益/收益非常低
优点/特点缺点
强调开发的阶段性测试后置,前面各阶段遗留的风险推迟到测试阶段才被发现,导致项目大面积返工,失去了及早修复的机会
线性结构,每个阶段只执行一次测试后置,必须留有足够的时间给测试活动,否则导致测试不充分,将缺陷直接暴漏给用户(产品质量差)
是其他模型的基础框架周期太长,产品很迟才能被看到和使用,可能会导致需求/功能过时
  • 瀑布模型的适用场景:需求固定的小项目

螺旋模型

当企业中存在趣多规模庞大、复杂度高、风险大的项目,这种情况下就适合用螺旋模型image.png|480

  • 螺旋模型中,各个阶段都引入了风险分析和模型 image.png
  • 目的是减少各阶段遗留的风险问题,避免把问题留到后面的阶段
优点缺点
强调严格的全过程风险管理项目中可能存在的风险性与风险管理人员的技能水平有直接关系
强调各开发阶段的质量需求人员、资金、时间的增加和投入,可能会导致项目的成本太高
增加风险分析和原型

增量模型、迭代模型

既然需求有大有小,小需求我们可以直接用瀑布模型开发出来,复杂的需求我们就将其分解为很多小的需求。而这些被分解出的小需求就称为——增量1、增量2、增量3…

image.png

  • 将大需求拆分成小需求,每个小需求独立开发上线,这就是增量模型

有一个大需求,先上面基础版本,再上线优化版本1、优化版本2、优化版本3…

  • 基础版本:看商品下单
  • 优化版本1:购物车,丰富详情页信息
  • 优化版本2:丰富下单的付款方式

  • 这就是迭代模型

image.png

  • 增量是逐块建造的概念
  • 迭代是反复求精的概念
  • 适用于大型项目,需求不明确

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

相关文章:

【软件测试】需求的概念和常见模型(瀑布、螺旋、增量、迭代)

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开发板&#xff0…...

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语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障

关键领域软件测试的"安全密码"&#xff1a;Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力&#xff0c;从金融交易到交通管控&#xff0c;这些关乎国计民生的关键领域…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权

摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题&#xff1a;安全。文章将详细阐述认证&#xff08;Authentication) 与授权&#xff08;Authorization的核心概念&#xff0c;对比传统 Session-Cookie 与现代 JWT&#xff08;JS…...