Over the past few weeks, we’ve all heard the various stories that have been all over the news about software defects and vulnerabilities in software security…
- Firefox pulling the latest update due to a massive security bug (http://www.bbc.co.uk/news/technology-19909106),
- The problems that consumers have been reporting with apple’s iOS6 maps,
- The disaster with RBS’s banking system due to a bug,
- Viruses and malware being ‘rampant’ in medical technology (http://www.bbc.co.uk/news/technology-19979936),
- Microsoft’s “Zero-Day” flaw in Internet explorer (http://www.guardian.co.uk/technology/2012/sep/18/microsoft-internet-explorer-zero-day-flaw),
- A recently discovered iOS6 problem where the phone keeps using 3G data even when connected to Wi-Fi (http://www.guardian.co.uk/technology/2012/oct/17/iphone-5-iphone),
… Plus the many, many more that we hear about on a near daily basis these days…
There are literally hundreds more issues that have been reported in the news over the past few years. Bugs are everywhere!
Even in day-to-day use of software, we all see problems occur. From using mobiles; the apps that occasionally freeze and become unresponsive where a reboot is required, or the mysterious signal that fails but when you take a step to the right you get a full signal again. To using the internet; the websites that take ages to load, or the bizarre functionality errors that we encounter every day on common websites that we all use (in only the past week I’ve come across 4 hefty bugs in some well-known websites – 1 energy supplier company, 2 e-commerce websites and a popular news site in the UK). To using a computer; the print job that you seem to have to cancel and resend for it to register to the printer, or the vast amount of viruses that we are always trying to avoid, or the occasional time that your computer slows right down and takes an age to open up the application that you clicked on… The list is endless.
Why has it come to this?
Software is very intricate and complex. It takes a lot of skill and hard work to write code to produce software that works in a certain way which meets some set of requirements and expectations. This coupled with the fact that it is impossible to negate human error when building software. But additionally, and perhaps more importantly, software projects have generally had to meet a strict budget on a strict timescale. This mix can make it difficult to put the focus on quality, when the main priority is to build the software and get it out there on time and on budget.
My experience has taught me that in the “Cost” v “Time” v “Quality” triangle where something’s got to give, the main aspect that people tend to let slip is “quality” and although there may be some tough negotiations, sometimes this is the only available conclusion out of the 3 choices on offer. So this could be one of many possible causes for the there being so many bugs in the world as it stands…
I also read a couple of interesting facts that perhaps contributes to some of the poor software that we see today: 1) that the majority mobile apps (over all mobile platforms) are released to the mobile market places with minimum (if any) testing being performed on them (usually a quick once over by the sole developer who created the app), and 2) most software development start-ups in the UK don’t even think about employing a tester until they have at least one product released in the market being used by customers, and are expanding the business to venture into more product ideas.
These statements don’t bode well for the war against the bugs…
So how can we change our ways?
Many companies have started putting the focus on testing by adapting to TDD and BDD processes, which help drive quality from every angle early on in the process of the application being developed.
Some companies have also implemented an additional new role in the product development process – Developers that are focussed purely on testing, aimed at automation, adding more focus on unit testing and performing API testing – SDETs are now highly sought after in many organisations.
And new testing methodologies evolved to help increase the efficiency of performing testing and finding defects quicker in the fast paced development environments that we have become accustomed to – such as Exploratory Testing, Rapid Software Testing, Session Based Testing, etc.
I have no doubt that all of these measures will help make the user experiences better for us all for future software that’s released.
But, as for the current bugs we see today, whenever I spot a bug in a desktop app, mobile app or a website that I use, I log it! I browse to the “Contact Us” page of their website, or check out the “app info”/”about” section of the application and look for an email to submit a bug report. I literally let the author of the software know about the bug… The idea being that they can’t fix the bug if they don’t know about it, so if I let them know about it, hopefully they will fix it!