目录
前言
什么是需求
为什么会产生需求?
需求
开发模型
常见开发模型
瀑布模型
螺旋模型
增量模型
迭代模型
两者核心区别
敏捷模型
测试模型
V 模型
V 模型的 “功与过”
W 模型
W 模型的 “升级与遗憾”
总结:选 V 还是选 W?看你项目 “脾气”
前言
什么是需求
在软件测试里,需求是指 “用户 / 业务方对软件功能、性能、体验等方面的期望和要求”,是软件 “该做什么、要做成什么样” 的明确标准 —— 比如 “用户能通过手机号 + 验证码登录”“支付页面加载时间不超过 2 秒”,这些都是需求。
对测试来说,需求是测试的 “参照物”:所有测试工作(写用例、执行测试、判定结果)都要围绕需求展开,验证软件是否 “满足需求”。
为什么会产生需求?
需求的本质是 “解决问题”,核心原因有 3 个:
用户有 “未被满足的诉求”比如用户想 “不用带现金就能付款”,于是催生了 “移动支付功能” 的需求;用户嫌 “软件打开太慢”,就有了 “启动速度≤3 秒” 的性能需求。
业务有 “目标要达成”企业为了赚钱 / 提升效率,会提出需求 —— 比如电商平台想 “提高复购率”,就催生了 “会员积分体系” 的需求;公司想 “减少人工统计成本”,就有了 “自动生成报表” 的功能需求。
产品要 “适配环境 / 规则”比如新出台了 “数据隐私法规”,软件就得加 “用户信息加密存储” 的需求;手机系统更新了,软件就得有 “适配新系统兼容性” 的需求。
简单说:需求是 “用户要解决问题、业务要实现目标、产品要适配规则” 催出来的 —— 没有需求,软件就成了 “没头苍蝇”,既不知道做什么,也不知道做对了没。
需求
用户需求是指用户从自身使用角度出发,对系统提出的期望和要求,通常以自然语言、场景描述或简单的功能列表形式表达,具有较强的主观性和多样性。它既存在不合理性,也存在合理性:不合理性体现在部分需求可能超出当前技术能力、与现有业务规则冲突或缺乏可行性;合理性则体现在用户需求直接反映了真实的业务场景和使用痛点,是软件需求分析的重要依据。
软件需求是在用户需求的基础上,由产品经理或需求分析师进行整理、分析、抽象和细化后形成的、可被开发和测试团队直接使用的规范文档。它通常包括功能需求、非功能需求(如性能、安全性、可用性等)、数据需求和接口需求等,具有完整性、一致性和可验证性。软件需求既需要充分满足用户的合理需求,又要对不合理需求进行筛选、调整或否决,以确保产品在技术、成本和时间等方面的可行性与整体质量。
开发模型
软件(开发)生命周期阶段
流程:需求分析 — 计划 — 设计 — 编码 — 测试 — 运行维护
各阶段具体内容及产出
| 阶段 | 具体内容 | 产出 |
|---|---|---|
| 需求分析 | 分析用户需求的合理性(从市场、技术等维度) | 需求等文档 |
| 计划 | 制定需求执行计划(明确完成周期、阶段任务) | 计划等文档 |
| 设计 | 细化需求为任务,进行技术架构、接口、技术选型等设计 | 技术等文档 |
| 编码 | 参考需求、设计等文档编写代码 | 代码文件等文档 |
| 测试 | 参考测试用例对软件进行测试 | 测试用例、报告等文档 |
| 运行维护 | 软件上线后的维护,包含:1. 修复性维护:修复未发现的问题2. 完善性维护:优化功能3. 预防性维护:提前防护潜在问题 | (无单独产出文档说明) |
常见开发模型
瀑布模型
- 流程:start→需求分析→计划→设计→编码→测试→End(线性顺序,每个阶段仅执行一次)
- 定位:软件工程中其他模型的基础框架
- 优缺点:
优点 / 特点 缺点 强调开发阶段性;线性结构;是其他模型基础 测试后置,前期风险延迟暴露导致返工;需预留充足测试时间,否则缺陷留到用户端;周期长,产品交付滞后易过时 - 企业实践:多数企业基于其线性思想优化(如细化阶段、掺入迭代)
螺旋模型
- 定位:需求不明确时的渐进式开发模型,适配规模大、复杂度高、风险高的项目
- 核心要求:测试随开发迭代同步进行,回归测试很重要
- 优缺点:
优点 缺点 全程风险管理;强调各阶段质量;增加风险分析和原型 风险与管理人员能力强相关;需求 / 资源投入增加易导致成本过高
增量模型
- 核心逻辑:将项目拆分为多个独立的 “增量模块”,每个模块都是完整的功能单元(可独立交付、使用),按优先级依次开发并交付。例:开发电商 APP 时,先做 “商品浏览 + 下单”(核心增量),再做 “支付功能”(第二增量),最后补 “会员体系”(第三增量)。
- 优势:
- 降低项目整体风险:早期就能交付可用功能,避免全量开发失败的损失;
- 灵活响应需求:可根据市场反馈调整后续增量的功能方向;
- 测试聚焦:每个增量模块独立测试,协作成本更低。
- 测试要点:除了模块内测试,需重点做 “增量间兼容性测试”(避免新模块与已交付模块冲突)。
迭代模型
- 核心逻辑:以 “版本迭代” 为周期,每次迭代都覆盖 “需求 - 设计 - 编码 - 测试” 全流程,逐步优化产品功能与质量(每轮迭代都会输出一个 “更完善的版本”)。例:开发社交 APP,V1.0 实现 “基础聊天”,V1.1 优化 “消息推送稳定性”,V1.2 新增 “朋友圈” 并修复界面 bug。
- 优势:
- 快速试错:通过短周期迭代快速验证想法,及时修正方向;
- 持续优化:产品质量随迭代逐步打磨,适配用户反馈;
- 团队协作高效:小周期任务更易对齐目标。
- 测试要点:需包含 “回归测试”(确保新迭代不影响原有功能),且测试周期与开发周期完全同步。
两者核心区别
| 维度 | 增量模型(快速递进) | 迭代模型(反复精修) |
|---|---|---|
| 类比 | 画人物:先画头部(可独立看)→补身体→补四肢 | 画人物:先画完整草稿→细化五官→调整比例→上色精修 |
| 交付特点 | 每个增量是 “可用的独立功能” | 每次迭代是 “更完善的完整产品” |
| 目标侧重 | 快速交付核心功能,逐步扩展 | 持续优化产品整体体验与质量 |
敏捷模型
- 核心目标:快速完成项目,通过 “敏捷性”(过滤非必要活动)实现
- 核心理念(敏捷宣言):
- 重个体交互>流程工具:重视团队成员之间的直接沟通;
- 重可用软件>完备文档:优先交付能实际使用的软件版本;
- 重客户协作>合同谈判:重视和客户持续合作;
- 重响应变化>遵循计划:愿意灵活应对需求、市场的变化;
- 典型框架:Scrum
- 角色:product owner(产品经理)、scrum master(项目经理)、team(研发团队)
- 流程(1-4 周 / 迭代):
- 产品负责人整理 user story→product backlog
- 发布计划会议:梳理 story、排期→sprint backlog
- 迭代计划会议:拆分任务、明确责任人
- 每日会:同步进度 / 计划 / 问题
- 演示会:展示迭代成果
- 回顾会:总结不足、优化计划
- 测试特点:轻文档,用思维导图 / 动态测试;测试与开发协作(主动了解需求、共同排障)
测试模型
做开发的朋友应该都听过 “瀑布模型”,但你知道它的 “变种选手” 和 “进化版” 吗?今天咱们聊聊软件测试里的 V 模型和 W 模型 —— 这俩堪称 “从‘事后补漏’到‘全程盯防’的典型代表”。
V 模型
V 模型是 Paul Rook 在 80 年代末搞出来的,本质是瀑布模型的 “测试强化版”—— 它把开发流程和测试流程做成了 “对称的 V 字”,每个开发阶段都对应着专门的测试环节:
- 写 “用户需求” 时,就对应着最后要做 “验收测试”(看产品符不符合用户要求);
- 做 “需求分析 / 系统设计”,对应 “系统测试”(测功能、性能达不达标);
- 搞 “概要设计”,对应 “集成测试”(拼模块时看兼容性);
- 写 “详细设计”,对应 “单元测试”(测单个功能块的正确性);
- 中间的 “编码”,就是开发和单元测试的衔接点。
V 模型的 “功与过”
优点很实在:把测试 “绑定” 到开发的每一步,再也不是 “编码写完才想起来测”,测试的针对性和效率都提上来了 —— 比如单元测试专门卡详细设计的漏洞,系统测试专门对标需求,分工贼明确。
但缺点也很 “瀑布”:测试还是 “跟着开发走”,需求阶段根本没测试什么事儿,等开发到后面才发现需求错了,返工成本直接上天。
W 模型
如果说 V 模型是 “开发干、测试等”,那 W 模型就是 “开发干、测试一起干”—— 它直接搞了两个 V 字 “并联”:一个管开发,一个管测试,从需求阶段开始,测试就和开发 “肩并肩”。
比如:
- 开发写 “用户需求”,测试同时做 “验收测试准备”;
- 开发做 “需求分析”,测试同步搞 “系统测试准备”;
- 开发搞 “概要设计”,测试直接准备 “集成测试” 的方案;
- 连详细设计阶段,测试都在同步搭 “单元测试” 的框架。
W 模型的 “升级与遗憾”
升级点太香了:测试从 “事后补漏” 变成 “全程盯防”—— 需求刚写完,测试就去验证需求对不对;设计刚画好,测试就去查设计有没有坑,早期就能把问题摁死,省了后期无数返工。
但遗憾也有:流程还是 “线性的”—— 需求阶段没做完,设计阶段不能动;测试准备没搞完,实际测试不能上。遇上现在天天改需求的敏捷项目,这模型直接 “卡壳”。
总结:选 V 还是选 W?看你项目 “脾气”
- 如果是需求稳定、流程规范的项目(比如传统企业系统),V 模型够用,成本低还稳;
- 如果是需求复杂、怕早期踩坑的项目(比如大型软件),W 模型更保险,能提前堵漏洞;
- 但要是现在流行的敏捷 / 迭代项目,这俩都差点意思 —— 毕竟它们都 “绷着流程”,不如敏捷的 “快速试错” 灵活。
其实不管 V 还是 W,核心都是一句话:测试不是 “收尾活”,是从开头就要掺进去的 “保险栓”—— 早测早安心,晚测哭出声,你说是不是?