软件测试 - 概念篇

ops/2025/2/4 6:28:55/

目录

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.ppmy.cn/ops/155499.html

相关文章

gdb 调试多进程中多线程的方法

示例代码 首先&#xff0c;给出一个简单的示例程序&#xff0c;演示如何使用 fork 创建多个子进程并且每个进程内部创建多个线程。 示例代码 (main.cpp) #include <iostream> #include <thread> #include <vector> #include <unistd.h> #include <…

【游戏设计原理】98 - 时间膨胀

从上文中&#xff0c;我们可以得到以下几个启示&#xff1a; 游戏设计的核心目标是让玩家感到“时间飞逝” 游戏的成功与否&#xff0c;往往取决于玩家的沉浸感。如果玩家能够完全投入游戏并感受到时间飞逝&#xff0c;说明游戏设计在玩法、挑战、叙事等方面达到了吸引人的平衡…

【漫话机器学习系列】078.如何选择隐藏单元激活函数(How To Choose Hidden Unit Activation Functions)

选择隐藏单元激活函数是神经网络设计中的一个重要步骤&#xff0c;它直接影响到模型的学习能力和训练效果。不同的激活函数具有不同的性质和适用场景&#xff0c;因此在选择时需要根据模型的需求和问题的特性来决定。以下是一些常见的激活函数及其选择依据&#xff1a; 1. Sig…

人工智能学习(四)之机器学习基本概念

机器学习基本概念详细解析&#xff1a;从生活实例轻松入门 在当今数字化时代&#xff0c;机器学习作为人工智能领域的核心技术之一&#xff0c;正深刻地改变着我们的生活和工作方式。从智能语音助手到图像识别系统&#xff0c;从个性化推荐引擎到自动驾驶汽车&#xff0c;机器…

如何让DeepSeek恢复联网功能?解决(由于技术原因,联网搜索暂不可用)

DeekSeek提示&#xff1a;&#xff08;由于技术原因&#xff0c;联网搜索暂不可用&#xff09; 众所周知&#xff0c;因为海外黑客的ddos攻击、僵尸网络攻击&#xff0c;deepseek的联网功能一直处于宕机阶段&#xff0c;但是很多问题不联网出来的结果都还是2023年的&#xff0c…

ubuntuCUDA安装

系列文章目录 移动硬盘制作Ubuntu系统盘 前言 根据前篇“移动硬盘制作Ubuntu系统盘”安装系统后&#xff0c;还不能够使用显卡。 如果需要使用显卡&#xff0c;还需要进行相关驱动的安装&#xff08;如使用的为Nvidia显卡&#xff0c;就需要安装相关的Nvidia显卡驱动&#xff…

VSCode 中的 Git Graph扩展使用详解

VSCode 中的 Git Graph 详解 1. 什么是 Git Graph&#xff1f; Git Graph 是 VSCode 中的一款 Git 可视化扩展&#xff0c;它提供了一种 图形化方式 来查看 Git 提交历史、分支、合并记录等信息&#xff0c;使得 Git 版本管理更加直观和高效。 通过 Git Graph&#xff0c;你…

ARM嵌入式学习--第十天(UART)

--UART介绍 UART(Universal Asynchonous Receiver and Transmitter)通用异步接收器&#xff0c;是一种通用串行数据总线&#xff0c;用于异步通信。该总线双向通信&#xff0c;可以实现全双工传输和接收。在嵌入式设计中&#xff0c;UART用来与PC进行通信&#xff0c;包括与监控…