Before understanding what is Software Testing, we have to first understand what is meant by the word Testing. Lets first understand the meaning of the word Testing in the real world. As humans, we generally Test something to find out whether it is working or not.
Example for Testing: Let’s say you have brought a new Television and successfully got it installed at your home. After getting it installed, without any delay, you will first check whether your new Television is working or not. The process of checking whether your new Television is working or not is nothing but Testing. You have tested whether your new TV is working or not.
But, why do we Test?
We generally check or test something to find out whether there are any defects in the Product. In the above example, we have tested the Television to find out whether by chance you have received a defective piece. And have just thought of returning it, if you find any defects in the recent brought TV.
So, what is a Software Testing then?
Instead of performing testing on a new Television, if you are performing Testing on a Software, it is known as a Software Testing. Hence in Software Testing, you will check whether your Software is working properly or not.
OK, but what is a Software?
The software is a set of computer programs, written with an intention to operate a computer and other related devices.
Examples for Software: Browsers, Web Applications, Operating Systems and many more. Even the page, you are reading now is part of a Software.
What is the purpose of testing a Software?
The purpose of testing a Software is to find out the mistakes made by developers while developing the code for it. Hence the purpose of testing a Software is to find out the defects in the Software.
Who generally tests the Software?
In straight words, its the job of a Software Tester who is specifically assigned to a Project in-order to test the Software. Hence the role of a Software Tester is to test Software. While the developer is busy in developing the code for a Software, a Software Tester will specifically test the Software to check whether the Software developed by the developers is working without any defects.
What is the purpose of finding defects in a Software?
Software Tester is generally assigned to a Project, in order to test a Software before it gets released into the market. If any Software is released into the market without performing any testing, there is a good chance that the Software may contain defects.
Let’s say an online banking Software is released into the market without performing any testing on it and unfortunately there are some defects in the developed Software. The online banking Software is displaying wrong account balance in the user’s account. When any real time user, comes across such kind of defects, the below things may happen:
- He will lose faith in this online banking software
- Raises a case against the bank
- Moves to another bank, as the things the quality of Software provided by the current bank is bad
So the purpose of finding defects in a Software is to improve the quality of the Software by removing the defects from it before it gets released into the market.
But, how do you find defects in a Software?
The main purpose of Software Testing is to test whether the Software is working as expected and is defect free. But, we need to know how the testers identify defects in a Software. Software Testers verifies and validates the Software, in order to find the defects.
What is verification?
Verification is the process of checking whether the Software developed by the developers is according to the business requirements and needs. i.e. To check whether the developers have developed a Software as specified by the business clients.
In General, development team assigned to develop the project will be provided with a document containing all the requirements that business clients are expecting in the Software. We generally call this document as a Requirements Specification Document.
As Testers, we also collect this document from the developers to check whether the Software developed by the developers is developed according to the requirements specified in the document. This process is known as Verification. Hence verification is the process of checking whether the Software is developed according to the requirements.
Real world example to understand Verification: Let’s say you have purchased a TV and are testing it using the User Guide which generally comes along with the TV. It’s not about testing whether you are able to turn on and turn off the TV. User guide may include many things like connecting the VGA cable, Setting different modes, Operating with a remote and without a remote and the list goes on. So you can perform Verification on TV, by checking whether all the things specified in the User Guide are working. No doubt, you have to perform a large number of verification checks. When you are done with all the checks and have not observed any defects during the check, then you certify that the quality of your newly purchased TV is good.
In Software Testing, Requirements Specification Document is similar to the User Guide in the above example. Hence verification is the process of checking whether all the requirements specified in the Requirements Specification Document are developed properly in the Software under test.
If Software Testers find any of the requirement in the Requirements Specification Document that is not developed properly in the Software under test, a defect will be reported by the testers and developers needs to fix it.
Example for verification in terms of Software Testing: let’s say if it is specified in the Requirements Specification Document to create a button with text “Submit” on the Login page. Developers in a hurry have developed a button with text “Summit”. When they provided this Login page for Software Testers to test, Testers will validate the functionality of the Login page against the Requirements Specification Document and have identified a defect that the text on the “Submit” button is wrongly spelled as “Summit”. Developers will fix this defect, which got resulted out of Validation checks performed by the Testing team.
What is validation?
Though the Software got developed as specified in the requirements document, we as testers have to perform Validation checks on the Software apart from the Verification checks. Validation is the process of checking whether the Software developed by the developers has met the end users needs or not.
Example of Validation in terms of Software Testing: Let’s say, the developers properly followed the Requirements Specification Documents and have correctly developed the “Submit” button on the Login page without any spelling mistakes. Developers have given the Login page to testers for testing to identify any defects. Software Testers have first performed the verification check and have not found any defects as all the requirements got properly implemented and hence passed the Verification checks. Tester assumes for a while that, he is an end user of the Software and tries to check various operations that an end user generally performs. But, when the Tester tried to click on the “Submit” button on the Login page as part of Validation check, he/she has observed that the “Submit” button is not working and hence login is not happening. This kind of checks falls into Validation process. Testers report a defect based on the Validation check and developer later fixes it. Hence validation is the process of checking whether the end user is able to use the Software.
Software Testing is the process of verifying and validating whether the software program works as expected. And the purpose of Software Testing is to find the defects in Software, with an intention of improving the quality of the Software before it gets released into the market.
Please leave your questions/comments/feedback below.
Happy Learning 🙂
Arun Motoori ( www.QAFox.com )