The 3 Most Important Questions You Should Ask About Each Bug You Find.
I stumbled upon (quite literally) an article by Tom Van Vleck titled Three Questions About Each Bug You Find today, and thought I would share it:
“The key idea behind these questions is that every bug is a symptom of an underlying process. You have to treat the symptoms, but if all you do is treat symptoms, you’ll continue to see more symptoms forever. You need to find out what process produced the bug and change the process. The underlying process that caused your bug is probably non-random and can be controlled, once you identify what happened and what caused it to happen.”
Tom uses these questions to get to the heart of the matter and weed out the root cause of the bug.
1. Is this mistake somewhere else also?
You want to know if this bug was unique, or due to a problem in a pattern of approach to the specific problem. If it’s unique, you can move on to the next question, but if it’s systemic, you’ll need to address your approach to the development problem the code was intended to solve and devise a new pattern or correct the one in place.
2. What next bug is hidden behind this one?
Often times a bug will either halt the execution of code, or cause the lines after the bug to be bypassed. once you fix the bug, those other lines of code will begin to execute. Be sure to check those for any bugs. Also, consider whether your fix to this bug could cause any new bugs to be introduced.
3. What should I do to prevent bugs like this?
Learn from this mistake. Could the problem be avoided by adding a new test condition to your NUnit test(s)? Should you implement a change to your pattern to check for null reference or out of bounds exceptions sooner? Bugs happen, but if you can use them as teachable moments and learn from them, then they will at least provide some value and make you less likely to run into the same bug in the future.
It’s not always an easy process, mostly because it requires a sort of detached introspection and willingness to be critical and objective when looking at your work. These character traits are not always in high supply, and we humans can often get in the way, but if you can master these techniques you will go far young padawan.
Related Posts - 10 Useful, Often Overlooked HTML Tags. Pop quiz: When would you use the <wbr> tag, and what does it do? Yeah, I had no idea either. In fact, I had never even seen this tag before,...
- How to fake a TreeNodeCollection subclass in .NET If you've ever had reason to try to extend the standard Microsoft web TreeView control, you will have no doubt noticed that MS was quite unkind to you and sealed...
- Microsoft FxCop doesn't like Microsoft generated code! The other day I thought it might be nice to "do the right thing" and give my code a run against Microsoft's FxCop. I ran it right out of the...
- Arraylist and generics don't mix with IEnumerable(Of T).GetEnumerator. The other day I was writing an in-house tool to assist in some upgrades we were performing on client installations. This tool was supposed to perform its operations on a...
- How To Control Disk Thrash From ccmexec.exe (SMS Agent). Today started like any other day at work. I sat down, logged into my PC and was greeted by the thrashing sound of my hard drive. I've come to realize...
Related Websites - You might be a nurse if... your friends call you for medical advice. ( lloyd , avatarj@mindspring.com ) discussing dismemberment over a gourmet meal seems perfectly normal to you (Mary) you have the bladder capacity of five people you have your weekends off planned for a year in advance you believe that "ask-a-nurse" is an......
- Trace Mobile: Questions About Your Fiance? Trace Mobile: Questions About Your Fiance? A good way to assure yourself that your fiancee or fiance doesn't have a criminal background is to use a reverse cell search service to trace mobile of them. Some people think it's best to ask the police, but the police will never review......
- Android SDK Updates Today we are releasing updates to multiple components of the Android SDK: Android 2.0.1, revision 1 Android 1.6, revision 2 SDK Tools, revision 4 Android 2.0.1 is a minor update to Android 2.0. This update includes several bug fixes and behavior changes, such as application resource selection based on API......
- Home Network Security [/caption] Home Computer security 1. What is computer security? Computer security is the process of preventing and detecting unauthorized use of your computer. Prevention measures help you to stop unauthorized users (also known as "intruders") from accessing any part of your computer system. Detection helps you to determine whether or......
- Pregnancy Fetal Development at Week 1 Although it may seem strange to think about, the journey of your pregnancy actually begins before the baby has actually been conceived. The very first week of your pregnancy does not begin with conception, or with the growth of the fetus in your body, but rather it begins with the......
