Loading

Butterfly Model


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.

software engineering

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.

What is V model?

V model is a Software Development Life Cycle (SDLC) model which is also implemented in the software testing life cycle to carry out the testing process. Like waterfall model, V model involves the sequential execution of the defined stages of development, where no phase could be initiated unless its previous phase gets completed or terminated. However, the V model provides the advantage of parallel execution of testing activities for each of the development stages.

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:
  • Firstly, V model gives the false expression of the linearization of a non-linear development process as development phase usually perceives the multiple iterations which may be seen in the spiral model of software development. The actual development is based on the software design artifact which is based on the requirement specification and is being developed manually by a development or a project/business management professional. Thus, the presence of error or defect in the software design artifact can’t be neglected. Irrespective of error size and intensity, the software design artifact needs to be corrected and re-developed and thereby requires one complete iteration for its re-designing, which is not technically feasible in the V-model approach.
  • Software design artifact is followed by the test design artifact and with the unidirectional flow of the V-model approach it is difficult or infeasible for the developers to analyse the feedbacks received during the process and bring certain necessary amendments in the design artifact. The software design based on unclear or ambiguous requirements will lead to the development of inappropriate or ineffective test cases.
  • V-model involves the extraction and development of test design artifacts from the software design artifact only and restricts or avoids the consideration of all other necessary sources and aspects i.e. test artifact is solely based on the software artifact.

Beside above points, some general and factual points against the V model are:

  • It is a rigid and a non-flexible approach.
  • Requires plethora of technical resources along with the technical expertise.
  • Risks in meeting the customer requirements are higher as it does not involve the production of any prototype.

The above said limitation and disadvantage of software development model in designing the tests has lead to the evolution of a newly developed approach namely "Butterfly Model" solely for the purpose of test design and development.

What is Butterfly Model?

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:

butterfly model

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.

Test Analysis

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.

Test Design

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.

Test Execution

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.

Conclusion:

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.