软件测试 - 概念篇

news2025/2/4 20:48:22

目录

1. 需求

1.1 用户需求

1.2 软件需求

2. 开发模型

2.1 软件的生命周期

2.2 常见开发模型

2.2.1 瀑布模型

2.2.2 螺旋模型


1. 需求

对于软件开发而言, 需求分为以下两种:

  1. 用户需求
  2. 软件需求

1.1 用户需求

用户需求, 就是用户提出的需求, 没有经过合理的评估, 通常就是一句话. 

用户需求可能是合理的, 也可能是不合理的, 比如: 我想要五彩斑斓的黑, 我想要一台永动机, 我想要一台洗碗机.....

相信大家在使用一款软件时, 一段时间后, 都会让你填写调查报告, 让你写下你使用的感受, 以及建议. 而你写下的建议, 就是一个用户需求.

1.2 软件需求

用户需求经过合理的评估, 转化为软件需求.

用户需求只是表达了 "用户想要什么", 而软件需求包含了: 如何去实现, 实现的相关细节.

软件需求是开发人员和测试人员的工作依据.

软件需求中, 详细描述了开发人员需要实现的功能. 举个例子:

用户需求:

  • 我想找个女朋友.

对用户需求经过评估后, 发现是合理的需求, 那么会转化为软件需求.

软件需求:

  1. 社交 - 认识更多的异性朋友
  2. 寻找追求目标 - 找一个喜欢的人
  3. 追求 - 投其所好
  4. 表白 - 找到女朋友

我们工作中遇到的软件需求, 存在于软件需求文档中:

因此, 印证了我们上文所说的:

  1. 用户需求通常是一句话, 合理性是未知的.
  2. 软件需求则是开发人员和测试人员的工作依据, 也更加详细.

注意:

用户需求不能作为开发人员和测试人员的工作依据.

针对用户需求, 产品经理需要对用户需求进行需求分析后才能转变成软件需求.

需求分析包含以下几个方面:

  1. 技术可行性分析: 该功能技术上能否实现
  2. 市场可行性分析: 该功能是否占据市场
  3. 成本投入分析: 实现该功能所需成本是否较高
  4. 收益占比分析: 该功能是否能够带来较大收益

2. 开发模型

开发模型, 实际上指的是开发一个 软件/功能 的开发流程.

规范的开发流程是在时代的演变下逐渐成型的, 并非一开始就有规范的开发流程.

要想了解开发模型, 我们需要先了解软件的生命周期.

2.1 软件的生命周期

生命周期, 就从生命开始到生命结束的过程.

我们人类的生命周期如下:

  1. 生命开始
  2. 婴幼儿
  3. 儿童
  4. 青少年
  5. 青年
  6. 中年
  7. 中老年
  8. 老年
  9. 生命结束

软件和我们人类一样, 也是有生命周期的.

软件的生命周期如下:

  1. 需求分析: 分析用户需求是否合理
  2. 计划: 定好时间, 什么时候开始, 什么时候结束
  3. 设计: 对任务细分, 制定详细流程
  4. 编码: 开发人员进行开发
  5. 测试: 测试人员进行测试
  6. 运行维护: 软件/功能 上线后进行维护

2.2 常见开发模型

2.2.1 瀑布模型

瀑布模型, 是最早提出的软件开发模型之一, 是所有其他模型的基础框架.

瀑布模型的优点:

  1. 强调开发的阶段性
  2. 线性结构, 每个阶段只执行一次
  3. 是其他模型的基础框架

瀑布模型的缺点:

  1. 测试后置: 若前面阶段遗留的问题, 到测试阶段才被发现, 将导致项目大面积返工, 拉长开发周期. 例如: 需求分析阶段的问题, 到测试阶段才被发现, 那么项目需要重新从需求分析阶段开始执行.
  2. 测试后置: 若前面阶段花费的时间太长, 那么测试的时间就会被压缩, 导致测试不充分, 导致产品质量差, 损失用户量.
  3. 周期太长: 产品很迟才能开发完成, 导致需求/功能过时.

瀑布模型虽然有较多缺点, 但并非在实际开发中就不能使用瀑布模型.

瀑布模型适用于: 需求固定的小项目(即使返工也不会花费多少时间).

2.2.2 螺旋模型

虽然小项目可以使用瀑布模型进行开发. 然而在企业中, 存在着许多的规模庞大, 复杂度高, 风险大的项目, 在这种情况下, 就需要使用 螺旋模型.

螺旋模型其实就是在瀑布模型的各个阶段引入了进行风险分析和原型.

使用螺旋模型后, 如果某个阶段出现了问题, 经过风险分析后, 就可以及时的发现问题, 避免了大面积返工.

螺旋模型的优点:  

  1. 在各个阶段引入了风险分析和原型.
  2. 避免了各个阶段遗留的风险问题, 避免把问题留到最后导致大面积返工.

缺点:

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

 这里解释一下 原型 这个概念.

原型就是指一个产品或系统的初步简化的模型, 即 "产品的雏形".

举个例子:

比如开发百度页面时, 在开发前, 就需要设计原型图和设计图,

  • 其中原型图, 展示的是百度页面大概的样子, 是百度页面的雏形图.
  • 而设计图, 展示的是界面最终的样式, 即百度页面最终的样子, 开发时, 要严格按照设计图进行开发, 开发出的页面要和设计图是一模一样的.


END

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

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

相关文章

使用SpringBoot发送邮件|解决了部署时连接超时的bug|网易163|2025

使用SpringBoot发送邮件 文章目录 使用SpringBoot发送邮件1. 获取网易邮箱服务的授权码2. 初始化项目maven部分web部分 3. 发送邮件填写配置EmailSendService [已解决]部署时连接超时附:Docker脚本Dockerfile创建镜像启动容器 1. 获取网易邮箱服务的授权码 温馨提示…

基于springboot+vue的航空散货调度系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

[MRCTF2020]Ez_bypass1(md5绕过)

[MRCTF2020]Ez_bypass1(md5绕过) ​​ 这道题就是要绕过md5强类型比较,但是本身又不相等: md5无法处理数组,如果传入的是数组进行md5加密,会直接放回NULL,两个NuLL相比较会等于true; 所以?id[]1&gg…

MATLAB实现多种群遗传算法

多种群遗传算法(MPGA, Multi-Population Genetic Algorithm)是一种改进的遗传算法,它通过将种群分成多个子种群并在不同的子种群之间进行交叉和交换,旨在提高全局搜索能力并避免早期收敛。下面是多种群遗传算法的主要步骤和流程&a…

强化学习笔记(5)——PPO

PPO视频课程来源 首先理解采样期望的转换 变量x在p(x)分布下,函数f(x)的期望 等于f(x)乘以对应出现概率p(x)的累加 经过转换后变成 x在q(x)分布下,f(x)*p(x)/q(x) 的期望。 起因是:求最大化回报的期望,所以对ceta求梯度 具体举例…

【MATLAB例程】TOA和AOA混合的高精度定位程序,适用于三维、N锚点的情况

代码实现了一个基于到达角(AOA)和到达时间(TOA)混合定位的例程。该算法能够根据不同基站接收到的信号信息,自适应地计算目标的位置,适用于多个基站的场景 文章目录 主要功能代码结构运行结果程序代码 主要功…

使用Pygame制作“青蛙过河”游戏

本篇博客将演示如何使用 Python Pygame 从零开始编写一款 Frogger 风格的小游戏。Frogger 是一款早期街机经典,玩家需要帮助青蛙穿越车水马龙的马路到达对岸。本示例提供了一个精简原型,包含角色移动、汽车生成与移动、碰撞检测、胜利条件等关键点。希望…

深度解读 Docker Swarm

一、引言 随着业务规模的不断扩大和应用复杂度的增加,容器集群管理的需求应运而生。如何有效地管理和调度大量的容器,确保应用的高可用性、弹性伸缩和资源的合理分配,成为了亟待解决的问题。Docker Swarm 作为 Docker 官方推出的容器集群管理工具,正是在这样的背景下崭露头…

8、面向对象:类、封装、构造方法

一、类 1、定义 类:对现实世界中事物的抽象。Student 对象:现实世界中具体的个体。张三、李四 这些具体的学生 面向对象的特征:抽象、封装、继承、多态 OOP: Object Oriented Programming(面向对象编程) 类和对象…

STM32 旋转编码器

旋转编码器简介 旋转编码器:用来测量位置、速度或旋转方向的装置,当其旋转轴旋转时,其输出端可以输出与旋转速度和方向对应的方波信号,读取方波信号的频率和相位信息即可得知旋转轴的速度和方向 类型:机械触点式/霍尔传…

git基础使用--4---git分支和使用

文章目录 git基础使用--4---git分支和使用1. 按顺序看2. 什么是分支3. 分支的基本操作4. 分支的基本操作4.1 查看分支4.2 创建分支4.3 切换分支4.4 合并冲突 git基础使用–4—git分支和使用 1. 按顺序看 -git基础使用–1–版本控制的基本概念 -git基础使用–2–gti的基本概念…

【算法】回溯算法专题③ ——排列型回溯 python

目录 前置小试牛刀回归经典举一反三总结 前置 【算法】回溯算法专题① ——子集型回溯 python 【算法】回溯算法专题② ——组合型回溯 剪枝 python 小试牛刀 全排列 https://leetcode.cn/problems/permutations/description/ 给定一个不含重复数字的数组 nums ,返…

Vue2.x简介

Vue2.x简介 Vue2.x的版本介绍Vue2.x的两大组件库 Vue2.x的版本介绍 Vue2.x是vue.js的第二个主要版本,最初版发布于2016 年,最终版发布于2023年12月24日(版本号:2.7.16,版本名:Swan Song(绝唱&a…

FFmpeg:多媒体处理的瑞士军刀

FFmpeg:多媒体处理的瑞士军刀 前言 FFmpeg 是一个功能强大且跨平台的开源多媒体框架,广泛应用于音视频处理领域。 它由多个库和工具组成,能够处理各种音视频格式,涵盖编码、解码、转码、流处理等多种操作。 无论是专业视频编辑…

【深度分析】DeepSeek大模型技术解析:从架构到应用的全面探索

深度与创新:AI领域的革新者 DeepSeek,这个由幻方量化创立的人工智能公司推出的一系列AI模型,不仅在技术架构上展现出了前所未有的突破,更在应用领域中开启了无限可能的大门。从其混合专家架构(MoE)到多头潜…

python学opencv|读取图像(五十五)使用cv2.medianBlur()函数实现图像像素中值滤波处理

【1】引言 在前述学习过程中,已经探索了取平均值的形式进行图像滤波处理。 均值滤波的具体的执行对象是一个nXn的像素核,对这个像素核内所有像素点的BGR值取平均值,然后把这个平均的BGR值直接赋给像素核中心位置的核心像素点,由…

OpenAI 再战机器人领域,重组机器人团队

OpenAI重组机器人团队?大家是不是和小编一样,听到这个消息后,脑子里瞬间浮现出科幻电影里机器人满街跑的场景?今天咱们就来看看背后的故事吧~ 作为人工智能领域的领头羊,OpenAI一直以来都在探索和扩展AI技术的深度和广…

Turing Complete-1位开关

要求如下: 我的思考: 把输入1当作控制信号,把输入2当作输出信号。 通过非门和开关使输入2形成双通道输出, 通道一为输出输入2取反。 通道二为输出输入2本身。 通过输入1来控制两个通道的开闭。

树莓派pico入坑笔记,睡眠

关于树莓派pico和circuitpython的更多玩法,请看树莓派pico专栏 关于在 CircuitPython 中使用警报和浅/深度睡眠的更多信息,请参阅此学习指南。 树莓派pico支持浅睡眠和深度睡眠,其中深度睡眠唤醒后将从boot.py开始运行 支持按时间唤醒和引…

数据库 - Sqlserver - SQLEXPRESS、由Windows认证改为SQL Server Express认证进行连接 (sa登录)

本文讲SqlServer Express版本在登录的时候, 如何由Windows认证,修改为Sql Server Express认证。 目录 1,SqlServer Express的Windows认证 2,修改为混合认证 3,启用sa 用户 4,用sa 用户登录 下面是详细…