Agile Testing in simple terms is a testing practice which follows the principles involved in Agile Software Development model while testing the software. In order to understand Agile Testing, we have to first understand Agile development model. The following section will explain the Agile Development model.
Agile Development is a development approach, using which the development of the software is carried out while the different teams involved in the project collaborate with each other (like Development Team, Testing Team, Clients etc.). The following points will help you in understanding the Agile Development in detail:
- The agile development model is a combination of the iterative and incremental process with an intention of quickly delivering a workable and satisfiable software.
- In Agile development model, the software will be delivered in an incremental way in iterations (Where each iteration will be of 2 to 4 weeks)
- In Agile development model, all the teams involved in producing the Software will work together simultaneous, by sharing quick feedback between the teams. Hence resulting in quick delivery of the software.
- The following are the different Software Development models followed by the projects and Agile development model is one of them:
- Waterfall Model
- V Model
- Incremental Model
- RAD Model (Rapid Application Development Model)
- Agile Model
- Iterative Model
- Spiral Model
- Prototype Model
- In Agile development, any of the following Agile Methodologies will be chosen based on the project needs:
- Extreme Programming (XP)
- DSDM (Dynamic System Development Method)
- FDD (Feature Driven Development)
- In Agile development, the combination of following Agile Practices will be chosen based on the project needs:
- Test Driven Development (TDD)
- Behavior Driven Development (BDD)
- Acceptance Test Driven Development (ATDD)
- Continuous Integration
- Continuous Delivery
- Pair Programming
- Iterative Development
- Incremental Development
- Burndown Chart
- Kanban board
- Simple design
- Team room
- Lead time
- Project charters
- And many more (Click here to refer the complete list of agile practices)
- All the above stated Agile development methodologies and practices follow the below Agile Core Values:
- Individuals & Interactions over Process & Tools
- Working product over comprehensive documentation
- Customer collaboration over Contract negotiation
- Responding to change over following a plan
- All the above stated Agile development methodologies and practices follow the below Agile Principles:
- Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
- Welcoming changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is the face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity – the art of maximizing the amount of work not done — is essential.
- The best architectures, requirements, and designs emerge from self-organizing teams.
- At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
- As part of Agile Manifesto, all the Agile methodologies and Agile practices stated above should follow all the Agile Core Values and Agile Principles.
As Agile Development model is clear from the above section, the following section will help you in understanding Agile Testing:
Agile Testing is nothing but a testing practice which follows the principles of Agile development model while testing the software. The following points will help you in understanding the Agile Testing in detail:
- Agile Testing can be performed in the projects following different Agile methodologies like Scrum, Extreme Programming, Kanban, Lean, Crystal, DSDM, and FDD.
- Agile Testing can be performed in the projects following different Agile practices like TDD, BDD, ATDD, Continuous Integration, Continuous Delivery, Pair Programming and other practices.
- Agile Testing Benefits & Best practices: When Agile Testing is implemented, the projects will get the following benefits:
- As part of Agile Testing, the defects identified by the testing team will be immediately fixed by the developers, instead of waiting until the end of project development.
- Agile Testing saves time and money due the quicker feedback process between the developers, testers, and business.
- Agile Testing teams, continuously test the software to ensure the continuous progress of the software. Hence testing is not a phase, it is an ongoing process.
- In Agile Testing, Testing teams drive the project by proving the feedback on an ongoing basis.
- In Agile Testing, the testing team will perform testing during the development of the software, instead of waiting for the developers to complete the development.
- In Agile Testing, documentation of tests is reduced and hence resulting in more time for testing.
- In Agile Testing, defects reported are fixed in the same iteration lead to cleaner code.
- Automation plays a key role in Agile Testing. When the Automation of regression tests (i.e. Unit tests, Web Service/API tests and UI tests) are implemented as a best practice, Agile Testing will give fruit full results.
- As part of Agile Testing, Test Management tools will be used by the Testing teams for better collaboration between Developers, Testers, and Business. Example: VersionOne, Jira etc.
- In Agile Testing, a combination of manual and automation testing will be performed. i.e. Regression testing will be carried out by the automation tools and manual testing of new user stories will be performed by the testing team.
- In Agile Testing, the testing team will be involved from the earlier phases of SDLC to create test scenarios, while the development team is working on developing the user stories provided by the business.
Conclusion: As most of the projects in the market are using Agile Methodologies and practices in delivering the software, the Testing team has to perform testing on the software by following the principles involved in the Agile Development model. Hence Agile Testing is nothing but a testing practice which follows the principles involved in Agile Development model.
Please leave your questions/comments/feedback below.
Happy Learning 🙂
Arun Motoori (www.QAFox.com)