Bug tracking is the process of reporting and tracking
the progress of bugs from discovery through to
resolution, where a bug is defined as a deviation from
requirements. Other terminology frequently used to
describe this process include
defect tracking
incident tracking
issue tracking
problem tracking
change management
fault management
trouble tickets
Bug tracking systems are most commonly used in the
coding and testing phases of the software development
process. However, tracking systems can in fact be used
for many other purposes such as general issue tracking,
simple task lists, help desk situations or contact
management, where the focus is on the tracking aspect
rather than what is being tracked. Even in software
development, tracking systems are quite often not
limited to simply tracking bugs, but extended to track
feature requests or enhancements as well as enquiries.
The following categories broadly represent the stages
that a bug will move through in its lifetime. The
finer details such as the terminology used to represent
the status of a bug will most likely vary according to
your corporate naming conventions. The workflow can
also be expected to vary depending on the complexity of
the bug, with a bug perhaps moving between a number of
developers for different stages of resolution, followed
by updates to the documentation by a technical writer
before a tester can verify its resolution.
Record
Once a bug has been discovered the first step is to
record it in your bug tracking system, until it is
recorded it doesn't exist.
Analyse
Analysis and prioritization of bugs are key aspects
of a well managed project, creating a solid
foundation from which to make informed planning and
scheduling decisions.
Assign
Once the decision has been made to resolve a bug it
needs to be assigned to the person who will be
responsible for fixing the code, updating the
documentation, contacting the customer, etc.
Resolve
On completion of their task the assignee will
generally close the bug to
indicate its readiness for the next stage.
Test
In order to improve quality the bug resolution
should be independently verified before it can be
finalized.
Release
The final stage is when the changes for a bug or a
set of bugs are incorporated into a new version of
the product and released to the public.
Accurate bug reporting is critical, a bug report that
simply says it doesn't work is not
good enough. It provides no information on the problem
which subsequently means there is no chance of being
able to fix it as it can't be identified! The main
information required when reporting a bug is as follows.
Environment
The specifics of the environment in which the
problem occurred are needed to allow the problem to
be reproduced. This may include details such as
hardware configuration, operating system, dependent
software, browser version, etc depending on the
application.
Steps to reproduce the problem
This should be a concise and minimal set of steps
which can be followed to reproduce the problem.
Expected results
This should describe the expected behaviour or
expected results which will readily explain why the
problem is being reported when compared to the
actual results.
Actual results
This should describe what actually happened,
complete with any error messages, stack traces,
screen shots, log files that show the outcome. It
may be the case that the behaviour is correct but
has been misunderstood when compared to the
expected results, in this case the resolution may
be that clearer documentation is required.
Bug tracking is a fundamental part of the Software
Engineering lifecycle process. Effective use of a bug
tracking system will lead to a more structured approach
throughout the development lifecycle, resulting in a
higher quality product while also reducing development
and support costs.