What is Software Testing ?

Before understanding what is a 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 human beings, we generally Test something to find-out whether it is working or not.

Example for Testing: Lets say you have brought a new Television and installed it at your home. After installing it, 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 just 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, you 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 Software Testing then ?

Instead of performing the Testing on a new Television, if you are performing Testing on a Software, it is know as Software Testing. Hence in Software Testing, you will check whether your Software is working properly or not.

OK, but what is a Software ?

Software is a set of computer programs, written with an intention to operate computer and other related devices.

Examples for Softwares: Browsers, Web Applications, Operating Systems and many more. Even the page, you are reading now is part of a Software only.

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 this Software. 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 developer 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 release into the market without performing any testing, there is a good chance that the Software may contain defects.

Lets 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 users account. When any real time user, comes across such kind of defects, the below things may happen:

- He will lose faith on this online banking software
- Raises a case against the bank
- Moves to other bank, as the things the quality of the 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.

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: Lets say you have purchased a TV and are testing the Testing using the User Guide which generally comes along with a TV. Its 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 finds 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 developer needs to fix it.

Example for Verification in terms of Software Testing: Lets say, its specified in the Requirements Specification Document to create a button with text "Submit" on "Login" page. Developers in hurry have developed a button with text "Summit". When they provided this "Login" page to testers for testing, Software 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 defects, which got resulted out of Validation checks performed by Testing team.

So, what about Validation ?

Though the software got developed according to the requirements, we as a testers have to also perform Validation checks on the Software apart from Verification checks.

Validation is the process of checking whether the Software developed by the developers has met the end users needs or not.

Example for Verification in terms of Software Testing: Lets say, the developers properly followed the Requirements Specification Document and have correctly developed the "Submit" button in the "Login" page without any spelling mistakes. Developers have given the "Login" page to testers, 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 observed that the "Submit" button is not working and hence login is not happening. This kind of checks fall into Validation process. Tester reports 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.

So, what is Software Testing and what is the purpose of Software Testing?

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 release into the market.

No comments: