What is Software Testing? All The Basics You Need
Testing, testing… What is software testing? 🤔 Software testing is a process to assess the functionality of an application with an aim to find whether the developed software has met the specified client requirement(s) or not. Plus, to identify whether the product is defect-free in order to produce a quality product.
Let me put it simpler: When I go shopping, I find the goods I like and try them on. The questions that arise in my head then are: Does it suit me? Is the color good? Is the material good enough or will it shrink after a wash? Will the color fade? Any loose threads? In the very same way when we test software, we think about various things such as does the application comply with the client requirements, the wording on the application is easy to understand or not, compatibility with different devices, will it function if tens of thousands of people use it at a given time or will it crash, and if we enhance it will the product still work or break? Would you test the entire application or certain parts of it?
One thing that is worth mentioning and I feel quite happy and proud about, is that as a tester you are always curious about a product, you can carry all your skills with you wherever you go. This blog is one of my favorite blogs as I will take you through what testing software is all about with plenty of analogies and some interesting myths!
Isn’t it important for a company to create a high-quality product? I think this is super important for the company as well as the customer. What happens when you create a valuable product? You build a strong reputation and branding, which may lead to long-term committed clients. Testing adds value.
Satisfied Customer 😃
A happy customer is something every company hopes for. So, making sure a product is tested accurately, any bugs are fixed, any new requirements are added if possible, leads to a satisfied customer. Also, it guarantees that your product is reliable, maintainable, and valuable.
When customers use the product, they are bound to reveal some sort of personal information. When an organization follows a proper testing process, it ensures a secure product that in turn makes customers feel safe while using the product. For example, not fixing security-related bugs, such as bugs related to payment information, can cause massive financial loss. Security of a product not only protects information from hackers but also makes sure it’s not lost or gets corrupted 🐞
A software that has gone through a great team effort, as well as rigorous testing, can most likely lead to a respected product. Furthermore, it may also bring in more success via word-of-mouth and recommendations. This also means you can retain old customers and gain new ones!
It is always best to involve testing from the very early days of software as compromising on quality ends up with the firm to spend more money than planned! If testing is involved sooner, it can be maintainable, and no constant fixing may be required. This also means the removal of bugs and/or defects sooner can lead to the product being shipped sooner too 🚢
Let’s not forget test automation — this can reduce further costs as well.
User Experience 🖥️
Testers are the closest people to the actual user; they think and create tests that will help the customer utilize the product to its fullest. The software needs to be simple, understandable, and easy to use. A tester’s experience with testing allows them to understand and test a product in a logical and intuitive manner.
To have a better user experience it is clear that the product should be free from bugs/defects as that would create a bad experience for a user, and they won’t be able to use the product fully. Therefore, testing makes sure that good procedures and strategies are used to test the product and aim for a good user experience and a better feedback loop too.
Business Optimization 🧑💼
When you have more satisfied clients, good user experience, customer retention, low cost for fixing bugs, better quality, and more stability, reliability, and product maintainability, this leads to a great product with a good reputation. This is all great business optimization but testing also adds to it.
Can I release a product without testing it? ⚙️
Technically yes, but it is a big risk! 🙈
The IT world is evolving and there are tons of development and improvements these days, therefore we can look into how to improve our own product with new features too. For instance, we can now shop online, do some bank transfers online, get take-out online, and get everything delivered to our doorstep pretty easily. The same when building an application, we may have considered the client’s requirements, however, if a team or the business can think of something more useful to add to the application, then why not?
In doing all the above what if the system is defective when released? One small bug can even stop the client from proceeding with their daily routines. This can lead to a financial loss; a bad reputation and a firm can lose business too! Therefore, testing has become an integral part of software development teams. Also, to have a good quality product it is essential to take it through testing phases. I am not suggesting the quality of a product is a tester’s responsibility, it’s actually the entire team’s responsibility.
So, if we have testing as a process within our team, it makes the product more secure, cost-effective, brings good quality, and most of all customer satisfaction.
Some businesses were impacted very badly for not testing or lack of testing on their products:
- An error in the trading algorithm cost Knights Capital Group 440 million dollars in 30 minutes on 1 Aug 2012. As a result, their shares dropped 75% in two days after faulty trades were done for over 150 different stocks.
- Mt. Gox Bitcoin Hack — Mt. Gox, the biggest bitcoin exchange in the world at the time, was hacked in June 2011. This cost them around 850,000 bitcoins, the equivalent of over half a billion dollars.
- The $18 million Mariner 1 Spacecraft was destroyed once it was certain to crash after take-off. The failure was traced back to a missing hyphen that let wrong guidance signals to be sent to the rocket.
Types of testing
Testers do not have to be technical — I personally feel that having some technical knowledge helps me understand the product better. In a nutshell the ins and outs. Also, the more you know the better for you as it will help you create better tests and test the product more thoroughly.
Testers break the software — We didn’t build it so how can we break it? We do like to go in as a detective and look for bugs or any defects 🕵️♂️, but that is actually helping the product quality and functionality making sure we as a team meet the client requirements.
A product that failed in production is the tester’s fault — I think it’s a team effort, we should not blame anyone. Instead, we as a team should work on strategies on how to improve as a team and how not to cause such failure again.
Testing should find all the bugs — I wish! 😅 This is not quite possible yet. We can perform risk assessments and make sure the main functionality of the product is working as per client requirements. Sometimes new code introduces new bugs, or new bug fixes introduce another bug.
Testing can be automated — Not all tests can be automated, this is another interview question. We cannot automate the look and feel of an application for instance. We cannot automate a tester’s reaction either, for example, “ this button should not be here”, “this does not look right to me”.
Testers are quality gatekeepers — We are all responsible for our product’s quality as a team. Everyone has worked on it, not just the testers.
Testing = QA — I hear this a lot but they are both different, what we actually do quite a lot is advocate quality. We can assess a product’s quality from requirements that are not met through perhaps exploratory testing. Although we do aim to reduce risks where possible but can’t mitigate all risks. Only a QA can go through a set of activities in order to ensure the quality of software during all its phases.
When to stop testing 🛑
Can we get rid of all the bugs? How long do we keep on testing? The answer to the first question is no, some bugs will, unfortunately, be still lurking in production code. However, having fewer production code bugs leads to money saved and company prestige. The second question is a hard one — we should at least ensure that functional requirements are met.
I used to get asked at interviews and I actually asked individuals who I interviewed “When do we stop testing?”… First of all, I asked myself, can we even stop testing? If we can, then what makes us stop it?
My answer was we can stop testing when we know that we have fixed the high priority/ blocker bugs and have ticked off testing the features we aim to release. I have heard similar answers from the people I had interviewed too. The product will not be 100% bug-free. However, the following things are kept in mind while stopping the test activities:
- Testing deadlines
- Completion of test case execution cycle
- Completion of functional testing and code coverage to an agreed limit
- No high-priority bug is found and the rate of finding bug declines after a certain level
- Management decision
Software testing activities
A software test process consists of the activities listed below:
- Planning and control
- Analysis and design
- Implementation and execution
- Meeting exit criteria
- Test closure activities.
En Fin! 🏁
Testing is not just about finding bugs! It is A LOT MORE. I fell into testing, I consider it to be a jolly good fall. I had never looked into what actually it was until I learned it on the job. I do know something and that is, software testing has opened a lot of doors for me 🚪 I find it as an evolving role over the years and there is so much more to learn and excel in. Testing is like a piece of art to evaluate the functionality of your software as your curiosity and creativity can create an excellent product 🎨
The testing effort should begin as soon as possible in the software life cycle. No one will argue that the cost of resolving software bugs in the development process is significantly lower than the cost of resolving issues when the damage (to customer experience and the company’s reputation) is already done.
A detailed and effective testing strategy minimizes the likelihood of errors in the end product that can lead to negative consequences for your business.
Sit back, relax, and test away! 👩💻