[%# 1.0@bugzilla.org %] [%# The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # The Initial Developer of the Original Code is Netscape Communications # Corporation. Portions created by Netscape are # Copyright (C) 1998 Netscape Communications Corporation. All # Rights Reserved. # # Contributor(s): Eli Goldberg # Gervase Markham # Claudius Gayle # Peter Mock # Chris Pratt # Tom Schutter # Chris Yeh #%] [% PROCESS global/variables.none.tmpl %] [% INCLUDE global/header.html.tmpl title = "$terms.Bug Writing Guidelines" %]

Why You Should Read This

Simply put, the more effectively you report [% terms.abug %], the more likely an engineer will actually fix it. This tutorial teaches novice and intermediate [% terms.bug %] reporters how to write effective [% terms.bug %] reports.

What Makes a [% terms.Bug %] Report Useful?

Useful [% terms.bug %] reports get [% terms.bugs %] fixed. A useful [% terms.bug %] report has two qualities:

  • It's Reproducible. Developers usually prefer to fix bugs they can actually see. If an engineer can't reproduce the [% terms.bug %], she'll probably stamp your [% terms.bug %] report "WORKSFORME" or "INVALID" and move on to the next.

  • It's Specific. The quicker an engineer isolates the [% terms.bug %] to a specific area, the more likely she'll fix it. (If she must decipher your [% terms.bug %], she'll waste time cursing you instead.)

Before You Start...

  1. Before you enter your [% terms.bug %], use [% terms.Bugzilla %]'s search page to determine whether your [% terms.bug %] is a known [% terms.bug %].
  2. Reproduce your [% terms.bug %] using a recent build. Engineers tend to be most interested in problems affecting the code base on which they're actively working. The [% terms.bug %] you're reporting may already be fixed.

Found a new [% terms.bug %] in a recent build? Report it.

  1. From [% terms.Bugzilla %]'s main page, choose "Enter a new [% terms.bug %]".
  2. Select the product in which you've found a [% terms.bug %].
  3. Enter your e-mail address and password, and click the "Log in" button. (If you don't have a password, follow the on-screen instructions to obtain one.)
  4. Fill out the form. Here's what it all means:

Where did you find the [% terms.bug %]?

Product: In which product did you find the [% terms.bug %]?
You just specified this on the last page, so you can't edit it here.

Version: In which product version did you find the [% terms.bug %]?
(If applicable)

Component: In which component does the [% terms.bug %] exist?
[% terms.Bugzilla %] requires that you select a component to enter a [% terms.bug %]. (Click the Component link to see a description of each component.)

OS: On which operating system (OS) did you find this [% terms.bug %]? (e.g. Linux, Windows XP, Mac OS X.)
If the [% terms.bug %] happens on all operating systems, choose "All". Otherwise, select the OS, or "Other" if your OS isn't listed.

How important is the [% terms.bug %]?

Severity: How damaging is the [% terms.bug %]?
This item defaults to 'normal' severity. (Click on the Severity link to see a description of each severity rating.

Who will be following up on the [% terms.bug %]?

Assigned To: Which engineer should be responsible for fixing this [% terms.bug %]?
[% terms.Bugzilla %] automatically assigns the [% terms.bug %] to a default engineer upon submitting [% terms.abug %] report. If you'd prefer to directly assign the [% terms.bug %] to someone else, enter the person's e-mail address. (To see the list of default engineers for each component, click the Component link.)

Cc: Who else should receive e-mail updates on changes to this [% terms.bug %]?
List the e-mail addresses of other people who should receive an update whenever the [% terms.bug %] report changes. Enter as many e-mail addresses as you'd like, separating them by spaces or commas. Important: E-mail updates are only sent to people who have [% terms.Bugzilla %] accounts.

What else can you tell the engineer about the [% terms.bug %]?

Summary: How would you describe the [% terms.bug %], in approximately 60 or fewer characters?
A good summary should quickly and uniquely identify [% terms.abug %] report. If an engineer can't identify your [% terms.bug %] by its summary, she may ignore it when skimming through a 10-page [% terms.bug %] list.

A useful summary is "PCMCIA install fails on Toshiba Tecra 780DVD w/3c589C". Examples of bad summaries would be "Software fails" or "install problem".

Description:
Provide a detailed problem report. A [% terms.bug %]'s recipients usually expect the following information:

Overview Description: More detailed restatement of summary.

Drag-selecting any page crashes Mac builds in NSGetFactory

Steps to Reproduce: Minimized, easy-to-follow steps that will trigger the [% terms.bug %]. Include any special setup steps.

1) View any web page. (I used the default sample page,
resource:/res/samples/test0.html)

2) Drag-select the page. (Specifically, while holding down 
the mouse button, drag the mouse pointer downwards from any 
point in the browser's content region to the bottom of the 
browser's content region.)                   

Actual Results: What the application did after performing the above steps.

The application crashed. Stack crawl appended below from MacsBug.

Expected Results: What the application should have done, were the [% terms.bug %] not present.

The window should scroll downwards. Scrolled content should be selected. 
(Or, at least, the application should not crash.)

Build Date & Platform: Date and platform of the build in which you first encountered the [% terms.bug %].

Build 2006-08-10 on Mac OS 10.4.3

Additional Builds and Platforms: Whether or not the [% terms.bug %] takes place on other platforms (or browsers, if applicable).

- Doesn't Occur On            
Build 2006-08-10 on Windows XP Home (Service Pack 2)

Additional Information: Any other debugging information. For crashing [% terms.bugs %]:

  • Windows: Note the type of the crash, and the module that the application crashed in. (e.g. access violation in apprunner.exe)
  • Mac OS X: attach the "Crash Reporter" log that appears upon crash. Only include the section immediately below the crashing thread, usually titled "Thread 0 Crashed:".

You're done!

After double-checking your entries for any possible errors, press the "Commit" button. Your [% terms.bug %] report will now be in the [% terms.Bugzilla %] database.


More Information on Writing Good [% terms.Bugs %]

1. General Tips for a Useful [% terms.Bug %] Report

Use an explicit structure, so your [% terms.bug %] reports are easy to skim. [% terms.Bug %] report users often need immediate access to specific sections of your [% terms.bug %]. Follow the structure recommended above.

Avoid cuteness if it costs clarity. Nobody will be laughing at your funny [% terms.bug %] title at 3:00 AM when they can't remember how to find your [% terms.bug %].

One [% terms.bug %] per report. Completely different people typically fix, verify, and prioritize different [% terms.bugs %]. If you mix a handful of [% terms.bugs %] into a single report, the right people probably won't discover your [% terms.bugs %] in a timely fashion, or at all. Certain [% terms.bugs %] are also more important than others. It's impossible to prioritize [% terms.abug %] report when it contains four different issues, all of differing importance.

No [% terms.bug %] is too trivial to report. Unless you're reading the source code, you can't see actual software [% terms.bugs %], like a dangling pointer -- you'll see their visible manifestations, such as the segfault when the application finally crashes. Severe software problems can manifest themselves in superficially trivial ways. File them anyway.

2. How and Why to Write Good [% terms.Bug %] Summaries

You want to make a good first impression on the [% terms.bug %] recipient. Just like a New York Times headline guides readers towards a relevant article from dozens of choices, will your [% terms.bug %] summary suggest that your [% terms.bug %] report is worth reading from dozens or hundreds of choices?

Conversely, a vague [% terms.bug %] summary like install problem forces anyone reviewing installation [% terms.bugs %] to waste time opening up your [% terms.bug %] to determine whether it matters.

Your [% terms.bug %] will often be searched by its summary. Just as you'd find web pages with Google by searching with keywords, so will other people locate your [% terms.bugs %]. Descriptive [% terms.bug %] summaries are naturally keyword-rich and easier to find.

For example, you'll find a [% terms.bug %] titled "Dragging icons from List View to gnome-terminal doesn't paste path" if you search on "List", "terminal", or "path". Those search keywords wouldn't have found a [% terms.bug %] titled "Dragging icons doesn't paste".

Ask yourself, "Would someone understand my [% terms.bug %] from just this summary?" If so, you've succeeded.

Don't write titles like these:

  1. "Can't install" - Why can't you install? What happens when you try to install?
  2. "Severe Performance Problems" - ...and they occur when you do what?
  3. "back button does not work" - Ever? At all?

Good [% terms.bug %] titles:

  1. "Save button disabled after failed post attempt" - Explains problem and the context.
  2. "RPM 4 installer crashes if launched on Red Hat 6.2 (RPM 3) system" - Explains what happens, and the context.
[% INCLUDE global/footer.html.tmpl %]