软件测试 - 概念篇

embedded/2025/2/5 2:18:45/

目录

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/embedded/159626.html

相关文章

AI大模型开发原理篇-1:语言模型雏形之N-Gram模型

N-Gram模型概念 N-Gram模型是一种基于统计的语言模型,用于预测文本中某个词语的出现概率。它通过分析一个词语序列中前面N-1个词的出现频率来预测下一个词的出现。具体来说,N-Gram模型通过将文本切分为长度为N的词序列来进行建模。 注意:这…

LeetCode 257.二叉树的所有路径

题目描述 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [1,2,3,null,5] 输出:["1->2->5","1->3&…

MATLAB中的IIR滤波器设计

在数字信号处理中,滤波器是消除噪声、提取特征或调整信号频率的核心工具。其中,无限脉冲响应(IIR)滤波器因其低阶数实现陡峭滚降的特性,被广泛应用于音频处理、通信系统和生物医学工程等领域。借助MATLAB强大的工具箱&…

【uniapp】uniapp使用java线程池

标题 由于js是性能孱弱的单线程语言,只要在渲染中执行了一些其他操作,会中断渲染,导致页面卡死,卡顿,吐司不消失等问题。在安卓端可以调用java线程池,把耗时操作写入线程池里面,优化性能。 实…

计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

Hive:基本查询语法

和oracle一致的部分 和oracle不一样的部分 排序 oracle中,在升序排序中,NULL 值被视为最大的值;在降序排序中,NULL 值被视为最小的值。 在MySQL中,NULL 被视为小于任何非空值。 在Hive中, NULL是最小的; Hive除了可以用order…

前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局

一、盒模型 题目:简述CSS的盒模型 答:盒模型有两种类型,可以通过box-sizing设置 1.标准盒模型(content-box):默认值,宽度和高度只包含内容区域,不包含内边距、边框和外边距。 2.边框盒模型&a…

IM 即时通讯系统-43-简单的仿QQ聊天安卓APP

IM 开源系列 IM 即时通讯系统-41-开源 野火IM 专注于即时通讯实时音视频技术,提供优质可控的IMRTC能力 IM 即时通讯系统-42-基于netty实现的IM服务端,提供客户端jar包,可集成自己的登录系统 IM 即时通讯系统-43-简单的仿QQ聊天安卓APP IM 即时通讯系统-44-仿QQ即…