To understand the concept of agile testing, first let's understand-
What is Agile?
AGILE is a methodology that promotes continuous iteration of development and testing throughout the software development life cycle of the project. Both development and testing activities are concurrent unlike the Waterfall method.
I hope we got an idea of Agile!!! Now, we can step on to Agile Testing.
What is Agile Testing?
Unlike the WaterFall method , Agile Testing can begin at the start of the project with continuous integration between development and testing. Agile Testing is not sequential (in the sense its executed only after coding phase) but continuous.
Agile team works as single team towards a common objective of achieving Quality .Agile Testing has shorter time frames called iterations (say from One to Four weeks ). This methodology is also called release or delivery driven approach since it gives better prediction on the workable products in short duration of time.
Methodologies of Agile Testing
There are various methodologies present in agile testing and those are listed below:
SCRUM is an agile development method which concentrates particularly on how to manage tasks within a team based development environment. Basically, Scrum is derived from activity that occurs during 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 responsiblefor 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
This is repository where requirements are tracked with details on the no of requirements to be completed for each release. It should be maintained and prioritized by scrum master and it should be distributed to the scrum team. Team can also request for new requirement addition or modification or deletion
Phases of Scrum testing:
There are three phases of scrum testing ,elaborated as follows:
- Test Design
- User stories are used for development of test cases .User stories are written by the product owner. User stories are short description of functionalities of the System Under Test. Example for Insurance Provider is –Premium can be paid using online system
- Test Cases are developed based on user stories which should be approved by business analysts and the customers
- Test Execution
- Test execution is carried out in a lab where both tester and developer work hand in hand.
- Defect are logged in Defect Management tool which are tracked on a daily basis. Defects can be discussed during scrum meeting
- Defects are retested as soon as it is fixed and deployed for testing
- Test Automation
- This also gains importance due to short delivery timelines
- Test Automation can be achieved by utilizing various opensource or paid tools available in the market .
- This proves effective in ensuring that everything that needs to be tested was covered. Sufficient Test coverage can be achieved with the close interaction with the team.
- Sprint(Cycle) meeting is held at the beginning to decide the scope of sprint, understand the product backlog, task estimates and assignments
- Daily 15 minutes meeting will be held where participants answer three questions.
- Last 24 hours tasks
- Plan for next 24 hours tasks
- What are all obstructions of the tasks?
Sprint Burn down Charts
Each day, Scrum Master records the estimated remaining work for the sprint. This is nothing but the Burn Down Chart. It is updated daily.
Practices are described in detailed:
Process flow of Scrum:
Process flow of scrum testing is as follows:
- Each iteration of a scrum is known as Sprint
- Product backlog is a list where all details are entered to get end product
- During each Sprint, top items of Product backlog are selected and turned into Sprint backlog
- Team works on the defined sprint backlog
- Team checks for the daily work
- At the end of sprint, team delivers product functionality
eXtreme Programming (XP)
This is a light weight agile testing methodology in which development and testing happen in parallel. Business requirements are gathered in terms of stories. All those stories are stored in a place called 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 include phases like coding, unit testing and system testing where at each phase some minor or major functionality will be built in the application.
Phases of eXtreme programming:
There are 6 phases available in Agile XP method and those are explained as follows:
- Identification of stakeholders and sponsors
- Infrastructure Requirements
- Security related information and gathering
- Service Level Agreements and its conditions
- Capturing of Stories in Parking lot
- Prioritize stories in Parking lot
- Scrubbing of stories for estimation
- Define Iteration SPAN(Time)
- Resource planning for both Development and QA teams
- Break down of tasks
- Test Scenario preparation for each task
- Regression Automation Framework
- Unit Testing
- Execution of Manual test scenarios
- Defect Report generation
- Conversion of Manual to Automation regression test cases
- Mid Iteration review
- End of Iteration review
- Small Releases
- Regression Testing
- Demos and reviews
- Develop new stories based on the need
- Process Improvements based on end of iteration review comments
- Pilot Launch
- Production Launch
- SLA Guarantee assurance
- Review SOA strategy
- Production Support
There are two story boards available to track the work on a daily basis and those are listed below for reference.
- Story Cardboard
- This is 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 online form.
- Online Story board
- Online tool Storyboard can be used to store the stories .This can be used by several teams for different purposes.
Difference between Scrum and XP Testing:
|XP Testing ||Scrum Testing |
|Engineering practices like test driven development, refactoring, pair programming, etc… ||Managing of requirements or requested features |
|Stories are used as single line requirements ||User Stories are used as requirements |
|Stories are stored in Parking lot ||Stories are stored in Product backlog and Sprint backlog |
|Iteration is used in XP testing ||Iteration is termed as Sprint |
|Iteration period is for 14 days max ||Iteration period is for 30 days |
|Requirement changes are accepted during iteration ||Requirements changes are acceptable after the current iteration |
|Mid and end of Iteration review meetings ||Daily scrum meeting |
Scrum and eXtreme are the popular Agile methodologies. Below listed methodologies are used less frequently
Dynamic System Development Method (DSDM)
- This is an Iterative and incremental approach that emphasizes on the continuous user involvement.
Test Driven Development (TDD)
- This is a technique which has short iterations where new test cases covering the desired improvement or new functionality are written first.
Feature Driven Development
- This is an iterative and incremental software development process and this can aim depends on the features.
- Agile enterprise previously known as Xbreed .It is agile way of managing, architecting and monitoring the enterprise.
- Crystal is an adaptive technique mainly used for software development methodologies.
Metrics that can be collected for effective usage of Agile is:
- 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
- New estimates can be increased by percentage of drag factor -New estimate = (Old estimate+drag factor)
- Amount of backlog converted to shippable functionality of sprint
- No of Unit Tests added
- Time taken to complete daily build
- Bugs detected in an iteration or in previous iterations
- Production defect leakage
Agile testing involves testing as early as possible in software development life cycle. It demands high customer involvement and testing code as soon as it becomes available. The code should be stable enough to take it to system testing. Extensive regression testing can be done to make sure that the bugs are fixed and tested. Mainly, Communication between the teams makes agile testing success!!!
Resources : Software Testing tutorials