Software engineering is a very vast field, comprising of several activities to develop & deliver a particular software product. These activities are broadly categorized into two sub-processes, namely development and testing. Both the processes contributes equally to develop and deliver a quality software product as one involves the development based on the requirements while the other ensures the quality of the developed application before its release or delivery to validate those requirements.
However, the treatment and the importance given to the development process is significantly more, compare to testing.
Once such instance could be seen in the number of strategy/standard models specified & used for both the process. For the development activity there are plenty of models available & used to carry out the software development in a particular manner to fulfil different kinds of need such as traditional waterfall model, spiral model, prototype model, agile model, etc. While, for a testing process, merely a handful of approaches/ models are available which are based on the development models and are incapable to verify and validate a software application against in-depth & complex requirement specifications like V model.
Then, why V-model is considered inappropriate or ineffective for the purpose of test design and development. The reasons which cutback the suitability factor of V-model for the test design and development may be seen through following points:
Beside above points, some general and factual points against the V model are:
Butterfly model is a test development model, consisting of two wings and a body which shows three components of a software testing process as depicted below:
The model is accountable for both verification and validation purposes and is suitable for the testing activities of the V development model. The three parts of a butterfly model defines and describes the amount of effort required for each specified software testing activity, namely test analysis, test design and the execution.
As per the model, more the efforts for the test analysis and the test design activity(large and broad left and right wing) will results into input of less efforts in the execution(the smaller body). Any sort of imbalance or disturbance among these three parts will be liable to produce negative results.Let's go through each of the pieces.
Left wing of the butterfly model represents the test analysis task which encompasses the activity of investigating and analysing the various aspects of a software application under the test to check the presence of error, mistakes, ambiguous specification, deviation, etc. This includes the testable requirements, test design, test artifact.
The process of analysing a software design should be completely different to that of test design as the former involves the software problem analysis to determine the efforts, resource and time required to create strategy and approach to develop a software product and come out with the best possible solution whereas the latter concerns with the validation of each output of the development stages.
A test analysis may be carried out either formally or informally by the tester. It depends upon the strategy and approach adopted by a tester. In formal analysis, a tester goes through test documented artifacts whereas informal analysis is being carried out under the circumstances of providing immediate feedback to the test designer which not only gives the advantage of validating the test artifacts against the design specifications but also helps a tester to have better understanding of the software.
Right wing of the model portrays the test design activity. After going through sufficient and detailed analysis of the various aspect of a software product including the test artifacts, testers are now ready to implement requirements along with the deliverables of the test analysis phase to design the test cases, used in validating the test design artifacts. A test design activity requires the implementation of best approaches, practices, methodology, to give shape to the test artifacts with the help of test analysis results in order to fulfil and achieve the set targets and objectives.
During the test designing process, a tester considers and implements one or more technique to cover each of the specified requirements and come up with a test design, capable of preventing, locating and removing the bugs, in an effective and efficient manner.
The ultimate goal of a test designing activity is to come up with a such design which is capable to cover each and every aspect and requirements of a software product along with the accomplishment of the set goals and objectives.
We have covered up both the wings of the butterfly model i.e. test analysis and test design. Now, it's time to define and describe the body of the model i.e. a small insect. As a butterfly insect is benefited or affected by its both wings, so as the test execution activity which is influenced by the test analysis and test design task.
However, informal execution of the tests is a normal procedure for the test design as well as for the software design and development activity. But for the butterfly model, designed tests are executed formally together with the joint efforts of developers and testers, where a developer tries to portray his developed software as a bug free application functioning desirably, while a tester has already gone through and identified the bugs and defects present in the software. This helps a tester to remove the already identified bugs before the starting the formal execution of the test.
Butterfly model is a unique model, especially designed for the purpose of test design and development, which does not lay its foundation on or follows any of the development model and its effectiveness may be increased by incorporating the said approach in the V-model of Software Development.