A formal procedure for the life of a bug ticket is as follows:
- Reporting phase
- A concerned person ("reporter") discovers a bug.
- Reporter attempts to reproduce the bug. In the case of Errors,
if it doesn't reproduce, continue anyways.
- Reporter files a ticket with as much information as possible. An
outline of reporting tickets is documented at Bug
reporting.
- Tech phase
- A tech lead receives the ticket.
- Tech lead attempts to reproduce the bug and fills out the ticket
with any additional information and tags as appropriate. Note
that at this point, there may be insufficient information, at
which point the tech lead will attempt to collect more
information from the reporter. Tickets like this should to be
tagged as "Needs Information" or "Needs Feedback". If the tech
lead is familiar with the problem/solution, he may give a rough
outline of what work needs done.
- Generally the tech lead should also include a test case for QA.
Usually this is just the steps to reproduce.
- Ticket is assigned a priority, which may fast-track it into
development or may put it into the backlog, at which point it
can be pulled into development whenever a new dev phase starts
(in Agile, this is at the beginning of a "sprint", which is
usually 2 weeks).
- Sprint phase
- Team lead reviews the ticket with the devs, gives an estimate,
assigns the ticket, and effectively pulls it into the sprint
(meaning it will be worked on this sprint).
- At this time, the ticket may be cleaned up a little to more
accurately reflect the issue.
- Developer documents work and issues until the problem is fixed.
- Developer refactors code so that it's clean and in line with the
philosophy of the product.
- Developer attempts to confirm that the issue is fixed. Updates
the test case as necessary (including any exclusions for things
that QA should not fail the ticket for - usually due to it being
addressed in a separate ticket). Pushes code into review (this
effectively closes the ticket as In Review and pushes the code
into a team repository).
- QA phase
- Team lead and/or tech lead reviews the fix. Pushes the code into
the global repository. Pushes it into QA (this effectively
re-opens the ticket as Begin QA).
- QA tests the parts of the product relating to the ticket on
their own, clean environment. This is outlined in the test case.
Ultimately, the test case needs to pass for the ticket to pass.
If the test case fails, the fix fails. If the test case passes,
QA should also do a basic regression test, or a more thorough
regression test for fixes that affect many aspects of the
product - for fixes that it is unclear what they affect, it
would generally warrant a Full regression test. If anything
seems wonky, especially if any of the steps leading up to the
test case cannot be followed, QA will fail the ticket. Failed
tickets go back to dev (who may decide to exclude the reason of
failure and/or clarify the test case, and push it back into QA.
Alternatively, they may fix the regression and push it back into
review).
- QA phase 2 repeats the QA process in a production environment.
This step may be skipped if a "production environment" is the
same as a development environment.
- QA passes the fix, formally closes the ticket as resolved.
Note that, as a small team, we do not have the resources to follow this
formal procedure. We do not have nearly enough people to fill all the
roles, and even if we did, the people we have are all volunteers,
meaning they are under no obligation to fulfill their role, let alone to
fulfill it in a reasonable time frame. Because of this, much of this
process is expidited as much as possible, compressing several steps, and
creating informal processes for these. Whatever the case, this formal
procedure forms a guideline in what the procedure for a ticket
*should* be, so that our informal processes may reflect this as best
is possible with the resources we have.
Do realize that tickets and bugs do still fall through the cracks. To
best expedite a ticket, we ask that reporters stick around and check up
on the ticket throughout the life of the ticket, helping in whatever way
they can. The reporter is also capable of closing their own tickets,
should they feel they are invalid or resolved before the usual ticket
process completes - that's perfectly fine. However, you are not required
to close your tickets - they will follow their usual lifecycle and get
closed off eventually anyways (hopefully by QA).