1. What isTesting?
Software Testing can be defined as an activity that helps in finding out bugs/defects/errors in a software system under development, in order to provide a bug free and reliable system/solution to the customer.
In other words, you can consider an example as: suppose you are a good cook and are expecting some guests at dinner. You start making dinner; you make few very very delicious dishes (off-course, those which you already know how to make).
Finally, when you are about to finish making the dishes, you ask someone (or you yourself) to check if everything is fine and there is no extra salt/chili/anything, which if is not in balance, can ruin your evening (This is called 'TESTING').
This procedure you follow in order to make it sure that you do not serve your guests something that is not tasty! Otherwise, your collar will go down and you will regret your failure!
2. Why We Go for Testing?
Well, while making food, it's ok to have something extra, people might understand and eat the things you made and may well appreciate your work. However, this isn't the case with Software Project Development.
If you fail to deliver a reliable, good, and problem free software solution, you fail in your project and probably you may lose your client. This can get even worse!
So, in order to make sure, that you provide your client a proper software solution, you opt for testing. You check out if there is any problem, any error in the system, which can make the software unusable by the client.
You make software testers test the system and help in finding out the bugs in the system to fix them on time. You find out the problems and fix them and again try to find out all the potential problems.
3. Why is there a Need of Testing?
This is a right question because, prior to the concept of software testing, the testing process existed, but the developer(s) performed it at the time of development.
However, you must know that, if you make something, you hardly feel that there can be something wrong with what you have developed. We feel that there is no problem in our designed system as we have developed it and it is perfectly functional. So, the errors of the system remain hidden and they raise their head when the system goes into production.
On the other hand, it's a fact that, when one person starts checking something which is made by some other person, there are 99% chances that checker/observer will find some problem with the system (even if the problem is with some spelling that by mistake has been written in wrong way.). Really weird, isn't it? But that's a fact!
Even though its wrong in terms of human behavior, this thing has been used for the benefit of software projects (or you may say, any type of project). When you develop something, you give it to get checked and to find out any problem, which never came up while the development of the system.
Because, after all, if you could minimize the problems with the system you developed, it's beneficial for yourself. Your client will be happy if your system works without any problem and will generate more revenues for you.
4. What is the Role of "a Tester"?
A tester is a person who tries to find out all the possible errors/bugs in the system with the help of various inputs to it. A tester plays an important part in finding out the problems with system and helps in improving its quality.
If you could find all the bugs and fix them all, your system becomes more and more reliable.
A tester has to understand the limits, which can make the system break and work abruptly. More the number of valid bugs a tester finds out, better the tester he/she is!