As per the convention in software development the cost of any change increases nonlinearly as project progresses. It is relatively easy and cost saving to accommodate a change when a development team is gathering the requirements from business. But any functional change requested by the stake holders in the middle of testing process adversely affect the outcome and the cost of the development and testing process . Agile Software Development is a process based iterative and incremental development where requirements and the solutions are developed by the collaboration between functional teams. Now agile testing is a software testing practice that follows the principles of agile software development and follows the agile manifesto.
Agile testing involves the testing process as early as possible and often the development is stable enough from module or unit level testing. Since development and testing proceed incrementally, software is released very often in agile process. This is often done by using automated acceptance testing at the customer end. So in Agile Iterations design , development and testing activities are mostly concurrent , not following the traditional waterfall model as shows below:
6.1 Agile Umbrella
Agile Development is an umbrella term for several iterative and incremental software development methodologies. The commonly used agile methodologies include Extreme Programming (XP), Scrum, Crystal, Dynamic Systems Development Method (DSDM), Lean Development and Feature-Driven Development (FDD ) etc. In this tutorial we are going to discuss one of the most commonly used agile methodology known as ‘Scrum’
6.1.1 Scrum Methodology
Scrum is an iterative and incremental Agile software development framework for managing software projects and it uses the real world progress of a project . As we discussed earlier that in traditional development process the major challenge is to handle the requirement change and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. In scrum projects are divided into several work modules , known as SPRINTS which are generally one to three week in duration and basic unit of development in Scrum . Each sprint is started by a planning meeting, where the tasks for the sprint are identified and at the end of each sprint, stakeholders and team members meet together to assess the progress of a project and plan for the next sprint. This approach also helps to adjust or re-plan the project’s direction as per the progress. In the case of software at the end of a sprint the working product is integrated, fully tested , well documented and can be shipped to the customer.
In Scrum there are three core roles (often referred to as ‘Pigs’) and a range of ancillary roles (often known as ‘Chickens’). The core roles which actually form the ‘Scrum Team’ are discussed below:
· Product Owner : In scrum the product owner represents the stake holders and product owner actually works between the customer and the development team. He or she is also responsible to clarify the requirements to the team and prioritize them. The list of requirements for the product with highest business value items at the top is referred as ‘Product backlog’ in Scrum. Product owner can make changes to the product backlog (add, remove or reorder items) any time before the next sprint but not during a sprint. In the normal business organization Product Owner is often combined with the role of the project manager.
· Scrum Master : The Scrum Master works as a facilitator in the Scrum process and do whatever’s necessary to help the team succeed. The scrum master does not manage the team but he or she works with the team members to remove impediments and this makes the team remain creative and productive. The scrum master often chairs the key meetings and challenges the team for further improvement.
· Team Member : In the Scrum methodology, the team is responsible for completing and delivering potentially shippable increments of the product at the end of each sprint. Ideally the team is made up of 3-9 members and consists of seven cross functional members. For software projects, a typical team includes a mix of software engineers, architects, programmers, analysts, QA experts, testers, and UI designers but this team varies based on the nature of the project and organization. In scrum the team is self organizing and this grants teams a great deal of autonomy but that freedom is accompanied by a responsibility to meet the goals of the sprint.
The basic flow followed in scrum process can be shown as following:
6.2 Challenges for Agile Testing
The main challenges for a tester on an agile project are :
· Traditional documents for business requirements and functional specifications are not followed. The detail of one requirement is captured within a small document called story and the additional details are captured through the meetings conducted within the sprint
· Automation testing is emphasized more for agile testing as it saves a huge amount of time by removing manual intervention and this is highly important in a sprint to achieve the goals.
· Tester should have sound domain knowledge as well as strong technical knowledge to understand the technology
· The scope of regression increases as there are multiple releases planned for a project and without test automation support, maintaining a consistent level of regression coverage will significantly decrease.