Introduction to Software Testing.
Software testing is a process to evaluate a given software application for some quality standards according to the requirement specifications provided by the client. This definition is very much formal. Let’s study it chunk by chuck in small pieces.
What is testing?
Testing is a very commonly used word and activity that we perform in our every day life. Whenever we purchase a new mobile, laptop or vehicle etc, we do test it. Let’s critically evaluate our testing process. When we test some thing, we actually compare its functionalities with our expectations. First of all, we make a list of expectations in our mind and then we try the application for every expectation. Let’s say, you purchase a new mobile. You would be expecting that it should make a call, take a picture, connect a wifi etc. You would unconsciously make a list of expectations in your mind and then you would try it against each expectations. Technically speaking, these expectations are called test cases. So we write test cases with expected outputs. While executing the test cases,we compare the expected outputs with the actual outputs. If the the expected outputs are equal to the actual outputs, we say the test is passed otherwise the test is failed. For instance, say, you test a mobile phone, you expect that it should be able to make a call. You dial a phone number, if the call is successfully established, the test is passed. Similarly in relationships, we set expectations from out loved ones and dear ones. When the expectations are met, we feel happy and owed. Otherwise, the relationships may get deteriorated and sometime may end in breakups. So testing is not just related to software applications, it is part and parcel of every day life.
Levels of Software Testing.
To gauge the maturity of the testing process, we may categorize the testing in different levels.
When we have no plan of testing at all. We are in reactive mode. We fix the bug when it comes in our way. We don’t try to find the bug systematically.
We consciously become to much positive. We try to show the bright side of the application. We choose such inputs which will never crash the application. The example of this testing level is when a company gives demo of a product to client. Or when students give presentation of their project in viva. In short, at this level, our goal is to hid the defects or bugs as much as possible.
At level 2, our approach is totally opposite to level 1. We become to much negative and choose such inputs which could crash the application. The example of this level can be when students present their projects and the evaporators try to choose such inputs which could crash the application. In short, at this level, the goal is to search the bugs only.
At level 3, the only concern is the business. The product is tested to the level acceptable by the clients. As long as the product is making profit, we damn care about quality. But when some competitor comes in market. We again start testing to enhance quality. In short, here again, our goal is not quality rather we bound testing and quality with business only.
It is the ultimate level of testing. Here we neither try to hide the bug, nor try to make the product crash nor try to align the testing with business and profit. Rather here our only goal is to enhance the quality. We just focus on enhancing quality as much as possible. As you know, the time to test a product is 3 times