22.1 Bug 报告流程

规范的缺陷(Bug)报告流程是保障软件质量与维护者及用户协作的关键环节,不仅能提高问题解决效率,还能促进社区的知识共享与技术进步。

技巧

在提交 Bug 报告前,建议先发送到邮件列表咨询,以确认问题性质并避免重复报告浪费社区人力资源。

FreeBSD 缺陷(Bug)报告系统位于 https://bugs.freebsd.org/bugzillaarrow-up-right,提供标准化的缺陷跟踪与管理流程,是 FreeBSD 项目质量保障的核心基础设施。

遇到问题时,应按以下流程处理:

首先,确认问题不是由用户自身的操作或配置引起的。可采取以下排查步骤:

  • 查阅常见问题列表、文档或手册等资料

  • 使用搜索引擎搜索相关信息

  • 搜索以往邮件列表,查看是否有人报告过类似问题

  • 在邮件列表中提问

如果在刚升级的系统中遇到问题,请查看 /usr/src/UPDATING 文件的说明;如果是刚升级的第三方软件,请查看 /usr/ports/UPDATING/usr/ports/CHANGES 文件。

/usr/
├── src/
   └── UPDATING # 系统升级说明文件
├── ports/
   ├── UPDATING # Ports 升级说明文件
   └── CHANGES # Ports 变更记录文件
└── var/
    └── log/
        └── messages # 系统日志文件

然后,判断这是否是 bug。如果这个问题可以用问句来表示(例如"我怎么做……,哪里有……"),那么请先去 FreeBSD 邮件列表询问。

如果确认这是缺陷(bug),请核实系统版本是否仍受支持,否则可能无人处理。

需要确认该缺陷(bug)是否已被修复:

  • 检查系统版本,确认是否有更新和补丁

  • 搜索 FreeBSD bug 管理系统,确认是否有人报告过类似的问题

如果没有人报告过类似问题,那么就可以提交报告。

以下类型的问题不应提交:

  • 某个应用已有新版本(通常会有自动通知告知维护者)

  • 对于无人维护的软件,如果没有补丁,仅报告缺陷(bug)可能不会得到处理;若想维护该软件,请提交相关请求

  • 如果不能使问题复现,那么别人也很难解决

  • 提出增加新功能的请求(可以在 FreeBSD 邮件列表中讨论,但建议自行实现后再提交)

决定问题应报告给谁:

  • 对于基本系统组件、文档或网站问题,请直接向 FreeBSD 开发者提交报告

  • 对于那些随系统发行但由他人维护的软件,除非能确定问题与系统无关,否则也请提交给 FreeBSD 开发者

  • 对于那些第三方软件,除非能确定问题与系统有关,否则请提交给软件开发者

报告的书写提示:

  • 不要将“Summary”栏留空,因为它将作为邮件的标题

  • “Summary”要有代表性,简明扼要

  • 如果有补丁,一定要上传

  • 注明系统版本和计算机架构,如果是自行编译的软件,还需说明编译设置

  • 如果问题可以复现,注明问题产生的条件

  • 如果是内核问题,请准备以下信息:硬件配置、内核配置、是否开启调试选项、错误信息或 /var/log/messages,并声明已查看 /usr/src/UPDATING 但问题未解决(因为有人会问),以及是否可以运行其他内核

  • 如果是第三方软件问题,请准备好:安装的软件,覆盖了 bsd.port.mk 的默认设置的所有环境变量,声明已经看过了 /usr/ports/UPDATING 并没有解决问题(因为总有人会问)

  • 每份报告应只包含一个问题,除非多个问题之间有紧密关联

  • 对有争议的问题要慎重,最好先讨论一下

  • 注意排版格式,尤其是在复制粘贴内容时

  • 记得备份报告,以防网络状况不佳导致提交失败

  • 保持礼貌,报告的接收者大多是无偿志愿者,请给予理解

下面介绍 Bug 报告的填写:

注意,邮件是公开的,可能会收到骚扰,请采取防护措施或使用公共邮箱。

  • Summary:梗概,简明扼要

  • Severity:严重程度,只影响我/影响某些人/影响许多人,不要过高评价

  • Category:类别

    • kern 内核、库、内置驱动(手册 2-4),除了 USB 子系统、多线程库之外

    • bin 内置程序

    • ports 第三方程序

    • conf 配置文件或者启动脚本(手册 5)

    • docs 文档或网站

    • usb USB 子系统

    • threads 多线程库

    • standards 标准遵循

    • (架构名称)与架构有关

    • misc 其他,或者真的找不出来问题(最好先问问邮件列表)

  • Environment 环境,包括系统版本、程序版本、系统配置等

  • Description(问题描述):内容应完整、详细,不要加入个人猜测

FreeBSD 开发人员有限,因此缺陷(bug)报告可能长时间无人处理,也不一定会被解决。报告接收者大多是志愿者,因此不应过于苛求。如果可能,请先自行解决问题,再提交到上游。

技巧

FreeBSD 的 GrimoireLab 监控面板arrow-up-right 提供了 FreeBSD 项目目前的缺陷(bug)报告状态概览,展示项目开发活动与社区贡献的数据分析,可以帮助我们直观地了解情况。

课后习题

  1. 查找一个已提交的 FreeBSD 内核 Bug 报告,分析其包含的信息完整性,并复现其报告的过程尝试解决。

  2. 选择 GrimoireLab 监控面板的某类指标,分析其数据变化趋势,并讨论该趋势如何反映 FreeBSD 社区的协作模式。

  3. 设计一个简单的测试场景,模拟发现一个 ports 软件缺陷,准备完整报告材料并在本地测试提交流程。

最后更新于