Why do we test and what does it provide?
Why do you proof read any documents that you make? Why do you double check your maths? For the same reason as you want to test your software, everyone makes mistakes. Detection of mistakes can make or break a company and vary in severity, some are unimportant but some of them can cost the company millions. For example in 2018 O2 bought some equipment from Ericsson which had a software glitch, that cause 30 million O2 customers to lose all access to data services, which resulted in Ericsson having to pay a multimillion-pound compensation to O2 and O2 had to pass that onto the customers (estimated to be around £100 million).
We can assume that all work has mistakes, no matter what field they come from which is why we all check our own work. However each person will see a product differently, a developer will see from a narrow view of “this is how this module should work” but that causes assumptions to be made and tunnel vision. This results in people saying it works even when it doesn’t. This happened due to the same assumptions during execution as they already assumed while coding. This means that they are saying the product works as they expect but doesn’t mean that it works how the designers expected. A second pair of eyes and a different perspective will help find these defects/flaws and build a cleaner, better product.
So why is software testing important?
Do you have confidence your product is going to deliver?
Testing will never be able to find 100% of the defects in code, it’s just not possible. Testing isn’t there to find every single bug in the code, if you aimed to test every piece of code/functionality you would never be able to ship a product as there are always more test scenarios that could be run. Testing is there to provide confidence that the major bugs are found and dealt with. Testing is there to advise the state of a piece of software to stakeholders and when it has been delivered to a high quality product.
For example let us look at a 4 function calculator with addition, subtraction, multiplication, division that can accept 10 digit numbers. Lets take just multiplication for an example
2 x 4 = 8
Assuming they work how do you know that another number would work? Such as 10 x 10 = 100 or 60578 x 729 = 44161362. The answer is you don’t, you need to find the balance between time, cost and risk to identify what you should actually test to ensure you are comfortable with its capability. If you were to test a simple 4 function test calculator for every permutation you’d probably be able to release your device in about 2383337412 years if you worked every day for 24 hours straight.
(There are approximately 416,416,712,497,500 combinations for a 4 function calculator, based on being able to test 1 scenario per 2-3 minutes thats 20820835624875 hours, 867534817704 days, 123933545386 weeks, 2383337411 years)
Does testing provide more than just finding bugs?
Testing not only identifies defects in code it can also enlightens product to areas that can be improved. This means that we can provide a better user experience as testing are usually the team that has visibility of the technical implementation as well as the product side of what is going to be achieved.
For example I used to work for a company that had an eCommerce site who were forever making changes to the customer journey such as displaying images to show how much liquid is remaining in a container. This animation showed a container which rendered on the screen and filled in a container from the bottom to the appropriate level based on source data. Although the animation worked so technically it worked as per design but there were information points missing to the customer such as % full or indicators to show if they were high, medium or low. This is where testing can also provide useful feedback to the product team to get the changes made and scheduled.
Does testing reduce maintenance?
Making sure a product works before shipping it means that its cheaper to maintain. This is because by doing proper testing you reduce the number of crashes or loss of data or incorrect calculations that the customer might experience. If they wernt prevented then you’d be spending time and money to rectify issues which are always more expensive in production.
Software testing is there to find and surface defects (defects are bugs in the code where the code doesn’t work how it is expected) as quickly as possible to not only make the product efficient but to also reduce the cost of delivery.
Defects are everywhere and if they are not found then they can cause huge problems. These bugs get in there from different root causes but they will always be there.
Example: Programmers will write a piece of code but all programmers have different levels of experience and these can cause defects to arise. Some of the reasons could be lack of knowledge in the programming language, insufficient experience in the product area where the changes are being made, complex algorithms or just human error
So what does software testing provide?
Testing saves money
A defect in a product can cause multi million pound damages to the company either in initial impact or loss of revenue due to customer being unsatisfied with the product
Testing provides security
Security is incredibly sensitive but yet the most vulnerable part of an application. There have been many situations where user information has been stolen and used to benefit someone else that it didn’t belong to. Customers want a product that they can trust in, I never provide my personal information to a product that doesn’t provide me with confidence that they will keep my information safe from prying eyes. Our personal information is personal and we like to keep it that way.
Testing can help security by:
- Ensuring the user gets a trustworthy product
- All personal information is secure
- Vulnerability is quashed
- Problems and risks are eliminated before its too late
For example Facebook in 2019 exposed the data of 1.2billion users by having an Elasticsearch server that was completely open to the public no username or password was required to access or download this data. Which could have been identified with clear
Testing provides product quality
In order for the product vision to come to life, the product needs to work as planned. Products always server to a user’s needs, without a use what is the point in the product? To make sure it’s a quality product it needs to be tested to ensure a great customer experience as well as work to the specification of how it was designed to function.
Testing provides customer satisfaction
The real end goal of any software delivery is to satisfy your customer. Being the best product in the market will help gain clients and users which develop into long term business. If two companies released a similar product at the same time but one was glitching and only worked half the time but the other one was a quality tested application which one would you choose? Bugs put customers off really fast, British airways had a major IT software glitch which resulted in massive cancellation on local flights and huge delays on international flights, this was a huge knock to the credibility of BA and their capabilities.