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

Advantages of using Test Management tools

Before I start talking about test management tools, let me clarify what I mean by the term test Management tools...  I am not taking about your office excel program where you store your test cases in. I'm talking about bespoke test Management tools, your quality centers or Microsoft test manager...
In the strict case of the term test Management tool, Microsoft Excel can be used as such, but heck, so could a notepad if used in the right way... For the sake of this blog post I am talking about bespoke test Management tools.
Firstly, what test tools are out there? There are many more out there today than when I first started in QA over 5 years ago. When I started the market was primarily dominated by a tool called Quality Center, this would run in a browser (only Ie unfortunately) and was hosted on a server.. Nowadays it's market share has somewhat dwindled, and there are some new kids on the block. 
One of the more popular tools is that of Microsoft Test Manager, it's big…

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…