The Anatomy of a bug: the importance of understanding and the futility of standardization
In my decades of working in video games QA I have come to
have strong opinions on quite a few things.
None are more important than the importance of thinking about and understanding
why you are doing the things you do. One
of the most basic ways this principle can be applied is how a QA tester thinks
of a bug. There is nothing more
fundamental to testing video games than finding and reporting a bug, wouldn’t
you agree?
Typically, when we start in our first testing role, we are given a form to fill
out when we find bugs and are instructed how to fill it out. At that level, that’s the job you are being
asked to do. But as you grow in your QA
career and move up into more senior positions, you’ll often find yourself in a
different position; you’ll be asked to create the bug template and process for
dealing with them. This is where it’s critical
to understand the “why we do what we do” aspect.
Ask yourself, what purpose does a bug serve?
It is a few important things; it is what gets communicated to the developers who
will need to fix them. It is how we communicate
with people who must triage them and decide how they will be prioritized. It is the digital artifact that goes into a
bug tracking system that is used to track a large number of defects all with
varying priorities and severities. A bug
needs to satisfy all of those needs and most importantly it needs to serve the
organization or product that it is being written for. And none of those organizations or products
are the same, they need bespoke solutions that cater to the actual needs.
The worst thing a QA tester can do is think that there is one solution that fits
all, or a standardized bug that meets every need. There are, however, common threads that can
be conceptualized and applied to any tracking system or production process that
you are likely to encounter in your career.
Here’s a true story from earlier in my career. Sometime back in the early 2000’s I was sent to GDC by my employer for the first time. Of course, the first thing I did was go through the program and find every talk and roundtable that was for QA or even tangentially related. One of the timeslots I found was a roundtable being hosted by the IGDA QA SIG, the organizers were attempting to collect data on all the fields we in QA were using in our daily work to help them come up with a template for all the things you would want to include in a bug report.
At that round table, as people took turns going around the circle I listened as people talked about what kind of studio they worked at and what kind of games they were working on; platform first party, Indy studios, cellphone game developers, MMORPGs…the list went on and on. By the time it worked its way around to being my turn instead of answering I challenged the group with a question. I said “it sounds like we are all working on very different projects in very different needs and there are a huge variety of bug fields that we track. Why are we trying to standardize a bug report to satisfy all of us, is that even possible?”.
As you might imagine, this did not go well. But in the twenty years since I’ve become
increasingly convinced it was the right question to ask.
Since then, I’ve developed a philosophy that a good bug is one that meets the needs
of developers, the production process, whatever tracking system you are using
and most importantly the game or product you are making. I’ve distilled this down to what I call the
anatomy of a bug.
In that anatomy there are five things that you need for a good bug:
- Title
- Description
- Steps to Reproduce
- Expected versus actual results
- Meta data
It seems like this is something that almost goes without saying, especially for
people who have worked in QA for any amount of time. It is however something that people have a
hard time speaking to – and as somebody who interviews game testers from entry
level to senior level I find it’s hard to get people to be able to articulate
this in an interview. They know how to
fill out the bug forms they have worked with in the past, but they are
sometimes hard pressed to explain why these things are important.
I’m here to suggest to my fellow QA professionals that we should all know how to answer the question at a conceptual level and explain why each of these things are important.
The title is a TL;DR of the bug; it should be short, informative and explain what
the problem is in a single sentence.
When managing any number of bugs in a game, or trying to work with bug
tracking software, you need a good title.
The description is the verbose version of the title. You cannot always give all the information
you need in that short title. Bugs can
be complex; there may be conditions in which it occurs that don’t fit into that
summary. You may want to explain what
else you have tried testing so that when the question comes up in a triage
process the information is there so it can be judged without having to send it
back without questions. The description is
where you have the space to include everything important that won’t fit into a
title.
The steps to reproduce are probably the most important part of the bug
report. If a developer cannot reproduce
the bug, they can’t be expected to be able to fix it. Clear and concise steps that walk them
through getting the bug to reproduce are key to giving them the information
they need to fix it. Which is important. Developer time costs money. Spending time trying to figure the bug out
slows down the whole process.
Expected versus actual results is another place where good information can
avoid slowing things down. Some things
are so simple that they need no explanation, for example, we all know the game shouldn’t
crash. But not all bugs are that simple
and when a bug reaches the triage process which can often include people who
are making decisions who do not know the intimate details of the project it can
be helpful to explain why something is a bug.
This is particularly true when a bug is a usability issue or a less tangible
quality issue than something as simple as a feature just not working or
crashing the game.
The final part of a good bug, the meta data is very much a catch all and where a bespoke solution can be crafted for whatever game or project you are working on. Your mileage is going to vary, there are some things that can be considered standard such as the change list it was found in, the priority or what discipline the bug is going to go to or even what platform the bug occurs on (i.e Xbox, Playstation etc…). Quite often a good bug needs associated data and media like a screenshot, video or log files that will help explain the bug or provide clues for the developer assigned the bug. And lastly, the meta data is where we the bespoke solutions for the game or project you are working on can be provided; the list of custom fields I heard described by my fellow QA testers at GDC all live here.
When I interview a tester for a QA role, whether it be a junior or senior tester this is one of the key questions I ask; how would you describe the important parts of a good bug report?
I never expect to get an answer that is exactly how I would answer it. But by listening to what people say and asking clarifying questions I can often get a good sense of whether the interviewee really understands why we do what we do when we find that bug. The best testers are usually the ones who have thought about and can speak to the “why”.
No comments:
Post a Comment