Scrum is an iterative and incremental framework for effective team collaboration, which is typically used in Agile development, the most well known iterative method. It is based on recognizing that change is inevitable and taking a practical approach to changing priorities. Work is broken down into small units that can be completed in a relatively short time( few days or a week or two weeks etc.) The delivery of a unit of work is called a sprint. For software development, a sprint includes all aspects of development for a particular feature or set of small features, everything from requirements through testing and test automation.
The development teams are small(usually 3 to 9 people) and cross functional, that means they include people who perform various roles within the team. The key roles are:
The Product Owner represents the business, that is stakeholders and end users.
The Development team(including testers) makes its own decisions about development.
The Scrum Master helps the development team to do their work as efficiently as possible, by interacting with other parts of the organization and dealing with problems.
A stand-up meeting usually for 15 minutes is held each day, for example first thing in the morning to update everyone with progress from the previous day and plan the work ahead.
At the start of a sprint, in the sprint planning meeting, some features are selected to be implemented with other features being put on a backlog. Acceptance criteria apply to user stories and are similar to test conditions saying what needs to work for the user story to be considered working. After a sprint completes, a retrospective should be held to assess what went well and what could be improved for the next sprint.
Because development is limited to the sprint duration which is time boxed, flexibility is in choosing what can be developed in the time. Compare that to sequential model where all the features are selected first and the time taken to develop all of them is best of that. So Scrum enable us to deliver the greatest value soonest.
Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. Agile teams use Scrum, as explained above. The Agile manifesto consists of four statements describing the value and purpose of using this methodology:
individuals and interactions over process and tools
working software over comprehensive documentation
customer collaboration over contract negotiation
responding to change over following a plan.
Agile development provides both benefits and challenges for testers. Some of the benefits are:
The focus on working software and good quality code
The inclusion of testing as a part of software development(test driven development)
Accessibility of business stakeholders to help testers resolve questions about expected behaviour of the system.
Self organizing teams where the whole team is responsible for quality and gives testers most autonomy in their work.
Simplicity of design that should be easier to test.
There are also some challenges for testers when moving to an Agile development approach:
Testers who are used to testing with well documented requirements will be designing test from a different kind of test basis: less formal and subject to change. The manifesto does not say that documentation is no longer necessary or that it has no value, but it is often interpreted that way.
The tester's role is different; since there is less documentation and more personal interaction within an agile team, testers need to adapt to this style of working and this can be difficult for some testers.
Although there is less to test in one iteration than a whole system, there is also a constant time pressure and less time to think about the testing for the new features.
Because each increment is adding to an existing working system, regression testing becomes extremely important and automation becomes more beneficial.
Because developers are doing more component testing, there maybe a perception that testers are not needed. But component testing and confirmation based acceptance testing by only business representatives may miss major problems.
Agile approaches cannot be applied to all projects and some testing challenges remain to be surmounted with respect to Agile development. However Agile methodologies are showing promising results in terms of both development efficiency and quality of the delivered code.