Agile Testing - Methodologies
Agile is an iterative development methodology, where the entire project team participates in all the activities. The requirements evolve as the iterations progress, through collaboration between the customer and the self-organizing teams. As Coding and Testing are done interactively and incrementally, during the course of development, the end-product would be of quality and ensures customer requirements.
Every iteration results in an integrated working product increment and is delivered for User Acceptance Testing. The customer feedback thus obtained would be an input to the next / subsequent Iterations.
Continuous Integration, Continuous Quality
Continuous Integration is the key for Agile Development success. Integrate frequently, at least daily such that you are ready for a release as and when required. Testing in Agile becomes an essential component of all the phases of the development, ensuring continuous quality of the product. Constant feedback from everyone involved in the project adds to the quality of the product.
In Agile, communication is given utmost importance and the customer requests are received as and when necessary. This gives the satisfaction to the customer that all the inputs are considered and working quality product is available throughout the development.
Agile Methodologies
There are several Agile Methodologies that support Agile Development. The Agile Methodologies include −
Scrum
Scrum is an Agile development method that emphasizes on team-centric approach. It advocates participation of the entire team in all the project development activities.
XP
eXtreme Programming is customer-centric and focuses on constantly changing requirements. With frequent releases and customer feedback, the end-product will be of quality meeting customer requirements that are made clearer during the process.
Crystal
Crystal is based on chartering, cyclic delivery and wrap up.
- Chartering involves forming a development team, carrying out a preliminary feasibility analysis, arriving at an initial plan and the development methodology.
- Cyclic Delivery with two or more delivery cycles focuses on the development phase and final integrated product delivery.
- During Wrap up, deployment into the user environment, post-deployment reviews and reflections are performed.
FDD
Feature Driven Development (FDD) involves designing and building features. The difference between FDD and other Agile Development Methodologies is that the features are developed in specific and short phases separately.
DSDM
Dynamic Software Development Method (DSDM) is based on Rapid Application Development (RAD) and is aligned to the Agile Framework. DSDM focuses on frequent delivery of the product, involving users actively and empowering the teams to make quick decisions.
Lean Software Development
In Lean Software Development, focus is on eliminating waste and giving value to the customer. This results in rapid development and product of value.
Waste includes partially done work, irrelevant work, features that are not used by the customer, defects, etc. that add to delays in delivery.
The Lean Principles are −
- Eliminate Waste
- Amplify Learning
- Delay Commitment
- Empower the Team
- Deliver Fast
- Build Integrity in
- See the Whole
Kanban
Kanban focuses on managing work with an emphasis on just-in-time (JIT) delivery, while not overloading the team members. The tasks are displayed for all the participants to see and for the Team Members to pull work from a queue.
Kanban is based on −
- Kanban Board (Visual and Persistent across the Development)
- Work-in-progress (WIP) Limit
- Lead Time
Agile Testing Methodologies
The testing practices are well defined for every project, whether Agile or not, to deliver quality products. Traditional Testing principles are quite often used in Agile Testing. One of them is Early Testing that focuses on −
- Writing Test Cases to express the behavior of the system.
- Early Defect Prevention, detection and removal.
- Ensuring that the right test types are run at the right time and as part of the right test level.
In all the Agile Methodologies we discussed, Agile Testing in itself is a Methodology. In all the approaches, Test Cases are written before Coding.
In this tutorial, we will focus on Scrum as the Agile Testing Methodology.
The other commonly used Agile Testing Methodologies are −
- Test-Driven Development (TDD) − Test-Driven Development (TDD) is based on coding guided by tests.
- Acceptance Test-Driven Development (ATDD) − Acceptance Test-Driven Development (ATDD) is based on communication between the customers, developers and testers and driven by pre-defined Acceptance Criteria and Acceptance Test Cases.
- Behavior-Driven Development (BDD) − In Behavior-Driven Development (BDD) testing is based on the expected behavior of the software being developed.
Agile Testing Lifecycle
In Scrum, the Testing activities include −
- Contributing to User Stories based on the expected behavior of the System depicted as Test Cases
- Release Planning based on Test Effort and Defects
- Sprint Planning based on User Stories and Defects
- Sprint Execution with Continuous Testing
- Regression Testing after the completion of Sprint
- Reporting Test Results
- Automation Testing
Testing is iterative and sprints based as depicted in the diagram given below −