Agile Model and Methodologies

What is Agile?

AGILE is a methodology that promotes continuous iteration of development and testing throughout the software development life cycle of the project. Agile model means ability to move quickly. Both development and testing activities are concurrent unlike the Waterfall model.
The agile software development emphasizes on four core values.
1. Individual and team interactions over processes and tools
2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan

 

Methodologies of Agile Testing

Agile model and Agile testing
Scrum

SCRUM is an agile development method which concentrates specifically on how to manage tasks within a team based development environment. Basically, Scrum is derived from activity that occurs during a rugby match. Scrum believes in empowering the development team and advocates working in small teams (say- 7 to 9 members). It consists of three roles, and their responsibilities are explained as follows:
Scrum Master
Master is responsible for setting up the team, sprint meeting and removes obstacles to progress
Product owner
The Product Owner creates product backlog, prioritizes the backlog and is responsible for the delivery of the functionality at each iteration
Scrum Team
Team manages its own work and organizes the work to complete the sprint or cycle

Process flow of Scrum

Process flow of scrum testing is as follows:
1. Each iteration of a scrum is known as Sprint
2. Product backlog is a list where all details are entered to get end product
3. During each Sprint, top items of Product backlog are selected and turned into Sprint backlog
4. Team works on the defined sprint backlog
5. Team checks for the daily work
6. At the end of the sprint, team delivers product functionality

eXtreme Programming (XP)

Extreme Programming technique is very helpful when there is constantly changing demands or requirements from the customers or when they are not sure about the functionality of the system. It advocates frequent “releases” of the product in short development cycles, which inherently improves the productivity of the system and also introduces a checkpoint where any customer requirements can be easily implemented. The XP develops software keeping customer in the target.
Business requirements are gathered in terms of stories. All those stories are stored in a place called the parking lot.
In this type of methodology, releases are based on the shorter cycles called Iterations with span of 14 days time period. Each iteration includes phases like coding, unit testing and system testing where at each phase some minor or major functionality will be built in the application.

Extreme Programming

Phases of eXtreme programming

1. Planning
2. Analysis
3. Design
4. Execution
5. Wrapping
6. Closure

There are two storyboards available to track the work on a daily basis, and those are listed below for reference.

Story Cardboard
This is a traditional way of collecting all the stories in a board in the form of stick notes to track daily XP activities. As this manual activity involves more effort and time, it is better to switch to an online form.
Online Storyboard
Online tool Storyboard can be used to store the stories. Several teams can use it for different purposes.

Crystal Methodologies

Crystal Methodology is based on three concepts
1. Chartering: Various activities involved in this phase are creating a development team, performing a preliminary feasibility analysis, developing an initial plan and fine-tuning the development methodology
2. Cyclic delivery: The main development phase consists of two or more delivery cycles, during which the Team updates and refines the release plan , Implements a subset of the requirements through one or more program test integrate iterations , Integrated product is delivered to real users and Review of the project plan and adopted development methodology
3. Wrap Up: The activities performed in this phase are deployment into the user environment, post- deployment reviews and reflections are performed.

Dynamic Software Development Method (DSDM)

DSDM is a Rapid Application Development (RAD) approach to software development and provides an agile project delivery framework. The important aspect of DSDM is that the users are required to be involved actively, and the teams are given the power to make decisions. Frequent delivery of product becomes the active focus with DSDM. The techniques used in DSDM are
1. Time Boxing
2. MoSCoW Rules
3. Prototyping
The DSDM project consists of 7 phases
1. Pre-project
2. Feasibility Study
3. Business Study
4. Functional Model Iteration
5. Design and build Iteration
6. Implementation
7. Post-project

Feature Driven Development (FDD)

This method is focused around “designing & building” features. Unlike other agile methods, FDD describes very specific and short phases of work that has to be accomplished separately per feature. It includes domain walkthrough, design inspection, promote to build, code inspection and design. FDD develops product keeping following things in the target

1. Domain object Modeling
2. Development by feature
3. Component/ Class Ownership
4. Feature Teams
5. Inspections
6. Configuration Management
7. Regular Builds
8. Visibility of progress and results

Lean Software Development

Lean software development method is based on the principle “Just in time production”. It aims at increasing speed of software development and decreasing cost. Lean development can be summarized in seven steps.

1. Eliminating Waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building Integrity
7. Optimize the whole

Kanban

Kanban originally emerged from Japanese word that means, a card containing all the information needed> to be done on the product at each stage along its path to completion. This framework or method is quite adopted in software testing method especially in agile testing.

Agile metrics

Metrics that can be collected for effective usage of Agile is:
1. Drag Factor – Effort in hours which do not contribute to sprint goal , Drag factor can be improved by reducing number of shared resources, reducing the amount of non-contributing work and New estimates can be increased by percentage of drag factor -New estimate = (Old estimate+drag factor)
2. Velocity – Amount of backlog converted to shippable functionality of sprint
3. No of Unit Tests added
4. Time taken to complete daily build
5. Bugs detected in an iteration or in previous iterations
6. Production defect leakage