Bug报告示例:一份可直接套用的缺陷记录范例

一份合格的Bug报告通常包含标题、环境、复现步骤、预期结果、实际结果、严重程度与优先级、附件证据和补充说明八个部分。本文给出一份填写完整的示例,并逐项解释写法依据,帮助读者把这套结构迁移到自己的缺陷记录中。示例中的产品、版本、设备和操作路径均为虚构演示情景,不代表真实项目数据或实测结果。



要点总览(TL;DR)


  • 一份完整的Bug报告包含标题、环境、复现步骤、预期结果、实际结果、严重程度与优先级、附件证据、补充说明八个部分,本文给出一份填写完整的示例。
  • 标题写清“在什么条件下、哪个功能、出现什么异常”,复现步骤按可执行顺序编号并写明输入值与时间条件,预期与实际结果分开写。
  • 严重程度只描述影响范围,优先级描述处理顺序;先定严重程度再结合版本计划定优先级,两个字段各管一件事。
  • 示例中的产品、版本、设备和操作路径均为虚构演示情景,适用于常规功能缺陷记录;服务事件受理与分级标准制定属于其他主题。


示例目标:这份Bug报告要解决什么问题


这份示例要回答一个具体问题:一份信息完整的缺陷记录长什么样。很多Bug报告的问题不在描述长短,而在关键信息缺失——测试人员写了“登录有问题”,开发人员打开后不知道在哪个环境、用什么账号、点了哪几步。示例的作用是把八个字段填满、填自洽,让接手的人不必先来一轮追问就能开始定位。


演示情景设定如下:虚构产品“星舟协作平台”,虚构版本 V3.2.1,虚构操作路径为“登录页 → 输入手机号 → 获取验证码 → 提交登录”。缺陷现象是验证码在有效期内被提示失效。这个情景贴近常见的登录类功能缺陷,字段之间的因果关系容易看清,便于读者对照理解。


读者可以从示例中迁移三样东西:一是字段结构,即一份报告需要覆盖哪些信息块;二是写法,即每个字段用什么句式、写到什么颗粒度;三是判断依据,即严重程度和优先级为什么取这个值。示例本身不需要照抄,需要照抄的是填写时的思考顺序。



完整Bug报告示例:登录页验证码失效


以下是一份填写完整的Bug报告示例,各字段内容相互对应,可直接作为填写模板参照。


字段 填写内容
标题 登录页输入正确验证码后提示“验证码已失效”,导致手机号登录失败
环境信息 产品版本:星舟协作平台 V3.2.1(演示版本号);设备:某品牌手机,6.1英寸屏;操作系统:Android 13;浏览器/客户端:星舟 App Android 端;网络:Wi-Fi;账号类型:未注册手机号与已注册手机号均出现
复现步骤 1. 打开星舟 App,进入登录页;2. 选择“手机号登录”;3. 输入手机号 138****0000(演示号码);4. 点击“获取验证码”;5. 在收到短信后 30 秒内输入 6 位验证码;6. 点击“登录”
预期结果 验证码校验通过,进入工作台首页
实际结果 页面提示“验证码已失效,请重新获取”,停留在登录页;重新获取后再次输入,仍在 30 秒内提示失效
复现频率 连续尝试 5 次,5 次均复现
严重程度 严重:手机号登录主路径不可用,影响该登录方式下的全部用户
优先级 高:登录是进入产品的前置环节,需在本次迭代内处理
附件与证据 登录失败页面截图 1 张;操作录屏 1 段(约 20 秒,含获取验证码到提示失效的完整过程);客户端日志片段 1 份(含验证码校验请求与返回码)
补充说明 同一账号在网页端使用验证码登录正常,问题仅出现在 Android 客户端;iOS 客户端未验证;关联需求为“手机号快捷登录改版”

这份示例的完整之处在于:开发人员读到标题知道问题类别,读到环境知道去哪里复现,读到步骤可以照着操作,读到预期与实际知道偏差在哪,读到严重程度和优先级知道该多快处理,附件则提供了文字之外的直接证据。补充说明里的“网页端正常”是一条有价值的对比信息,它把排查范围缩小到了客户端侧。



逐项解释:每个字段为什么这样写


下面逐字段说明示例中的写法选择。同样的字段,写法不同,接手人的处理成本差别很大。


字段 示例写法要点 判断依据与常见问题
标题 条件(输入正确验证码后)+ 功能(登录页)+ 异常(提示已失效、登录失败)+ 影响(手机号登录不可用) 标题是列表页和搜索结果里唯一可见的信息,写清条件、功能、异常三个要素才能被检索到。常见问题是只写“登录bug”或“验证码有问题”,同类缺陷多了以后无法区分
环境信息 版本、设备、系统、客户端、网络、账号类型逐项列出 环境决定能否复现。同一缺陷在不同系统或客户端上表现可能不同,缺一项就可能让开发在错误的环境里白试。账号类型也重要,未注册与已注册用户走的分支往往不同
复现步骤 按操作顺序编号,每步一个动作,包含具体输入值和时间条件 步骤要能被另一个人照着执行。“30 秒内输入”是时间条件,去掉它复现可能失败。常见问题是把多个动作挤在一行,或省略输入值导致无法还原
预期结果 一句话写清正确行为:校验通过并进入首页 预期结果是判断“这是不是缺陷”的基准。写得太笼统(如“应该能登录”)会让争议落在需求理解上,而不是缺陷本身
实际结果 写清页面提示原文、停留位置,以及重复尝试的表现 实际结果要与预期结果一一对应。引用界面原文提示比转述更准确;补充“重新获取后仍失效”说明问题稳定存在,而非偶发
严重程度 严重,理由是主路径不可用、影响该登录方式下全部用户 严重程度只描述影响范围与破坏力,不描述处理顺序。判断时看受影响的用户面、功能重要性和是否有绕行方案
优先级 高,理由是登录为前置环节,需在本次迭代内处理 优先级描述处理顺序,取决于版本计划、发布节点和资源安排。同一缺陷在不同迭代里优先级可以变化,严重程度通常不变
附件与证据 截图、录屏、日志各一份,注明内容与时长 证据按“能证明现象”取舍,不必把所有材料都传上去。录屏适合展示时序性操作,日志适合展示请求与返回,截图适合定格提示文案
补充说明 对比网页端表现、标注未验证范围、关联需求 补充说明放无法归入上述字段但有助于定位的信息。写明“iOS 未验证”是诚实的边界交代,避免开发误以为全端都有问题

严重程度与优先级的区分值得单独强调。示例中严重程度取“严重”,依据是影响范围;优先级取“高”,依据是处理时机。如果这个缺陷出现在一个即将下线的旧版本上,严重程度仍是严重,优先级可能降为中。反过来,一个界面文案错别字严重程度低,但如果出现在对外发布的引导页上,优先级可能被临时调高。两个字段各管一件事,混在一起写会让排期失去依据。


当缺陷记录进入团队的工作项系统后,字段结构会直接影响后续流转。以ONES Project为例,其缺陷管理场景支持一键提交Bug至对应项目或迭代,并跟踪修复情况;ONES TestCase中未通过的用例也可快速创建缺陷任务,在测试与研发团队间流转。这意味着示例中的环境、复现步骤、预期与实际结果等字段,最好在提交环节就填写完整,而不是等到开发追问时再补。字段的具体配置项以团队实际使用的系统为准。



可迁移规律:换一个缺陷也能照着写


示例针对的是登录类缺陷,但填写规律适用于大多数常规功能缺陷。把规律提炼出来,换一个功能模块也能照着写。


标题的通用形式是“在什么条件下 + 哪个功能 + 出现什么异常 + 造成什么影响”。影响部分在标题过长时可以省略,但条件、功能、异常三个要素建议保留。例如“在弱网环境下 + 附件上传 + 进度条卡在 99% + 文件实际未上传成功”。


复现步骤的通用结构是:起点(从哪个页面或状态进入)→ 前置条件(账号、数据、权限)→ 操作序列(编号的动作)→ 触发点(哪一步之后出现异常)。每一步只写一个动作,涉及输入值时写出具体值或取值范围。


严重程度与优先级的判断可以按顺序进行:先判断影响范围(多少用户、哪个功能、有无绕行方案)定严重程度,再结合版本计划和处理资源定优先级。先定严重程度再定优先级,可以避免因为“最近很忙”而把严重问题写轻。


信息不足时,补充提问要指向具体字段,而不是笼统地问“能再详细点吗”。可以这样问:“这个问题在网页端是否也能复现?”“使用的账号是未注册还是已注册?”“提示原文是什么?”每个问题对应一个待填字段,回答后记录即可补齐。


第二个简短示范,换一个不同缺陷类型——列表导出功能:


  • 标题:在筛选结果超过 500 条时导出 Excel,文件仅包含前 100 条数据
  • 环境:星舟协作平台 V3.2.1(演示版本);Windows 11;Chrome 120;网页端
  • 复现步骤:1. 进入“任务列表”页;2. 将筛选条件设为“全部项目”;3. 确认结果数为 500 条以上;4. 点击“导出 Excel”;5. 打开下载的文件并核对行数
  • 预期结果:导出文件包含全部筛选结果
  • 实际结果:导出文件仅包含前 100 条,第 101 条起缺失
  • 严重程度:严重,数据不完整可能导致基于导出结果的决策出错;优先级:高,需在本次迭代内修复
  • 附件:导出文件 1 份、筛选结果页截图 1 张
  • 补充说明:筛选结果少于 100 条时导出正常;未测试其他导出格式

这个示范沿用了同一套字段和判断顺序,说明规律可以跨缺陷类型使用。区别只在于证据形式:登录类缺陷靠录屏和日志,数据导出类缺陷靠导出文件本身。



适用边界:示例不能覆盖的情况


这套示例适用于常规功能缺陷的记录,即用户或测试人员在使用产品功能时发现的、可通过操作步骤复现的异常。它帮助把“现象”整理成“可处理的记录”,但不负责缺陷之外的管理动作。


服务事件的受理与升级属于服务事件与问题管理的范围。当问题表现为线上服务中断、需要按服务级别响应和通知时,记录的重点是影响范围、响应时限和恢复过程,与功能缺陷的字段结构不同。


严重程度分级标准的制定属于缺陷分类与分级主题。本文示例给出了一个具体取值的理由,但一个团队如何划分等级、每级对应什么响应要求,需要单独设计分级体系,不能直接从单个示例推导。


部分缺陷类型需要补充额外信息。涉及安全的缺陷,建议补充影响面判断、复现所需权限和是否已在外部暴露;涉及数据问题的缺陷,建议补充数据范围、时间窗口和是否可回滚;涉及性能的缺陷,建议补充数据量、并发条件和耗时数据。这些补充项不改变八个基本字段的结构,而是在其基础上增加证据维度。


最后需要再次说明:本文所有产品名、版本号、设备型号、账号和操作路径均为演示情景,用于展示填写方式,不代表真实项目数据、实测结果或客户案例。读者在实际填写时,应以自己项目的真实环境和可核验的证据为准。



常见问题


复现步骤写到多细才算够?


判断标准是另一个人能否照着步骤独立复现。起点页面、前置条件(账号、权限、数据)、每一步动作和关键输入值都要写出来,涉及时间窗口或数据量的条件也要注明,比如“30 秒内输入验证码”“筛选结果超过 500 条”。如果开发照着操作后还要回来问“你用的哪个账号”“点的是哪个按钮”,说明步骤还缺信息。


同一个缺陷,严重程度和优先级可以一个高一个低吗?


可以,而且这种情况很常见。严重程度看影响范围与破坏力,比如主路径不可用、影响全部用户;优先级看处理顺序,取决于版本计划、发布节点和资源安排。一个即将下线旧版本上的严重缺陷,严重程度仍是严重,优先级可能降为中;一个对外引导页上的文案错误,严重程度低,优先级可能被临时调高。两个字段分开判断,排期才有依据。


偶发缺陷复现不了,Bug报告还值得提交吗?


值得提交,但要把“偶发”本身作为事实写清楚。记录已观察到的次数与比例、发生时的环境与操作路径、是否有日志或录屏,并在补充说明里标注尚未确认的触发条件。这样接手人知道问题真实存在,也能根据已有线索设计排查方向。把偶发缺陷写成稳定复现,反而会误导排查。


团队已经有缺陷模板,还需要按这套示例逐字段填写吗?


模板决定有哪些字段,示例提供的是每个字段写到什么颗粒度。团队模板字段较少时,优先保证标题、环境、复现步骤、预期与实际结果这几项写完整;模板字段更多时,按模板要求补充,但不必为了填满而堆砌无关信息。示例中的写法规律可以迁移,字段清单以团队实际使用的模板为准。


缺陷提交到工作项系统后,还需要在报告里保留完整信息吗?


需要。缺陷进入系统后会在测试、研发、验收等环节多次流转,每个接手人都可能只看到记录本身。以ONES Project为例,其缺陷管理场景支持一键提交Bug至对应项目或迭代并跟踪修复情况,ONES TestCase中未通过的用例也可快速创建缺陷任务在测试与研发团队间流转,这意味着环境、复现步骤、预期与实际结果等信息最好在提交环节就填写完整,减少后续追问。字段的具体配置以团队实际使用的系统为准。