Skip to main content

How to guarantee bug free software?

It was a bad weekend for me, my fantasy team lost, with regards to the fantasy team, it has shown to me that no matter how well you prepare, how well you plan, there are things that are going to happen that you just can not predict.

Which leads me onto the title of this post, you can never guarantee bug free software. You can highlight the areas of risk and highlight what you have and haven't tested, to make business owners aware of what issues may arise, but you just can't guarantee bug free software being released. There are far too many variables that affect what you can and can't test unfortunately. Software is an extremely complex system, and this is ignoring hardware, which makes it even more complex.

Going to an extreme, NASA have shown that it's possible to make "virtually" bug free software, but mistakes are still made, which are sometimes unfortunately, fatal.

One solution is, as I said, to highlight the areas of risk, highlight what you have tested, and highlight possible things that you deem low risk, and make the business aware of the implications of what you ahve and haven't tested, as unfortunately, there isn't time to test everything.

Something that definitely helps in highlighting areas of risk is a good set of requirements, we don't always have this, but if we don't we need to say early and often.

Another thing that helps, is TDD, by testing early and testing frequently, you are far more likely to catch bugs before they enter production. It also encourages developers and QA to ask questions about requirements, so definitely feeds into the above paragraph too.

Every once in a blue moon, you may get an issue arising that you had marked as low risk, but this is life, it is full of unknowns.  What you mustn't do, is completely change your approach, you are a good tester, you need to stick to what you know, and probably tweak your approach so that the issue or something similar doesn't happen again, but it would be foolish to throw away the game plan that has proved successful in the past. The important thing is to learn from it.

This reminds me of an interview I once held, I asked "What's the biggest bug that you've let go into Production?" to which he replied "None", I immediately thought this was strange, we've all made mistakes, the important thing is how we learn from our mistakes, and ensure that it doesn't happen again.

Which is what I am going to try and do with my fantasy football team, I'm going to stick with David Wilson, stick with Dwayne Bowe, but tweak the lineup slightly to ensure that I have the best chance of success in Week 2!


  1. Always an important thing to make sure non-testers (heck, maybe testers too) are aware of. My turn of phrase when asked is usually we can "make quality more likely" or we can "make critical issues less likely". Maybe weasel words to some, but it's the truth!

    For assessing risk areas in critical systems I apply Failure Modes and Effects Analysis (FMEA) on occasion. Then build tests around those we identify, along side the usual Functional type testing of course.


  2. Awesome article! I have gradually become fan of your article and would like to suggest putting some new updates to make it more effective.
    MAC Address Spoof


Post a Comment

Popular posts from this blog

What is a PBI?

After my last post, I had the question of what is a PBI... so I thought i'd write a short blog post about what they are and why they are used.

A PBI is an acronym for Product Backlog Item. It is a description of a piece of work that your SCRUM team will develop and deliver. When you have a list of Product Backlog Items, you then refer to that collective list as a Product Backlog.

The product backlog is often prioritised and yourteam will work through each PBI, and release on a regular schedule... I am however going deep into the world of Agile development, which isn't entirely what this post is about, so I will stop myself now.

A Product Backlog Item is made up of the following:

Title - This is often a one liner that gives the team an idea of what the PBI is about, although it can just be an ID for the item and the team work off of that.

Description - Breaks down the PBI in a bit more detail, and can be written in any style, however I prefer it to be written as follows: 

By writin…

Dealing with Selenium WebDriver Driver.Quit crashes (Where chromedriver.exe is left open)

We recently came across a problem with Selenium not quitting the webdriver and this would then lock a file that was needed on the build server to run the builds.

We were using Driver.Quit() but this sometimes failed and would leave chromedriver.exe running. I looked around and found this was a common issue that many people were having. We (I say we, as we came to the solution through paired programming), came up with the following, that would encapsulate the driver.quit inside a task and if this task takes longer than 10 seconds, then it will clean up any processes started by the current process, in the case of the issue on the build server, it would kill any process started by Nunit.

        public static void AfterTestRun()
            var nativeDriverQuit = Task.Factory.StartNew(() => Driver.Quit());
            if (!nativeDriverQuit.Wait(TimeSpan.FromSeconds(10)))

        private s…

Famous Movie Quotes applied to Software Engineering - Jaws

You're gonna need a bigger boat? How can that relate to Engineering?

Firstly, let me ashamedly admit, that I've never seen the whole of Jaws all the way through. It's on my list of films to watch, but whether I get round to it, is another matter!

Anyway, to apply this to engineering, it's almost like "you're gonna need more testers/developers"...

We hear this all too often when trying to push releases out the door, let's throw men at it... However, as we all know, a bigger boat/more men... isn't always the answer, it's not a guarantee of quality, or even a guarantee of getting things done quicker.

If you have a task that will take 2 hours, simply having 2 people work on it doesn't mean that it is halved, in fact often, the time taken to do the task remains at 2 hours, but the maintainability and the knowledge around that area is increased, so it's a price, in my opinion that is often worth paying.