Thursday, September 26, 2013

The crux of Software Testing can be understood by V-model

It is a general conception that the software testing is something, which needs to be done after the software code has been written. It is quite obvious that we can not test something, which does not exist. Thus we can assume that testing is simply execution of set of pre planned tests. For that we essentially need software that is actually working. However fact remains that testing activities include much more than simple execution of the tests. Let us see as what it is.

The V-model of software development illustrates when software testing activities should take place. The V-model shows that each software development activity has a corresponding testing activity. The tests at each level exercise the corresponding development activity. The same principles apply no matter what software life cycle model is used. For example, Rapid Application Development (RAD) is a series of small Vs.

The simplified V-model in following figure shows four levels of software development and software testing activity. Different organizations may have different names for each stage; it is important that each stage on the left has a partner on the right, whatever each is called.


The most important factor for successful application of the V-model is the issue of when the test cases are designed. The test design activity always finds defects in whatever the tests are designed against. For example, designing acceptance test cases will find defects in the requirements, designing system test cases will find defects in the functional specification, designing integration test cases will find defects in the design, and designing unit test cases will find defects in the code. If test design is left until the last possible moment, these defects will only be found immediately before those tests would be run by the software testing engineers, when it is more expensive to fix them.

Test design does not have to wait until just before tests are run; it can be done at any time after the information which those tests are based on becomes available. Then the effect of finding defects is actually beneficial rather than destructive, because the defects can be corrected before they are propagated.

Of course, the tests cannot be run by the testing engineers until the software has been written, but they can be written early. The tests are actually run in the reverse order to their writing, e.g. unit tests are written last but are run first by the Software Testing engineers.

No comments: