软件测试模型与测试策略
1. 常见软件开发与测试模型
1.1 瀑布模型

瀑布模型是⼀种传统的软件开发模型,开发过程按照固定顺序推进,每个阶段完成后,才能进⼊下⼀个阶段。
优点:
1.流程规范,便于管理。
2.文档完整,适合大型组织协作。
3.阶段目标明确,容易进行进度控制
缺点:
1.不适合需求频繁变化的项目。
2.测试介入较晚,问题发现较晚。
3.如果需求前期理解错误,后期返工成本很高。
适用场景:
适合需求非常明确、变化较少的项目,例如:
1.政府系统
2.银行内部系统
3.传统企业管理系统
4.合同制外包项目
1.2 V模型

V模型是在瀑布模型基础上发展出来的测试模型。它强调开发阶段和测试阶段之间的对应关系。
适⽤场景
适合以下类型项⽬:
1. 银⾏系统
2. 医疗系统
3. 政府系统
4. 航空、交通等⾼可靠性系统
5. 需求较稳定的⼤型企业系统
优点
1. 测试阶段清晰。
2. 便于提前设计测试计划和测试⽤例。
3. 能够让测试⼈员更早理解需求和设计。
4. 有利于控制项⽬质量。
缺点
1. 对需求变更的适应能⼒较弱。
2. 仍然偏重阶段式开发。
3. 不适合快速变化的互联⽹项⽬。
1.3 W模型

W模型是对V模型的改进。V模型虽然强调测试和开发对应,但测试仍然容易集中在后期。W模型进⼀步强调:测试应该从需求阶段就开始。
适⽤场景
适合以下项⽬:
1. 周期较⻓的⼤型系统。
2. ⽂档要求较⾼的企业项⽬。
3. 需求分析复杂、业务规则多的系统。
4. 出错成本较⾼的项⽬。
优点
1. 可以在需求和设计阶段提前发现问题。
2. 减少后期返⼯成本。
3. 测试⼈员参与更早,对业务理解更深⼊。
4. 有利于提⾼整体质量。
缺点
1. 流程相对较重。
2. 对⽂档和评审要求较⾼。
3. 不适合节奏⾮常快、需求频繁变化的⼩团队项⽬。
1.4 敏捷模型
- 包含三个角色和五个重要会议
- 三个角色: 产品经理、项目经理、研发团队
- 五个重要会议:

敏捷开发是⼀种迭代式、增量式的软件开发模式。它不追求⼀次性把所有需求做完,⽽是把项⽬拆成多个⼩版本,每个迭代完成⼀部分功能。
常⻅流程:
需求梳理 → 迭代计划 → 开发 → 测试 → 缺陷修复 → 评审 → 回顾 → 下⼀轮迭代
特点
1. ⼩步快跑,持续交付。
2. 需求可以根据反馈调整。
3. 开发、测试、产品协作频繁。
4. 每个迭代都有相对完整的测试和交付。
适⽤场景
适合以下项⽬:
1. 互联⽹产品
2. 移动 App
3. 电商系统
4. 在线教育系统
5. 需求变化较快的项⽬
6. 初创团队或快速迭代团队
优点
1. 能够快速响应需求变化。
2. 可以持续交付可⽤版本。
3. 测试⼈员可以持续参与项⽬。
4. 有利于快速发现问题和调整⽅向。
缺点
1. 对团队沟通能⼒要求⾼。
2. 如果需求频繁变化但没有管理,容易造成混乱。
3. 对测试⼈员要求较⾼,需要快速理解需求、快速设计⽤例、快速执⾏回归。
2. 敏捷开发测试流程
2.1 需求评审
- 关注点:
- 需求清晰度
- 异常场景(过期优惠券、退款处理)
- 边界条件(数量、权限)
- 影响范围(已有功能、多端同步)
- 业务规则冲突
2.2 测试点拆分
- 工具:XMind
- 示例(购物车):
1. 添加/修改/删除商品
2. 库存不足/下架处理
3. 价格变动
4. 登录态(未登录、多端同步)
2.3 测试用例设计
- 方法:
- 等价类划分
- 边界值(如商品数量:0, 1, 99, 100)
- 场景法
- 错误推测
- 判定表
2.4 提测与冒烟测试
- 开发提测说明:
- 功能范围、自测情况、环境配置、数据库/接口变更
- 冒烟测试:
- 系统启动
- 核心流程(登录→购物车→订单→支付)
2.5 测试执行与缺陷跟踪
- 记录:
- 版本、环境、账号、缺陷详情(标题/步骤/预期/实际/附件)
- 缺陷管理:
- 状态跟踪(新建→修复→验证)
- 优先级/严重程度
2.6 回归测试
- 范围:修复点 + 关联功能(如优惠券修复后验证满减、退款)
2.7 Sprint评审与复盘
- 评审:完成度、上线标准、遗留问题
- 复盘:需求变更、Bug分布、测试效率、环境稳定性
3. 几种模型对比总结
| 模型 | 特点 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| 瀑布模型 | 阶段顺序推进 | 需求稳定项目 | 流程清晰 | 变更成本高 |
| V模型 | 开发阶段对应测试阶段 | 质量要求高、需求稳定项目 | 测试计划清晰 | 灵活性不足 |
| W模型 | 测试从需求阶段开始 | 大型复杂项目 | 缺陷发现早 | 流程较重 |
| 敏捷模型 | 迭代开发、持续交付 | 需求变化快的项目 | 响应快、反馈快 | 沟通成本高 |
4. 软件测试避坑指南:如何制定靠谱的测试策略与风险控制?
4.1 到底什么是“测试策略”?
简单来说,测试策略就是测试工作的“作战方案”。它不需要长篇大论,但必须能回答以下 8 个灵魂拷问:
- 测什么?(测试范围)
- 重点测什么?(测试重点)
- 先测什么?(测试优先级)
- 怎么测?(测试类型)
- 谁来测?(资源安排)
- 用什么工具测?
- 时间不够时怎么取舍?
- 上线风险怎么控制?
4.2 拆解测试策略的五大核心要素
我们以一个电商系统为例,把测试策略拆解开来看:
4.2.1. 测试范围:明确边界
首先要搞清楚本次迭代包含哪些模块。比如电商系统通常包括:登录注册、商品搜索、购物车、订单提交、支付、优惠券、退款、后台管理等。
4.2.2. 测试重点:好钢用在刀刃上
资源永远是有限的,不能“眉毛胡子一把抓”。测试重点通常由以下因素决定:
- 用户使用频率高
- 业务风险高(尤其涉及资金、数据安全)
- 改动范围大
- 历史Bug较多
- 影响核心流程
💡 举例: 电商项目中的支付、订单、库存、优惠券、退款就是绝对的高风险模块。这些一旦出问题,直接跟钱过不去,必须优先测!
4.2.3. 测试类型:多维度覆盖
根据项目情况选择合适的测试手段,比如:功能测试、接口测试、UI测试、兼容性测试、性能测试、安全测试、回归测试、冒烟测试、数据库测试、异常测试等。
💡 举例: 针对订单模块,我们可以这样安排:
- 功能测试:验证下单、取消、支付、退款流程。
- 接口测试:验证订单提交、查询、退款接口。
- 数据库测试:验证订单状态、支付状态、库存变化是否落库正确。
- 性能测试:验证大促期间订单接口能否抗住高并发。
4.2.4. 测试优先级:时间不够时的“保命符”
时间充裕当然要全覆盖,但如果时间紧张,请务必死保:核心主流程 > 高风险模块 > 本次改动模块 > 关联模块 > 历史Bug多发模块。
💡 举例: 如果电商项目只剩1天测试时间,优先测:登录 → 商品浏览 → 加购 → 提交订单 → 支付 → 订单查询 → 退款主流程。
至于页面样式细节、低频筛选条件、非核心提示语、冷门配置项,统统延后!
4.2.5. 资源安排:排兵布阵
明确人员分工、测试环境、测试数据、测试工具、时间节点以及风险负责人。
💡 举例: 订单模块由A测试,优惠券由B测试,涉及资金的支付和退款交给经验丰富的老手;接口测试用Postman,Bug管理用禅道,数据库校验用MySQL。
4.3 从策略到落地:测试执行的节奏
有了策略,接下来就是按部就班地执行。一个成熟的测试流程通常包括:需求评审 → 拆分测试点 → 编写测试用例 → 准备测试数据 → 确认测试环境 → 冒烟测试 → 功能/接口测试 → 提交跟踪Bug → 回归测试 → 输出报告 → 上线评审
其中有两个关卡极其重要:
- 准入标准(开发提测前): 必须自测通过、主流程走通、提测说明完整、环境部署完毕、无阻塞级Bug。
- 准出标准(测试完成后): 核心用例执行完毕、阻塞/严重级Bug已修复、主要功能回归通过、遗留问题已评估风险、产品/开发/测试三方确认上线。
4.4 实战中的风险控制:遇到突发怎么办?
项目从来都不是一帆风顺的,常见的风险及应对策略如下:
| 风险类型 | 常见场景 | 应对策略 |
|---|---|---|
| 时间风险 | 开发提测延期,5天测试压缩成2天 | 调整优先级,先保核心流程;缩减低风险测试深度;风险暴露给项目经理。 |
| 需求风险 | 需求不清晰或频繁变更 | 评审时追问异常/边界;对变更部分及时调整用例。 |
| 环境/数据风险 | 测试环境经常超时,缺乏优惠券/库存测试数据 | 提前准备造数据脚本;环境问题及时抛出并推动运维解决。 |
| 业务风险 | 涉及资金、订单、隐私数据 | 优先且深度测试高风险模块,增加数据库层面的校验。 |
🚨 上线前发现严重Bug怎么办?
不能简单说“上”或“不上”,要先评估:影响范围、出现概率、是否有临时方案。如果影响支付/订单/资金,坚决阻塞上线;如果影响较小,可由产品、开发、测试共同评估“带病上线”的风险,并明确修复时间和应急预案。
🚨 上线前风险评审必须确认:
- 核心功能是否通过?
- 严重Bug是否清零?
- 遗留问题是否可接受?
- 是否准备回滚方案?
- 是否安排上线后值班观察?
4.5 实战案例:一个隐藏的“库存回滚”Bug
之前测试订单取消功能时,页面上看似一切正常:用户取消未支付订单,订单状态变成了“已取消”。但我多留了个心眼,去数据库查了一下,结果发现库存表里的可售库存并没有加回来!
随后我继续验证“超时自动取消订单”,同样存在库存不恢复的问题。经开发排查,原因是:取消订单的代码只更新了订单状态,忘记调用库存回滚逻辑。
修复后,我立刻补充了以下测试场景:
- 用户主动取消未支付订单,库存恢复。
- 订单超时自动取消,库存恢复。
- 支付后退款,库存是否恢复。
- 多个用户同时抢购最后一件商品,库存不能扣成负数(并发问题)。
- 取消订单后,优惠券和积分是否正确返还。
- 订单状态和库存状态是否始终一致。
面试表达Tip: “之前测试订单取消功能时,发现用户取消未⽀付订单后,库存没有正确恢复。页面上看不太明显,所以我⼜查了数据库,发现订单状态已经变成已取消,但库存表⾥的可售库存没有加回来。后来开发确认是取消订单时只更新了订单状态,没有调⽤库存回滚逻辑。修复后,我补充了用户主动取消、超时⾃动取消、⽀付后退款、多用户抢购等场景,并且重点回归了订单状态、库存变化、优惠券返还和积分返还。”
总结: 测试不仅是点点点,更是一场运筹帷幄的战役。制定清晰的测试策略,把控好风险优先级,遇事不慌抽丝剥茧,你就能从“测试执行者”蜕变为“质量守门员”。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)