测试入门:从 0 到 1 搞懂开发与 Bug

软件的⽣命周期

需求分析⸺计划⸺设计⸺编码⸺测试⸺运⾏维护

一个标准的软件生命周期,通常包含这几个阶段:

  1. 需求分析:明确用户要什么、软件要解决什么问题,是整个项目的起点。
  2. 设计阶段:产品和架构师把需求转化为可执行的方案,比如产品原型、系统架构图、数据库设计等。
  3. 编码开发:程序员根据设计文档编写代码,把方案变成可运行的程序。
  4. 测试阶段:测试人员介入,验证软件是否符合需求、有没有缺陷,确保功能正常、稳定。
  5. 部署上线:通过测试的软件部署到线上环境,交付给用户使用。
  6. 维护迭代:软件上线后,修复线上问题、更新新功能,直到软件停止服务、退役。

在整个周期里,测试并不是只存在于 "测试阶段",而是贯穿始终:需求阶段参与评审,设计阶段评估可测性,开发阶段做单元测试,上线后还要持续监控线上问题。

常⻅开发模型

瀑布模型

这是最经典的线性开发模型,流程是需求→设计→开发→测试→上线,每个阶段做完再进入下一个阶段,像瀑布一样单向流动。

优点:流程清晰,阶段明确,适合需求稳定的项目。

缺点:测试在项目后期才介入,如果前期需求有问题,后期修改成本极高,不适合需求频繁变更的项目。

敏捷模型

现在互联网项目最主流的开发模型,核心是迭代式开发、快速交付、持续反馈,它把大项目拆成多个小的迭代(Sprint),每个迭代都能交付一个可运行的软件版本。

  • 特点:拥抱需求变化,用户和测试全程参与,能快速响应反馈,降低风险。
  • 下面我们就重点拆解敏捷里的 Scrum 框架。

三个角色

角色 中文名称 核心职责 一句话定位
Product Owner (PO) 产品负责人 / 产品所有者(产品经理) 1. 定义产品愿景和目标2. 维护并排序产品待办列表(Product Backlog)3. 决定需求优先级、发布内容和节奏4. 对产品价值和 ROI 负责 产品的 "价值负责人",决定做什么
Scrum Master (SM) 敏捷教练 / Scrum 主管(项目经理) 1. 保障 Scrum 流程的落地和团队协作2. 移除团队开发中的障碍(如跨部门沟通、资源问题)3. 组织会议、引导团队实践敏捷4. 保护团队免受外部干扰 团队的 "服务式领导者",保障怎么做
Development Team 开发团队 1. 自组织、跨职能的小团队(通常 3-9 人)2. 负责将需求转化为可交付的产品增量3. 共同承诺迭代目标,完成 Sprint Backlog 产品的 "实现者",负责做出什么

五个重要会议

需求发布会议
五大重要会议
计划发布会议
每日会议
演示会议

这五个事件(会议)构成了一个完整的 Sprint 迭代周期,环环相扣,保障敏捷的透明、检查与适应。

1. Sprint(迭代本身)

  • 核心定位:整个敏捷迭代的时间盒(Timebox),通常 2-4 周,是所有其他会议的载体。
  • 目的:在固定周期内,交付一个 "潜在可发布的产品增量"。
  • 特点:周期固定,中途不能随意变更目标,除非遇到重大问题终止 Sprint。

2. Sprint Planning(Sprint 规划会)

  • 时机:每个 Sprint 开始时
  • 时长:1 小时 / 周迭代,例如 2 周迭代不超过 2 小时
  • 参与方:PO + SM + 开发团队
  • 核心议题:
    1. 确定本次 Sprint 的目标(Sprint Goal)
    2. 从产品待办列表中,挑选高优先级的需求,放入 Sprint 待办列表
    3. 团队拆解任务,预估工作量,确认能完成的范围

3. Daily Scrum(每日站会)

  • 时机:每个工作日,固定时间
  • 时长:不超过 15 分钟
  • 参与方:开发团队(PO/SM 可旁听)
  • 核心议题:每个成员回答三个问题:
    1. 昨天我完成了什么?
    2. 今天我计划做什么?
    3. 我遇到了什么障碍?
  • 目的:快速同步进度,暴露问题,对齐目标,而非汇报工作。

4. Sprint Review(Sprint 评审会)

  • 时机:每个 Sprint 结束前
  • 时长:1 小时 / 周迭代
  • 参与方:PO + SM + 开发团队 + 相关干系人(客户、业务方)
  • 核心动作:
    1. 团队向干系人演示本次 Sprint 交付的产品增量
    2. 收集反馈,确认需求是否符合预期
    3. 调整产品待办列表的优先级
  • 目的:验证交付成果,对齐业务价值,获取用户反馈。

5. Sprint Retrospective(Sprint 回顾会)

  • 时机:Sprint 评审会结束后
  • 时长:1 小时 / 周迭代
  • 参与方:PO + SM + 开发团队
  • 核心议题:
    1. 本次 Sprint 中,哪些做得好?
    2. 哪些地方可以改进?
    3. 制定具体的改进计划,在下一个 Sprint 落地
  • 目的:持续改进团队的流程、协作和效率,是敏捷 "持续优化" 的关键。

Scrum是敏捷模型中的⼀种,⼜称为迭代式增量软件开发模型。 在scrum模型中,主要有三个⻆⾊和五个重要会议

scrum的基本流程如上图所⽰:

螺旋模型

增量模型、迭代模

测试模型

V模型

W模型(双V模型)

BUG篇

bug的概念

简单来说,Bug 就是软件中不符合需求、影响用户正常使用的缺陷。

⼀个计算机bug指在计算机程序中存在的⼀个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障 (fault),这些bug使程序⽆法正确的运⾏。Bug产⽣于程序的源代码或者程序设计阶段的疏忽或者错 误

描述bug的基本要素:问题出现的版本、问题出现的环境、问题出现的步骤(入口不一样,结果也不一样)、预期结果、实际结果

bug级别

通过定义bug的级别,能够明确看出问题的严重程度。⼯作中开发⼈员通常需要按照bug的级别来分配 优先级来处理bug,除此之外,通过bug级别也能够体现出开发⼈员的开发质量。

bug级别⼀般分为:崩溃、严重、⼀般、次要

bug的⽣命周期

Bug 生命周期:从测试发现新建,开发确认开启、进行修复,测试回归复测,验证通过则关闭;未通过则重新打开;不是 Bug 则置为无效;暂不修复则延后处理。

一个 Bug 从被发现到被解决,会经历完整的状态流转,这也是面试和工作中必须掌握的核心知识点:

**新建(New)**测试发现缺陷,刚提交,还没人处理。

**指派 / 确认(Open/Active)**开发负责人接收、确认这是真 Bug,准备修复。

**修复中(Fixed/Resolved)**开发改完代码,标记已修复,等待测试回归验证。

**复测(Retest)**测试人员进入环境,重新测试这个 Bug。

通过 / 关闭(Closed) 复测没问题,Bug 彻底修好,关闭

不通过 / 重新打开(Reopen) 复测没修好、还有问题,重新打开,退回开发再改。

**暂缓 / 延后(Deferred)**不是严重 Bug,当前版本不急着修,放到后续版本再改。

**无效 / 作废(Invalid)**不是 Bug,是操作问题、理解误差、环境问题,直接作废关闭。

与开发产⽣争执怎么办(⾼频考题)

当和开发因 Bug 产生争执时,我会按五步处理:

第一,先自查,核对 Bug 描述、复现步骤、环境日志是否完整清晰,信息不全就主动当面补充沟通;

第二,站在用户角度说明 Bug 对业务和用户体验的影响,定级有理有据;

第三,提升自身业务技术能力,提 Bug 的同时给出合理优化思路,不强行指挥开发;

第四,保持友好理性沟通,就事论事;

第五,若协商无果,就发起Bug 评审会,拉上测试、开发、产品三方共同评估影响、修改风险和最终处理方案。

相关推荐
专注VB编程开发20年2 天前
Windows API 所有老式结构体4字节对齐,但是64位VBA,Twinbasic弄成了8字节对齐,大BUG
windows·bug
IT枫斗者2 天前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
半天法师3 天前
Bug 记录:UE 结构体转 JSON 时 Key 字段大小写异常 (Editor 与打包后表现不一致)
ai·ue5·json·bug
张小俊_3 天前
WPF 跨线程 UI 更新与硬编码赋值引发的 Bug 排查
c#·bug·wpf
鸿儒5174 天前
记录一个C++ Windows程序移植到Linux系统的bug
开发语言·c++·bug
Python私教5 天前
HermesAgent 终端工具 Windows 兼容性修复实战:两个 Bug 的排查与解决
windows·bug
瀚高PG实验室5 天前
pgroonga全文检索插件的BUG
数据库·postgresql·bug·瀚高数据库
¥-oriented6 天前
记录使用C#编程中遇到的一个小bug
c#·bug
MaraSun7 天前
Deepseek 的一个bug
bug·deepseek