Agile Testing Methodologies
Following are noticeably the few important agile testing methodologies that makes agile testing much easier and the most sought after.
- Scrum - It is an agile development technique that focuses on strategies on how to manage activities within a team. Scrum promotes the idea of working in small teams that primarily consists of three types of roles and responsibilities - scrum team, product owner and scrum master. The scrum master is responsible for preparing the team and removing hurdles, product owner is responsible for creating product backlog and prioritizing the tasks for efficient delivery at the end of each iteration and finally the scrum team is responsible for managing the tasks to complete an iteration or sprint.
- Crystal Methodologies - This techniques consists of three stages - chartering, cyclic delivery and wrap up. Chartering involves creation of development team, conducting preliminary feasibility analysis, developing initial plan and fine tune development process.
Cyclic delivery consists of few delivery cycles during which a team updates and refines release plan, implements a set of requirements through more than one integrated iterations, delivery of integrated product to end users and finally review the plan of the project and adopted development methodology.
The core of 'Crystal Methodology' revolves around a simple idea - people and how they interact. The ideology behind this principle is that people working on a software development project at a given point of time, are supposed to strike a conversation pertaining to the progress of project, business criticality and business priority so that the foundation is set right and the team strives to achieve the goals with the right blend of resources.
Crystal methodology comprises of a collection of approaches to software development and testing. The pictorial representation shows a demarcation between the various levels shown in columns, and below is the depiction of the number of people working in a project. As the size and complexity of a project increases the colours used to portray that column becomes darker.
Generally the colours used to represent the levels are - clear (no colour), yellow, Orange, Red and Maroon.
- Dynamic Software Development Method - It is a Rapid Application Development approach to software development that offers an agile project delivery framework. The participants of the team are expected to involve actively in the development activities with necessary decision making powers vested in them. A DSDM project involves 7 phases of software development - pre-project, feasibility study, business study, functional model iteration, design and build iteration, implementation and post-project.
- Feature Driven Development - This method emphasises on designing and building features of the product. Feature driven development defines short cycles of work that needs to be completed for each feature. Few activities in this process includes domain walkthrough, design inspection, code inspection and design. FDD develops a product considering few aspects like domain object modelling, component ownership, feature teams, inspections, configuration management, regular builds and visibility of progress and results.
The concept of FDD surfaced in 1999 through the book 'Java Modelling in Colour with UML'. A typical FDD lifecycle is depicted in the following pictorial representation.
- Lean Software Development - This technique is based on 'just in time production'. The idea is to increase the pace at which a software is being built and reduce cost as a result. Lean development can be categorised into seven parts -
Extreme Programming -Extreme programming or XP is a method which serves a useful purpose when customer demands are rapidly changing. It facilitates frequent releases of the product under development in short development cycles which is helpful in improving the productivity of the system.
- Eliminate waste
- Enhance learning
- Deferring commitment
- Early delivery
- Empower the team
- Build integrity
- Optimize the complete process
The motive behind such a technique is to define a checkpoint where requirements by a customer can be implemented easily.
An interesting fact about extreme programming is that it gathers requirements in the form of stories. An iteration spans across a span of about 14 days. Each iteration consists of coding, unit testing and system testing. A certain functionality is to be built in each iteration.
Extreme programming generally involves six phases:
- Planning - This stage involves identifying stakeholders, sponsors and gathering requirements in terms of the environment required to work on. Other factors include deciding on service level agreements and conditions.
- Analysis - Analyse and prioritize stories for making estimates about the same.
- Design - Prepare test scenarios by breaking down the entire work into small tasks.
- Execution - Involves coding, unit testing and executing manual test scenarios, converting manual test scenario into automation regression tests, post which a mid-iteration review is also done.
- Wrapping - Consists of small releases, regression tests, showing demos and reviewing the same.
- Closure - This involves preliminary launch of the product, providing training to the staff, production launch and production support.