Testing in Agile software development model
What is Agile Testing?
Agile Development Model is also a type of Incremental model. Software is developed in incremental, rapid cycles. This results in small incremental releases with each release building on previous functionality. Each release is thoroughly tested to ensure software quality is maintained. Extreme Programming (XP) is currently one of the most well-known agile development life cycle model.
Agile testing involves testing from the customer perspective. The testing starts early as soon as code becomes available. This is done by using automated acceptance testing to minimize the amount of manual labor. Doing only manual testing in agile development may result in either buggy software or slipping schedules because it may not be possible to test the whole software manually before every release.
In Agile, getting the testing done is the responsibility of the whole team. Testers execute tests and Developers do too. In Agile, the teams build the product well from the beginning, using testing to provide feedback on an ongoing basis about how well the emerging product is meeting the business needs.
Agile development recognizes that testing is not a separate phase, but an integral part of software development, along with coding. Agile teams use a whole-team; approach to thrust quality into the software product. Testers on agile teams lend their expertise to find out the desired specifications from customers. They then collaborate with the development team to turn those into executable specifications that guide coding. Testing and coding are done incrementally and interactively, building up each feature until it provides enough value to release to production. In Agile, everyone is expected to work closely together, to achieve a single goal of a high-quality software product that fulfills all of the essential specifications a client or designer requires with each iteration.
In conventional methods, testing is performed after implementation while in agile testing, testing is done while implementation.
Advantages:
- The customer has early and frequent opportunities to look at the product and make decision and changes to the project.
- Every iteration has its own testing phase. It allows implementing regression testing every time new functions or logic are released.
- Development process is iterative, and the project is executed in short (2-4) weeks iterations. Planning is very less.
- Agile divides the process in short teams. Each team focuses on completing a small set of features.
- People and interactions are emphasized rather than process and tools. Customers, developers and testers constantly interact with each other.
- Regular adaptation to changing circumstances and even late changes in requirements are welcomed.
Disadvantages:
- Testers are needed throughout the project and this effectively increases the cost of resources on the project. Active user involvement and close collaboration are required throughout the development cycle.
- There is lack of emphasis on necessary designing and documentation. The users or product owner needs to be ready and available for prompt testing of the features as they are delivered and throughout the entire duration of the project. This can be quite time-consuming.