V-model, Agile methodology, Agile manifesto

Posted: August 9, 2012 in all about testing
Tags: , ,

                                                           The V Model

The V model is a modified version of the Waterfall method. As opposed to the Waterfall method, this one was not designed in a linear axis; instead the stages turn back upwards after the coding phase is done so that it makes a V shape and hence the name – V Model. It was put forth by Paul E. Brook in 1986. Let’s look at the different stages, test processes, techniques, advantages and disadvantages of this method.
 
About The Cyclic Phases
The V Model is in contrast to the Waterfall method in more than one way. This developmental process is balanced and relies on the verification from the previous steps before proceeding forward. So the cycle of the model has been divided into several phases and each one is supposed to yield a predefined product.
When the product from one phase has reached completion, it will then form the basis for the next phase. This signifies the importance of verification in this model. Similar to the waterfall model, one progresses to the next step when the previous one has been completed. However in the V Model, the product from every phase needs to be checked and approved before moving forward.
This way of verification continues for all the stages and with subsequent phases, one receives a new base of an approved product which instills more confident in the project.
verification and validation
 
 

The Various Stages of the V model

1.         Requirement Analysis

This is the first step in the verification process. It is in here that the project and its function is decided. So a lot of brainstorming and documentation reveals what all will be required to produce that program or product. During this stage the employees are not going to discuss how it is going to be built; it is going to be a generalized discussion and a user requirement document is put forth. This document will carry information regarding the function of the system, performance, security, data, interface etc.

This document is required by the business analysts to convey the function of the system to the users. So it will merely be a guideline.

2.         System Design

Like the name of the phase suggests, here the possible design of the product is formulated. It is formulated after keeping in mind the requirement notes. While following the documents, if there is something that doesn’t fit right in the design, then the user is made aware of it and changes are accordingly planned. Diagrams and data dictionary is also produced here.

3.         Architecture Design

The architecture design, also known as the computer architecture design or the software design should realize the modules and the functionality of the modules which have to be incorporated.

4.         Module Design

In the module design, the architectural design is again broken up into sub units so that they can be studied and explained separately. The units are called modules. The modules can separately be decoded by the programmer.

The Validation Phases of the V model

1.         Unit Testing

A unit in the programming system is the smallest part which can be tested. In this phase each of these units are tested.

2.         Integration Testing or Interface Testing

In this phase the separate entities will be tested together to find out the flaws in the interfaces.

3.         System Testing

After the previous stage of interface testing, in this phase it is checked if the system meets the requirements that have been specified for this integrated product.

4.         Acceptance Testing

In the acceptance test, the integrated product is put against the requirement documents to see if it fulfills all the requirements.

5.         Release Testing

It is in here that judgment has to be made if the product or software which is created is suitable for the organization.

Advantages of the V Model

The biggest advantage of using the V Model is that unlike the Waterfall model and the aorta life cycle method, every stage is tested.

Disadvantages of the V Model

It assumes that the requirements do not change.

The design is not authenticated.

The Requirements are not verified.

At each stage there is a potential of errors. The first testing is done after the design of modules which is very late and costs a lot.

                                                  Agile Methodology

Today’s trend in Software Development is racing towards achieving Targets, Quality and Customer Satisfaction within a limited time frame. This is mostly because the Business Scenario in today’s world is different from what it used to be, a few years ago. Most of the Product Development companies are now adopting a new age concept called “Agile Methodology” for the Software Development Life Cycle.

Software Testing has been a prime focus ever since the IT Industry has realized the importance of Quality of Deliverables, no matter what methodology we follow with the Software Development. However, since the Software Testing is a part of the Business Model, the Testing process also needs to change accordingly. Needless to say, we have so called “Agile Testing” as a result of such a Business Model.
 

 

Introduction to Agile Testing

While the given application under test is still evolving depending upon the customer needs, the mindset of the end user and the current market condition, it is highly impractical to go for the usual standard SDLC Models like Water Fall, V&V Model etc. Such models are most suitable for the Applications that are stable and non-volatile. The concept of “Time-To-Market” is the key word in today’s IT Business that compels the Software vendors to come up with new strategies to save the time, resources, cut down the cost involved and at the same time, deliver a reliable product that meets the user requirements. In this case, a reasonably good amount of end-to-end testing is carried out and the product could be acceptable with known issues/defects at the end of an intermediate release. These defects are harmless for the Application usability.
To adopt such a process in a systematic way, we have a new concept called Agile Methodology. This methodology continuously strives to overcome the issues of dynamically changing requirements while still trying to maintain a well-defined process.

The process is as follows:

1. The Customer prepares the Business Requirements and the Business Analyst or the Engineering team reviews it. Ideally, the Quality Assurance/Testing team is also involved in reviewing these requirements in order to be able to plan further stages accordingly.

2. During the Design and Implementation stages, the Engineering team writes User Stories and the analysis of issues at various stages. The Customer reviews these on regular basis and updates the Requirement specifications accordingly. The Testing team would follow up on regular basis at every stage until a consolidated documentation is prepared. This is to ensure that the Customer, the Engineering team and the Testing team are at the same page always and thus ensuring complete test coverage.

3. While the Engineering team starts the implementation, the Testing team starts with test planning, test strategies and test cases preparation. These would be properly documented and handed over to the Customer and the Engineering team for review. This is to ensure the complete test coverage and avoid unnecessary or redundant test cases.

4. As and when the Developer implements the code, the Testing team identifies if the application can be built using this code for a quick testing. This is to identify the defects at the early stage so that the developer can fix them in the next round on priority basis and continue with further development. This iteration continues until the end of the code implementation. Once the testing cycle starts, the Test team can now focus more on major test items such as Integration, Usability Testing and System Testing etc.

Scope of testing an application
The Testing team knows the complexity involved and it is accepted by the customer that the software development and/or the enhancements and hence the testing is a continuous process. Testing of the application at a black box level would suffice in order to identify the issues and raise the defects by the Testing team. The application continues to evolve until it reaches the stage of final acceptance. Hence the scope of testing would continue to evolve as per the Customer needs.

Process followed at various stages in the product life cycle
Every intermediate release of the product would be divided into two short cycles, usually of the duration of 40 days each. Each cycle would be executed in the following stages. The roles and responsibilities of every individual and the team are clearly defined for each stage.

Design Specifications: The Testing team’s efforts would focus on performing any tool or process improvements and reviewing, understanding, and contributing to the nascent specifications.

Implementation: While the Engineering/Development team is implementing the code, Testers would develop complete Testing Plan and Test Sets (set of test cases) for each of the features included in the cycle. Engineering features must be included; they would likely require some level of collaboration with the engineering feature developer. All Test Sets should be ready to execute by the end of implementation period of the respective cycle. After Test Set preparation, calculate the time estimation and prioritization for the Test Set execution based on the complexity and expected execution time for each test suite.While the test execution time estimation is notoriously difficult, this number should provide the Customer with a starting point for benchmarking.

Testing/QA: Test Set execution, raising defects and follow up with the Engineering Team. End-to-end validation of the defects. Focus simultaneously on improving the quality of test cases. Watching out for and adding new cases as testing proceeds. Testing the software end-to-end to discover regressions and subtle systemic issues. Learning to focus more on using the time available to uncover the largest number of and most important bugs. Any deviation from the estimated time should be communicated across well in advance, so that the schedule can be worked upon depending upon the priority of the pending tasks. If there are certain issues or test cases blocking due to unknown errors, they would be differed until the beginning of next Testing/QA Cycle.

Before acceptance: Follow up on ad-hoc requests/ changes in requirements on a regular basis, besides trying to complete the defined tasks.

Looking at various broad areas of testing of a complex application, the system structure, and the depth of functionality implemented and the level of complexity, the complete end-to-end Test Execution within a limited time frame would be next to impossible with any standard SDLC Model available. The Product/application involves a good deal of learning of how and when to use the application and requires that the end user know the functionality of various modules prior to constructing a User defined model (UDM) for his Business purpose or even for testing.

Reasons for Agile Testing methodology to test an Application

The testing wouldn’t be 100% complete in this case before the finished product reaches the hands of the end user. This is true especially when the target audience and its system structure are unknown. Different users have their own set of ideas and unique problems. Given this fact, it is hard to say that it is 100% bug free software when it reaches the customer. Hence, taking into account the constraints involved in using the standard SDLC Models, it is worth adopting an approach such as Agile Testing, which is more suitable for the dynamically changing requirements.

Context Driven Testing and Rapid Testing:

This type of testing is what usually the Agile Testers incorporate. Context Driven testing is the one where the test scenarios are not known beforehand. It mostly comes from the context in which the application is being executed. In our case, it is constructing the UDMs based on a given use case from the targeted end user and test it for the scenarios that are explained by his system configuration. It also includes constructing the UDMs based on any trouble-shooting discussion arising out of defects pointed out during the Customer acceptance and testing.

Rapid Testing is a process of defining our own strategies to test the Software, not necessarily following any specific Process or a Model. It focuses mainly on identifying the defects as quickly as possible rather than focusing on the end user requirements.

Heuristic approach is used in such cases. The tester uses his common sense and previous work experience to test the application at various levels in order to figure out where the application stands.

 

 

 

 

 

 

Extreme/Agile method

Advantages
  • Promotes teamwork and cross training. Functionality can be developed rapidly and demonstrated.
  • Resource requirements are minimum.
  • Suitable for fixed or changing requirements
  • Delivers early partial working solutions.
  • Good model for environments that change steadily.
  • Minimal rules, documentation easily employed.
  • Enables concurrent development and delivery within an overall planned context.
 
Disadvantages
  • Not suitable for handling complex dependencies.
  • More risk of sustainability, maintainability and extensibility.
  • An overall plan, an agile leader and agile PM practice is a must without which it will not work.
  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
     
                                    AGILE MANIFESTO
     
    Individuals and interactions over processes and tools
     Working software over comprehensive documentation
     Customer collaboration over contract negotiation
     Responding to change over following a plan
     
     
    Twelve Principles of Agile Software
    • Our highest priority is to satisfy the customer through early and continuous delivery of Valuable software.
    • Welcome changing requirements, even late in
        development. Agile processes harness change for the      customer’s competitive advantage.
     
     
    • Deliver working software frequently, from a
           couple of weeks to a couple of months, with a
           Preference to the shorter timescale.
     
    • Business people and developers must work
           together daily throughout the project.
     
    • Build projects around motivated individuals.
           Give them the environment and support they
           need, and trust them to get the job done.
     
    • The most efficient and effective method of
           conveying information to and within a
          development team is face-to-face conversation.
     
    • Working software is the primary measure of
           Progress.
     
    • Agile processes promote sustainable
          development. The sponsors, developers, and
          users should be able to maintain a constant pace
          Indefinitely.
     
    • Continuous attention to technical excellence and
           good design enhances agility.
     
    • Simplicity – the art of maximizing the amount
           of work not done – is essential.
     
    • The best architectures, requirements, and
           designs emerge from self-organizing teams.
     
    • At regular intervals, the team reflects on how to
          become more effective, then tunes and adjusts its
          Behavior accordingly.
     
     
     
     
     
     
     
Comments
  1. deepika says:

    Informative thanks for the post…

Leave a comment