A tester working on an agile project will work differently than a tester working on a traditional project. Testers need to understand the values and principles that underlie agile projects and know that testers are an integral part of an overall team approach along with developers and business representatives. Members of an agile project communicate with each other early and often, which helps eliminate bugs early and develop a quality product.
Agile Software Development and the Agile Manifesto
In 2001, a group of individuals representing the most widely used lightweight software development methodologies agreed on a common set of values and principles that became known as the Manifesto for Agile Software Development or Agile Manifesto [Agilemanifesto]. The Agile Manifesto contains four value statements:
- Individuals and interactions over processes and tools
- Working software over extensive documentation
- Collaborating with the customer instead of negotiating contracts
- Responding to change rather than following a plan
The Agile Manifesto argues that while the concepts on the right are valuable, the concepts on the left have greater value.
Individuals and interactions
Agile development focuses on people. Teams of people create software, and teams can work most effectively through continuous communication and interaction, rather than relying on tools or processes.
From the customer’s perspective, working software is much more useful and valuable than overly detailed documentation, and it provides an opportunity to give quick feedback to the development team. In addition, because working software, albeit with limited functionality, is available much earlier in the development cycle, agile development can provide a significant time-to-market advantage. Agile development is therefore particularly useful in rapidly changing business environments where the problems and/or solutions are unclear or where the business wants to innovate in new problem areas.
Collaboration with the customer
Customers often have great difficulty specifying the system they need. Working directly with the customer increases the likelihood of understanding exactly what the customer needs. While contracts with customers can be important, working closely with them on a regular basis is likely to bring more success to the project.
Responding to change
Change is inevitable in software projects. The environment in which the company operates, legislation, competitor activity, technological advances, and other factors can greatly affect the project and its goals. These factors must be included in the development process. Therefore, a flexible way of working that is responsive to change is more important than rigid adherence to a plan.
The core values of the Agile Manifesto are captured in twelve principles:
- Our highest priority is customer satisfaction through the early and continuous delivery of valuable software.
- We are open to changing requirements, even if they occur late in development. Agile processes harness change to the customer’s competitive advantage.
- We deliver working software frequently, at intervals ranging from a few weeks to a few months, preferring the shorter timeframe.
- Business people and developers need to collaborate daily throughout the project.
- Build projects around motivated people. Give them the environment and support they need and trust them to get the job done.
- The most efficient and effective way to communicate information to and within a development team is face-to-face.
- Working software is the most important measure of progress.
- Agile processes promote sustainable development. Sponsors, developers, and users should be able to maintain a steady pace indefinitely.
- Continuous attention to technical excellence and good design increases 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.
- Periodically, the team reflects on how it can become more effective and adjusts its behavior accordingly.
The various Agile methodologies provide prescriptive practices to put these values and principles into action.
The whole team approach means that all individuals with the knowledge and skills required for project success are included. The team includes representatives from the customer and other stakeholders who determine the product characteristics. The team should be relatively small; successful teams have been observed with as few as three and as many as nine people. Ideally, the entire team shares a workspace, as common accommodation greatly enhances communication and interaction. The whole-team approach is supported by daily stand-up meetings, in which all team members participate and work progress is communicated and any barriers to progress are identified. The whole team approach promotes more effective and efficient team dynamics.
Applying a whole team approach to product development is one of the key benefits of agile development. Its benefits include:
- Improving communication and collaboration within the team
- Leveraging the different skills within the team for the benefit of the project
- Quality is everyone’s responsibility
The entire team is responsible for quality in agile projects. The core of the whole-team approach lies in the collaboration of testers, developers, and business representatives at every step of the development process. Testers work closely with developers and business representatives to ensure that desired levels of quality are achieved. This includes assisting and collaborating with business representatives to create appropriate acceptance tests, working with developers to determine test strategy, and deciding on test automation approaches. This allows testers to share their testing knowledge with other team members and influence the development of the product.
The entire team is involved in any deliberation or meeting where product features are presented, analyzed, or estimated. The concept of including testers, developers, and business representatives in all feature discussions is known as the power of three.
Early and Frequent Feedback
Agile projects have short iterations that allow the project team to get early and continuous feedback on product quality throughout the development lifecycle. One way to get quick feedback is through continuous integration.
With sequential development approaches, the customer often doesn’t get to see the product until the project is nearly complete. At that point, it is often too late for the development team to effectively address any issues the customer may have. By providing frequent customer feedback as the project progresses, agile teams can incorporate most new changes into the product development process. Early and frequent feedback helps the team focus on the features with the highest business value or risk, and these are delivered to the customer first. It also makes it easier to manage the team, as the team’s capabilities are transparent to everyone. For example, how much work can we get done in a sprint or iteration? What could help us move faster? What is preventing us from doing so?
The benefits of early and frequent feedback include:
- Avoiding requirements misunderstandings that may not be discovered until later in the development cycle, when they are more expensive to fix.
- Clarifying customer requests for new features so that they are available to the customer early. In this way, the product better reflects what the customer wants.
- Identifying (through continuous integration), isolating, and fixing quality issues early.
- Providing information to the agile team regarding their productivity and ability to deliver.
- Fostering constant project momentum.