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

软件测试 - 概念篇

目录

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.kler.cn/a/531825.html

相关文章:

  • 使用Visual Studio打包Python项目
  • 100 ,【8】 buuctf web [蓝帽杯 2021]One Pointer PHP(别看)
  • 本地快速部署DeepSeek-R1模型——2025新年贺岁
  • 解锁数据结构密码:层次树与自引用树的设计艺术与API实践
  • Android --- handler详解
  • OpenAI开源战略反思:中国力量推动AI产业变革
  • Python MVC框架和其他Web框架有什么区别?
  • (电脑版)植物大战僵尸幼儿园版本,开启你的冒险之旅!
  • 加载数据,并切分
  • 计算机网络笔记再战——理解几个经典的协议1
  • Leetcode:680
  • 【流媒体】搭建流媒体服务器
  • FFM 因子分解机原理与特征域概念解析
  • 追逐低空经济,无人机研学技术详解
  • 【双指针题目】
  • Vue3学习笔记-Vue开发前准备-1
  • Rust场景示例:为什么要使用切片类型
  • Deep Sleep 96小时:一场没有硝烟的科技保卫战
  • 即梦(Dreamina)技术浅析(三):数据库与存储
  • 手写单例模式
  • Java循环操作哪个快
  • bootstrap.yml文件未自动加载问题解决方案
  • 【回溯+剪枝】优美的排列 N皇后(含剪枝优化)
  • 【游戏设计原理】98 - 时间膨胀
  • SpringBoot 引⼊MybatisGenerator
  • 【C++ STL】vector容器详解:从入门到精通