软件缺陷(Defect),常常又被叫做Bug。 所谓软件缺陷,即为计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。
bug标题
一、Bug 标题的「三段式」黄金结构
公式:
[模块/功能] + 具体现象 + 触发条件(可选)
关键要素:
- 模块定位:直接关联代码库或功能模块(如
[支付网关]
、[用户注册]
) - 现象描述:用技术语言说明错误表现(如
HTTP 500 错误
、内存泄漏
) - 条件限定:标注特定场景或边界值(如
iOS 17.4
、并发用户>1000时
)
示例对比:
✅ 合格标题:
[订单结算] 使用多张满减券时金额计算错误(总金额>500元必现)
❌ 不合格标题:
结算金额不对
二、6 种高频场景的标题优化方案
1. 功能逻辑错误
✅ 规范写法:
[消息推送] 用户屏蔽群组后仍接收@全体成员通知(服务端过滤逻辑失效)
✅ 包含要素:
- 模块:消息推送
- 现象:屏蔽后仍接收通知
- 条件:@全体成员
- 根因线索:服务端过滤失效
2. 界面交互问题
✅ 规范写法:
[个人中心] 深色模式下编辑按钮图标不可见(对比度低于 WCAG 标准)
✅ 技术关键词:
深色模式
、对比度
、WCAG
(直接关联开发修复标准)
3. 性能问题
✅ 规范写法:
[商品搜索] 关键词含特殊字符时接口响应时间>5s(%符号触发全表扫描)
✅ 数据化表达:
>5s
(量化指标)、全表扫描
(指向SQL优化点)
4. 兼容性问题
✅ 规范写法:
[文件上传] Safari 15.1 浏览器无法拖拽上传.zip文件(macOS Monterey)
✅ 环境精准定位:
浏览器版本 + 操作系统版本 + 文件类型
5. 安全性漏洞
✅ 规范写法:
[API鉴权] /userinfo 接口未校验JWT令牌iss字段导致越权访问
✅ 漏洞细节:
iss字段
(具体参数)、越权访问
(风险等级)
6. 数据一致性错误
✅ 规范写法:
[库存同步] 秒杀活动结束后数据库库存未回滚(超卖3件商品)
✅ 影响量化:
超卖3件
(明确业务损失)
三、标题编写的「三要三不要」原则
✅ 必须遵守的「三要」
- 要包含技术术语:
- 使用
NullPointerException
而非 "程序报错" - 使用
主从同步延迟
而非 "数据没更新"
- 使用
- 要体现复现规律:
- 标注
连续操作5次后必现
或概率30%
- 标注
- 要关联代码位置(可选):
- 标注
(UserService.java:87)
或API:/v2/payment
- 标注
🚫 严格避免的「三不要」
- 不要用模糊代词:
- ❌ "那个功能有问题" → ✅ "[语音转写] 60秒以上音频转译失败"
- 不要省略关键条件:
- ❌ "图片上传失败" → ✅ "[图床服务] 上传10MB以上PNG图片返回413错误"
- 不要混搭多个问题:
- ❌ "登录闪退和支付报错" → 拆分为两个独立Bug
bug等级
一、Bug 严重等级划分(按影响程度降序排列)
致命(Critical/Blocker)
- 导致系统崩溃、死机、数据丢失或核心功能完全失效
- 典型场景:
- 支付接口崩溃导致交易中断 15
- 数据库死锁引发用户数据损坏 45
- 内存泄漏引发系统卡顿至无响应 68
严重(Major)
- 主要功能未实现或存在严重偏差,但系统仍可运行
- 典型场景:
- 订单提交后未生成唯一流水号 26
- 核心算法计算错误导致价格偏差 10% 以上 36
- 接口超时未返回数据(响应时间 >10秒) 38
一般(Minor)
- 次要功能缺陷或界面交互问题
- 典型场景:
- 用户头像上传后预览变形 48
- 表单必填项未标注红色星号 36
- 分页控件页码显示错位 8
提示(Trivial/Suggestion)
- 不影响功能使用的体验优化项
- 典型场景:
- 按钮文字存在错别字(如“登陸”应为“登录”) 68
- 夜间模式对比度过低导致阅读困难 8
- 页面加载动画帧率不足 3
Bug 类型分类
功能逻辑错误
- 需求实现偏差(如搜索功能未过滤敏感词) 38
- 业务流程断裂(如退款申请无法提交至风控系统) 8
性能问题
- 高并发场景下接口吞吐量下降 50% 36
- 内存占用持续增长未释放(每小时增加 10MB) 8
界面缺陷
- 多语言环境下文本溢出容器 8
- 深色模式部分图标未反色 8
兼容性问题
- iOS 17.4 系统下地图控件渲染异常 8
- Chrome 120+ 版本浏览器表格布局错乱 68
安全性漏洞
- SQL 注入风险(如未过滤
' OR 1=1 --
) 18 - JWT 令牌未设置过期时间 8
- SQL 注入风险(如未过滤
优先级定义(按修复紧急程度排序)
优先级 | 响应标准 | 对应场景示例 | 来源 |
---|---|---|---|
P0 | 需立即修复(24小时内) | 线上支付功能完全瘫痪 | 13 |
P1 | 下一版本必须修复 | 核心功能缺失导致用户流失 | 34 |
P2 | 可排期至后续迭代修复 | 非核心页面加载速度慢于 3 秒 | 34 |
P3 | 建议优化但不强制修复 | 页面 footer 版权信息年份未更新 | 37 |
实际结果、预期结果
一、复现步骤的「三层递进式」写法
原始步骤(需优化)
textCopy Code
1. 打开APP 2. 进入个人中心 3. 点击设置 4. 修改昵称为"测试_User123" 5. 返回个人主页 6. 昵称未更新
优化后版本
textCopy Code
[前置条件] 账号已完成手机号+邮箱绑定 [操作链路] 1. 触发数据修改: - 访问路径:首页 > 个人中心 > 账号设置 - 修改字段:昵称 → 输入"Test#2024"(包含特殊字符) - 点击保存 2. 验证数据同步: - 返回个人主页 - 退出重新登录 - 调用API检查用户表`display_name`字段
优化要点:
- 区分操作阶段(修改 → 验证)
- 包含边界值测试数据(特殊字符)
- 增加技术验证手段(API查询)
二、预期结果 vs 实际结果的「数据化对比」模板
标准写法
维度 | 预期结果 | 实际结果 |
---|---|---|
界面反馈 | 显示绿色Toast提示"修改成功" | 无任何提示 |
数据存储 | 数据库user_profile 表nickname 字段更新 |
数据库值未变更(Last_modified=旧时间戳) |
系统联动 | 用户搜索接口返回新昵称 | 接口仍返回原昵称 |
优势:
- 多维度验证(前端+后端+接口)
- 使用技术字段名精准定位问题层级
三、错误案例 vs 规范案例对照表
1. 复现步骤对比
错误案例:
textCopy Code
1. 随便操作几次就崩溃了
规范案例:
textCopy Code
[压力测试场景] 1. 在1分钟内连续执行: - 快速切换商品分类标签(>20次) - 上下滑动页面(每秒3次) 2. 观察内存占用(Android Profiler工具监控)
2. 实际结果对比
错误案例:
textCopy Code
实际结果:页面看起来不对劲
规范案例:
textCopy Code
实际结果: 1. 布局坍塌:价格标签与购买按钮重叠 2. 控制台报错:`TypeError: Cannot read 'price' of null` 3. 内存峰值:从200MB升至850MB后闪退
总结:
完整描述一个 Bug 所需的关键步骤和内容要素
一、描述 Bug 的必备操作
明确标题
✅ 格式:[模块名称] + 问题现象
✅ 示例:[登录模块] 输入正确验证码后仍提示"验证码错误"
填写基础信息
- 测试环境(如:浏览器版本/设备型号/操作系统)
- 发现时间
- 测试人员
- 关联需求或任务编号
详细复现步骤
✅ 要求:清晰、可复现、无歧义
✅ 示例:textCopy Code
1. 打开APP,点击"登录"按钮 2. 输入手机号 138‌****‌1234 3. 点击"获取验证码",收到短信验证码"123456" 4. 输入验证码并点击"确认"
预期结果 vs 实际结果
- 预期结果:根据需求文档应出现的正确行为
- 实际结果:当前观察到的错误现象
补充信息
- 优先级(P0/P1/P2/P3)
- 严重程度(致命/严重/一般/建议)
- 附件(截图/日志/录屏)
- 是否必现(100%复现/偶现)
二、完整 Bug 示例
标题
[支付模块] 使用支付宝付款成功后订单状态仍显示"待支付"
环境信息
- 设备:iPhone 14 Pro / iOS 16.4.1
- APP版本:v2.3.0
- 网络:WiFi
- 测试时间:2023-10-20 14:30
复现步骤
- 选择商品加入购物车
- 进入结算页,选择"支付宝"支付方式
- 跳转至支付宝APP完成指纹支付
- 返回商户APP查看订单详情
预期结果
订单状态应更新为"已支付",生成交易流水号实际结果
- 订单状态仍显示"待支付"
- 控制台出现错误日志:
ERR_CODE: 5003, Payment callback failed
附件
- 支付宝支付成功截图
- 商户APP订单状态截图
- 抓包日志文件(附加网盘链接)
优先级/严重性
- 优先级:P0(阻塞核心流程)
- 严重性:致命
备注
- 该问题在Android端同样存在
- 支付回调接口响应时间为8秒(超过正常3秒阈值)
三、高质量 Bug 报告要点
- 客观描述:避免主观判断(如:"这个功能设计得很烂")
- 最小化复现:排除无关操作步骤
- 数据支撑:提供请求参数、错误日志等关键信息
- 版本控制:明确出现问题的代码版本
- 关联分析:说明是否影响其他模块
通过规范化的 Bug 描述,可有效提升开发修复效率,减少沟通成本。建议使用 Jira、TAPD 等专业工具进行跟踪管理。