当前位置: 首页 > 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…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

Robots.txt 文件

什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

二维FDTD算法仿真

二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

C# winform教程(二)----checkbox

一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用

阻止除自定义标签之外的所有标签 先输入一些标签测试&#xff0c;说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时&#xff08;如通过点击或键盘导航&…...