Purpose of Software Testing = Success
"Why should we care about Software Testing?" is a common question asked of software testing, especially in companies that are becoming more mature in their software development. Perhaps when the company was only managing one or two small websites, testing wasn’t a major consideration and developer testing was adequate. However, as the sites grow and the company starts to develop more advanced applications, then testing needs to become more of a priority.
But why exactly?
The simple answer is: “no plan survives first contact with the enemy.” If we translate this military concept into business-speak, it may read better as: “no new product survives first contact with the customer.” The idea behind software testing is to see if our “plan” - the software, works the way we expect it will in the real world.
Here are 4 reasons why software testing should be an essential part of your development programme:
It's cheaper and easier to find & fix bugs early in software development because there is less code to review and the software isn’t as complex.
If I discover a bug in an application just before it is ready to go-live, it may take days to isolate and repair the error. It may be in any number of sub-routines that will need to be analysed and tested. When the bug is found and fixed, it needs to be tested again to ensure the fix doesn’t cause an error elsewhere in the code.
If you start your testing when the application is small, there is less code to fix and fewer repercussions for changing the code. Then, as you develop the application further, you will have confidence that you are developing it on a solid foundation.
Additionally, if you release buggy software, customers will not only go elsewhere for their solution but you’ll quickly get a bad reputation and new sales will plummet. Reputation can be difficult to quantify until you watch your competitor’s business grow, then your reputation becomes nearly impossible to get back, along with the customers you lost.
Downtime & Patches
If buggy software ruining your company’s reputation isn’t bad enough, you may also have to bring a website or application down to fix it or find yourself releasing a string of software patches.
Yes, every system has occasional planned downtime and every application on the market releases regular patches & updates. It's impossible to plan for every possible hacking attempt or every possible interaction with another system that might cause an error. But thousands upon thousands of those situations can be tested for and avoided, reducing your risk to a handful of edge-case scenarios.
Additionally, if you have a major bug after the product goes live, you may need to divert resources from other projects to fix that bug, thus delaying what they were working on.
Can’t we just leave testing to our developers? After all, they are writing the code, no one knows it better.
This approach is similar to a writer editing their own work. When I write a novel, I of course edit it as I write and then do a final edit before I send it off to my agent. The agent will then do an edit themselves or hire a professional editor. They will inevitably find errors in the text, regardless of the 50 or so times I’ve read and edited it.
Why? Familiarity with a body of text, be that a novel or code, produces a blind spot for errors.
For example, if you’ve never seen this 'Paris in the spring' graphic…
…then I encourage you to read it slowly, one line at a time. This is because it actually says 'Paris in THE THE spring'. There is a glaring error in the sentence. But most people don’t see the error (on first inspection) because their mind jumps ahead and reads what it is expecting to see, not what is actually there. This is what happens when you’re writing or coding. Even though, I know what I’m trying to say, my brain jumps ahead and feeds me the sentence I wanted to write, even if that isn’t the actual sentence or line of code, I wrote.
This is why having a fresh set of eyes, be that a professional editor or external software tester, review what you’ve produced is critical. Even if that ‘external software tester’ isn’t external to the company, they should at least be external to the team developing the application.
Customer Satisfaction & Confidence
I have to confess, as someone who has good eyesight and isn’t colour blind; when I used to develop websites, I never put a lot of thought into the colour scheme I used on the site. I tended to pick a colour palette and stick with it. It wasn’t until I worked with someone that was colour blind did I come to appreciate the importance of colour. For example, many shades of red are nearly invisible to some people, especially if not on a pure white background.
As a migraine sufferer, I hate bright white screens and always switched my monitors/ app into dark mode as glaring at white screen can trigger a migraine. I hate software that can’t be adjusted so it's comfortable for me to use.
If none of your developers have any issues like these, odds are no one on the team will think about catering to this set of customers. If you don’t, then they won’t be your customers for long. I promise you, that if I can only use your software when I don’t have a migraine or when I’m not in an ultra-light sensitive state (which is most of the time), then I’m never going to use your software.
This is where user acceptance testing (UAT) and beta testing become essential to the success of your application. Sure, the software may work flawlessly but if your customers find it difficult to use, for whatever reason, odds are they won’t use it. Again, this is an issue often brought to the surface during testing.
So, why should we care about Software Testing? In a word: Success.
That success may be in the form of cost savings during development or profit after sales; or customer satisfaction and confidence in your product. You’ll reduce downtime & the number of patches you release and won’t have to spend resources on reworking existing software. This will enable you to focus on future projects.