Bbbb-bugs! This four letter word can be your biggest nightmare and can be the difference between launching your game next week or next month. Everything that surrounds bugs are cringe-worthy, from the moment they are realized by the quality assurance (QA) team through the process of tracking 'em down and fixing them.
First off, every program has to under go some form of QA. Unfortunately, we are only human (last I checked at least), so we cannot write code that is 100% bug-free. Having a QA team (even if it is comprised of close friends and family) will help you out tremendously when you launch your game. The whole process of having some one test your game is pretty stressful, especially since they are actively trying to find something wrong. However, the most important part is what to do with a bug when it is found and this is why it is super-duper useful to have a system in place for this process.
In the past, we have used tools like Jira and Asana for task and bug tracking, and both have their strong points as well as weaknesses. Regardless, they are an invaluable tool for keeping track of bugs and maintaining your sanity. Our typical process is to test often and early through the dev cycle. Then, once we are feature complete we will round up our beta testers and test again! In our previous game, Count Crunch's Candy Curse, each time we hit a new (major) milestone we would both spend an hour or so checking out the progress so far. When we found an issue we would create a task and assign it's priority. Creating the task would involve a loooong description of the bug and most importantly, how to reproduce it.
Any body can report a bug, but you really need to know all the details of what was happening at that moment so that you can figure out what in code went wrong, how to fix it, and be able to verify that you actually fixed it. Once in a while you will get the random, one-time bugs and for those you will have to weigh their importance and probably spend a good amount of time figuring out why it is random. Was there a random variable in your game? Were you half awake at 2am when you wrote that code? Even for those bugs, you need to know exactly what was going on for the player to experience that outcome.
Bugs can be a nightmare, let's make the process of fixing them as easy as pie. Give your team (whether they are volunteer beta testers, noobs to the QA team or just friends) the right tools and get every one on the same page about understanding the importance of reproduction steps. Otherwise, you'll end up pulling an all night-er playing through the game to understand what tester 'A' means by "cannot shoot the boss". When in fact, it would have taken literally 2-seconds to change a boolean if they had mentioned it was the third boss and they didn't hit the "skip boss intro" button like you always do! Bah!