11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

如何编写正确的 Bug 报告

  • 2014-07-03
  • 本文字数:1182 字

    阅读完需:约 4 分钟

世界上没有完美的程序,只有不断完善的程序。虽然所有的程序员都不希望自己编写的程序存在 bug,但是程序员也是人,是人就难免会犯错误,所以任何复杂的程序都会出现或多或少的 BUG。BUG 是预期之外的瑕疵、错误或者缺陷。

当一个 bug 出现的时候,我们就需要编写 bug 报告并将其提交给相应的技术团队进行处理,一份格式良好、内容表述清晰的 bug 报告不仅能够帮助开发团队快速有效地处理 bug,同时还能够帮助文档编写者编写正确的勘误表 / 发布说明,帮助非技术人员、产品或程序经理了解 bug,有效减少开发人员和测试工程师之间的信息往返。

那么我们该如何编写 bug 报告?它有哪些关键要素呢?

伯乐在线上有一篇题为“如何写一份良好的缺陷(Bug)报告”的文章,该文章表示缺陷报告首先应该包含一个清晰的标题,不应该使用“应用崩溃”这种不包含足够信息的标题,标题应该包含错误消息和消息码,或者是结果的名称以及失败时你正在做的事情。bug 报告还应该包含你使用的软件的版本运行平台。接下来是描述,用简洁的语言概括出Bug 出现时你正在做的事情。从上下文开始,一步一步的描述出bug 是怎样出现的,错误信息是什么。最后还要在bug 报告中包含你的预期结果,如果方便的话提供截屏或者程序崩溃日志,并附上自己的联系方式以便于让自己提交的bug 报告及时得到答复,同时当开发团队不理解问题描述的时候还能询问你。

程序员Simon Tatham 在“如何有效地报告 Bug ”一文中表示:bug 报告的首要目的是让程序员亲眼看到错误。如果不能亲自做给他们看,那么就提供给他们能使程序出错的详细的操作步骤。详细的描述每一件事情:你看到了什么,你想看到什么,把错误消息记下来,尤其是“错误消息号”。如果程序员需要,还要准备好额外的信息,例如程序的版本号,它很可能是必需品。最好就是表述要清楚,确保你的意思不能被曲解,要做到精确,因为程序员喜欢精确。

kashyapc 则在自己的博客文章“谈论bug ”中这样写道:bug 报告应该包含一个简明的概要,需要清楚地描述问题以及按时间顺序出现的症状,需要包含版本信息实际的结果期望结果,并且需要告诉相关人员如何重现****bug。此外还需要告知测试环境的详细信息,因为很多“云”软件测试非常依赖于测试环境,更详细的信息能够减少bug 在开发人员、测试工程师等人员之间的往返。如果需要任何特定的硬件,或者修改了任何内容(例如配置文件)也需要在bug 报告中说明。最后在适当的情况下还需要提供额外的调查信息,例如你对问题的探索、相关的日志片段、_stderr_ 的脚本等。

你所在的组织或者团队是如何编写bug 报告的呢?如果你们有一些好的经验想要和大家分享,那么就联系我们吧


感谢杨赛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-07-03 23:273048
用户头像

发布了 321 篇内容, 共 110.9 次阅读, 收获喜欢 16 次。

关注

评论

发布
暂无评论
发现更多内容

Android题集四大组件之Content provider、BroadcastReceiver

android 程序员 移动开发

Android高工:细说 Android 多线程,探究原理知其所以然

android 程序员 移动开发

ARouter源码详解,androidjni开发流程

android 程序员 移动开发

ARouter系列2:源码分析,移动端跨平台开发

android 程序员 移动开发

【设计模式】第十一篇 - 装饰模式 - 孙悟空的六神装

Brave

设计模式 装饰模式 11月日更

Android高速下载器实现思路——单个任务的提速与优化,flutter二维码扫描

android 程序员 移动开发

Android:知道类加载过程面试还是卡壳?干货总结,安卓运行内存监控

android 程序员 移动开发

ASM插桩--多线程运行监测,2021Android大厂面试经验分享

android 程序员 移动开发

RabbitMQ详解——RabbitMQ服务端执行逻辑(三)

小翁牌坦克

RabbitMQ 服务端执行逻辑

Android面试抱佛脚:进程间通讯学习,从Binder使用看起

android 程序员 移动开发

Android面试题之Listview篇,2021Android面试心得

android 程序员 移动开发

Android高工面试(难度:四星(1),真的太香了

android 程序员 移动开发

Android高工面试(难度:四星,Android开发三年月薪才12K

android 程序员 移动开发

Android:手把手教你实现在XML中配置网易云歌手详情滑动效果

android 程序员 移动开发

Android:这是一份全面&详细的-热修复-学习指南,含泪狂刷Android基础面试118题

android 程序员 移动开发

BATJ面霸:程序员可是要改变世界呀!阿里巴巴3面(1),flutter下载文件

android 程序员 移动开发

Android面试心得必备技能储备详解,已拿到offer,androidhtml5开发框架

android 程序员 移动开发

Android面试必备的集合源码详解,看完之后简历上多一个技能!

android 程序员 移动开发

Android高工面试:用Glide加载Gif导致的卡顿,说一下你的优化思路

android 程序员 移动开发

Android面试官装逼失败之:关于Activity的启动模式,android界面开发工具

android 程序员 移动开发

Android面试必备!爆火超全的《Android性能优化全方面解析

android 程序员 移动开发

Android面试题之Java基础篇,安卓rxjava使用

android 程序员 移动开发

英特尔与腾讯以全方位合作 开启云数智时代新征程

科技新消息

Android面试必问:Handler、Bitmap(1),kotlin数据库框架

android 程序员 移动开发

Android面试必问:Handler、Bitmap,android插件化开源

android 程序员 移动开发

Android:2021大厂直通车面试宝典,为你的offer保驾护航

android 程序员 移动开发

Android:这是一份全面&详细的-热修复-学习指南(1),统统给你解决

android 程序员 移动开发

AOP与OOP有什么区别,谈谈AOP的原理是什么,腾讯T2大牛亲自讲解

android 程序员 移动开发

SAP云平台运行环境Cloud Foundry和Neo的区别

Jerry Wang

云平台 SAP 11月日更

Android面试:来说一说Context吧,Android中的Context跟Java有什么区别

android 程序员 移动开发

【LeetCode】最长定差子序列Java题解

Albert

算法 LeetCode 11月日更

如何编写正确的Bug报告_语言 & 开发_孙镜涛_InfoQ精选文章