Software Testing is not a standalone activity. Software Testing is a predefined process to ensure that the software product you are trying to release into the market works as expected and meets the customer or end user’s requirements. Another day-to-day example is an App you want to launch into the mobile App store. Before launching the mobile App on the app store, you must ensure that the App works as expected. Ensuring the desired behavior (functional or non-functional) of any software application before releasing it to customers or end users is known as Software Testing.
Before we understand Software Testing in detail, let us first understand what Testing is in general. Assume you go to the market and buy an electronic appliance. Once you are back home, you plug it in and power it ON, but it doesn’t work, or it powers ON but doesn’t function as defined in the product booklet. What will be your feeling in this situation? Will you be okay with the product and manufacturer? Will you not question the quality assurance and the company’s quality criteria for their product line?
So, to avoid such instances, companies ensure that they deliver quality products through Testing to avoid such issues for any product. It doesn’t matter whether you are buying a car, electronic appliances, or anything else. Testing is always involved in any product released into the market to ensure the product quality is assured before release.
Quality is not only limited to products but also applicable to other areas like services. For example, you also look for how good customer support is or how good the offered services are, like in the airlines hotel industry. Hence, quality is everywhere, whether a service or a product. Software Testing ensures quality at both product and process levels.
Regarding products like electronic appliances and car manufacturing, quality is ensured through a specified predefined process of Testing. Each type of product manufactured has its own defined processes and tools to ensure that the products coming out of the assembly line are being appropriately tested and work properly before they are brought into the market and sold to the consumers. When you correlate the above analogy to Software Testing, Software Testing is about testing the Software Application to ensure its quality and fit.
What do testers do during the testing process?
Suppose you are testing an e-commerce application like Amazon. An e-commerce application will have many functionalities like:
- Adding items to the cart
- Remove items from the cart
- Proceed to checkout
- Make payment
- Track Order
- Customer support chat
- And many more.
As the software tester, you will follow an appropriate process to ensure these functionalities work as expected. The requirements are defined before the application is built and will be available to you as an SRS (Software Requirement Specification) document or
User Stories if your Software development team follows SCRUM methodology or agile approaches.
Once you get the final requirements/User Stories, you will go through those user stories, analyze the user stories, and write the test cases to ensure that the cited requirements, like adding items to the cart, removing items from the cart, checkout, payment, etc. have required test case coverage.
Next, once the developer makes the build available for those requirements, You will ensure those test cases work as expected by executing them on the test environment. So, in the test execution phase, you will launch the application from the test environment and then run those test cases. As a tester, you will be performing the exact steps you documented in test cases and ensure that all the test case steps are passing and the application works as expected. If any of the steps in the test case fail, you mark the test as failed and raise a bug/defect against that test case.
Based on the above brief process of testing an e-commerce application, you can see that Software Testing is not a standalone activity; it is a process and requires the tester to be involved in each phase of the Software Development Life Cycle (SDLC). It is the life cycle and consists of static and dynamic approaches.