Pages

Tuesday 31 December 2013

Agile!!! An Effective Testing Process

AGILE!!! AGILE!!! AGILE!!! one of the common word we are listening in testing society  now a days. What does agile means, Why agile came into picture, What makes agile differs from the regular testing practice.

The word "agile" in dictionary means, quicker, smart. The same in the software testing is make the testing process in quicker and smarter way. Main agenda of the agile process is to ensure delivering the business value desired by the customer at frequent intervals, working at a sustainable pace.

Agile principles 

The Agile Manifesto(Wikipedia) is based on the below twelve principles:

  1. Customer satisfaction by rapid delivery of useful software
  2. Welcome changing requirements, even late in development
  3. Working software is delivered frequently (weeks rather than months)
  4. Working software is the principal measure of progress
  5. Sustainable development, able to maintain a constant pace
  6. Close, daily cooperation between business people and developers
  7. Face-to-face conversation is the best form of communication (co-location)
  8. Projects are built around motivated individuals, who should be trusted
  9. Continuous attention to technical excellence and good design
  10. Simplicity—the art of maximizing the amount of work not done—is essential
  11. Self-organizing teams
  12. Regular adaptation to changing circumstances
 There are several models used by the organizations during software life cycle. For all these models WaterFall, a traditional testing approach is the basic I believe. Basically water-fall model has the linear activity.Once a phase has finished its part, these outputs are taken as inputs to the next phase. However, due to its sequential nature, this model is not capable of dealing with iterations and evolutions. We cannot alter the requirements in middle of the phases. Testing cannot be started until development phase completed. If any bug identified during one phase, it should be solved in same phase itself. Bugs identified in later phases of this model will consume more money as well as time. The main disadvantage of this model is, no iterative evolution for any phase once a phase done cannot go back.From a tester point of view a traditional testing approach looks like,
Image Courtesy: Google Images
To over come the pitfalls of the traditional testing approach, several advanced models have been developed. Among them V-Model is the most popular and many organization started following this model. Typically V-Model looks like,

                             
Image Courtesy: Google Images

In short V model is a Verification and Validation model. The left pane which is top to bottom is the Verification phase and the right pane which is bottom to top. The reason for calling it V is because most of the phases on the left have a corresponding phase of activity on the right. Coding part will started after all the design and document part has been completed, and corresponding test deign needs to be prepared.
  • BRS is prepared and verified during requirement analysis as well as the user acceptance test deign will be prepared.
  • SRS will be prepared and verified during system design and Test cases and scenarios prepared for all the functional specifications.
  • High Level Design(HLD) will be prepared during architectural phase based on the specifications and integration test design parallel to it.
  • Low Level Design(LLD) will be prepared for modular design phase and coding phase is officially started based on the LLD.
  • Validation part will be started after coding phase by executing according to the respective test design plan
 Advantage of the V-Model is validation and verification will done parallel in the same phase itself. It gives more importance to the strict process flow to develop a quality product.

Disadvantage is, if any changes made in middle of the phase then all its design documents need to be updated from the initial level. Client involvement during the software development is negligible.

The main difference we can observe in the agile process is the customer involvement during software development process and frequent deliverable. And the interesting thing is all the phases will start in parallel pace. New requirements are also accepted in the middle of the development. Here software will be developed in am incremental way I.e, a module is designed and developed. Immediately given for the testing and after that takes the customer feedback. In the same process, another module will be developed and integrate it with the previous module and release to the customer feedback.The same process would be iterated n number of times. Typically life cycle of agile methodology would be like,

Image Courtesy: Google Images

The above figure shows us agile process is a iterative with integrating module by module. To fulfill the agenda of the agile methodology some hard work needs to be beard by the team. Apart from the figure above in life cycle, few activities are also part of agile process. They are Regular Team Meetings, F2F Communication.

Team meeting is one of the most common practice and often easiest to implement. Each module is divided into the teams. Teams will be called as Sprints. Team players named as Scrums and Scrum Master is the Team Leader/Project Lead. All the regular meetings should be time boxed, facilitated by the scrum master. Agenda of the meeting would be discussed mainly on Tasks done by the scrum and the blockers struck. Scrum master will correlate the road blockers with the development team. Also the Project Report(PR) meeting should be held in a weekly or monthly basis with the customer, so that client can easily know the status of the project.

A face to face session arranged among SME's Developers and Testers. A defect management meeting about the high level defects in the application with SME's. They must discuss and prioritize all the high level defects and conclude are they valid one, if valid what is the impact of that on the application due to that. Who can fix this bug and more. Often walkthrough should be arranged about the changing parts, new working process or any additions requirements. Ensure that both development and testing teams are shared with the same kind of information.

That's it Agile is just Develop-> Integrate-> Test-> Feedback-> Release with sufficient iterations until customer requirements fulfilled. Disadvantage of agile process is, regular meetings. Yes, if the facilitator is  not well organized. If the initial project has planned without proper plan, then defensively the intended out come will be deviated.  However, the disadvantages can be nullified if you have a good consultant at hand.


Happy Testing...




A Journey towards Testing...:)


No comments:

Post a Comment