The way I view bug reports is this: if you spend an extra 5 minutes making one, you may save someone an hour of their time. Detailing the report with as much evidence as you can find using concise text and images may take longer, but will help whomever views the report greatly. Different key sections would include:
- Technical details (OS, compiler, third-party libraries, etc)
- Summary of the program or section of the program the bug exists in.
- Severity
- Summary of the problem.
- How to create the process.
- Past attempts and results.
- Any debug info (call stack, debugging log files, console output)
I will be using a program from class I created and purposely broke for homework purposes. I will build a bug report out of it for you to follow along too.
Technical Details
Technical Details
Rather self-explanatory, technical details is a list that shows your hardware and software. This includes OS, third-party libraries, any API's or SDK's, If you're program runs on a PC, include your specs if you truly feel its necessary. For AAA PC games, specs are certainly useful, but for a small project between buddies in University may not be as critical.
Summary of the program or section.
Rather self explanatory, this section details what your program should do. Feel free to summarize your program as a whole if it is small enough (for example, a basic addition/subtraction program), or describe what particular section is breaking (when you try to grab loot after defeating a particular boss). If the program is small enough, you can include summary of the program and summary of the problem in the same section, which is what I do in this case.
Severity
How severe is the bug in relations to the final release of the game. My professor gave us three levels of severity: A, B, and C. A means the product cannot be set to release (for example, crashes on start up). B is still severe but the game is playable (for example, lag spike when loading level 3). Several B bugs could be as serious as an A bug. C level bugs are small but don't really effect the grand scheme of things. They are still important to squash, but won't be a big hindrance on your final project (for example, if you unplug the controller 10 times really fast, the game crashes).
Summary of the problem
The summary of the problem should be a quick, clear, and concise description of the expected behavior and the deviated behavior. A bad example of a summary would be, "it breaks when it compiles". Receiving this on bug reports makes me immediately send it back because nothing is really stated. What is the error? Is it a buffer overrun or linker errors? Do the textures flicker, and if so, how frequently and at what position? Summarizing the problem in a clear manner is critical to getting other people to understand it.
How to recreate the bug
Arguably the most important section, knowing how to recreate the bug is of utmost critical importance. This section I stress heavily and I mean HEAVILY taking the extra time to provide as much detail as possible into recreating the bug. Make a step by step process as if a 10 year old was trying to create it. Provide images, even a video if you feel it necessary, just make sure the person on the other side can recreate your bug the first time. By spending an extra five or ten minutes making sure you provide as much detail as possible can save someone else hours.
Past Attempts and Results
While not necessary for all bug reports, this section can come in handy if your team had already tried some different tests and could not determine the problem. If you are going to include past attempts and results, then treat it like a "How to recreate the bug" section and provide all the necessary details into what you did and what the results were. This can be useful in smaller group projects when your partner programmer details different things they tried, the results, and brings it to you saying they are stuck.
Note: I did not include this section in my built bug report.
Debug Info
Providing debug info can make or break finding a bug. Debug info can include the call stack, any program specific log files, console outputs, debug symbols, etc. This information acts as a breadcrumb trail that can help lead programmers on the right track to solving a bug. You may want to include this in a separate text file. Not all bugs need you to provide all of this information, but it can really go a long way to helping solving the problem.
My debugging section is rather lackluster as it could include more information, but it gets the point across that the console is not displaying any issues and that we are including debugging symbols.
Summary
That concludes this weeks post on bug reports. I hope you learned something new about the importance of bug reports.
Summary of the program or section.
Rather self explanatory, this section details what your program should do. Feel free to summarize your program as a whole if it is small enough (for example, a basic addition/subtraction program), or describe what particular section is breaking (when you try to grab loot after defeating a particular boss). If the program is small enough, you can include summary of the program and summary of the problem in the same section, which is what I do in this case.
Severity
How severe is the bug in relations to the final release of the game. My professor gave us three levels of severity: A, B, and C. A means the product cannot be set to release (for example, crashes on start up). B is still severe but the game is playable (for example, lag spike when loading level 3). Several B bugs could be as serious as an A bug. C level bugs are small but don't really effect the grand scheme of things. They are still important to squash, but won't be a big hindrance on your final project (for example, if you unplug the controller 10 times really fast, the game crashes).
Summary of the problem
The summary of the problem should be a quick, clear, and concise description of the expected behavior and the deviated behavior. A bad example of a summary would be, "it breaks when it compiles". Receiving this on bug reports makes me immediately send it back because nothing is really stated. What is the error? Is it a buffer overrun or linker errors? Do the textures flicker, and if so, how frequently and at what position? Summarizing the problem in a clear manner is critical to getting other people to understand it.
How to recreate the bug
Arguably the most important section, knowing how to recreate the bug is of utmost critical importance. This section I stress heavily and I mean HEAVILY taking the extra time to provide as much detail as possible into recreating the bug. Make a step by step process as if a 10 year old was trying to create it. Provide images, even a video if you feel it necessary, just make sure the person on the other side can recreate your bug the first time. By spending an extra five or ten minutes making sure you provide as much detail as possible can save someone else hours.
Past Attempts and Results
While not necessary for all bug reports, this section can come in handy if your team had already tried some different tests and could not determine the problem. If you are going to include past attempts and results, then treat it like a "How to recreate the bug" section and provide all the necessary details into what you did and what the results were. This can be useful in smaller group projects when your partner programmer details different things they tried, the results, and brings it to you saying they are stuck.
Note: I did not include this section in my built bug report.
Debug Info
Providing debug info can make or break finding a bug. Debug info can include the call stack, any program specific log files, console outputs, debug symbols, etc. This information acts as a breadcrumb trail that can help lead programmers on the right track to solving a bug. You may want to include this in a separate text file. Not all bugs need you to provide all of this information, but it can really go a long way to helping solving the problem.
Summary
That concludes this weeks post on bug reports. I hope you learned something new about the importance of bug reports.









