International Agile Tester Foundation

Steen Lerche-Jensen

1 Agile Software Development

Let us get started. We will do that by going through the basics of the most common Agile methods. Often we will use Scrum to illustrate some points, but other Agile methods can of course also be used. Agile is about being good to adapt to the ever-changing surroundings.

Figure: Agile can adapt to Ever-Changing surroundings.

1.1 The Fundamentals of Agile Software Development

You need a mind-set change if you have only worked as tester on a traditional project. Working on Agile projects is different and as testers, we need to understand the Agile values and principles that accompany normal Agile methods.
The Whole-Team Approach where developer, tester and Domain Expert collaborate for a common goal is the heart of Agile development, just like “The Three Musketeers”. Their motto fits well together with the Agile mind-set “one for all, all for one” – meaning we do this together. If one fail, we all fail, and we share success together.

Figure: The Agile Mind-set

In the Agile methods each iteration involves a team working through a full software development cycle, including planning, requirements analysis, design, coding, unit testing, and acceptance testing when a working product is demonstrated to stakeholders. Therefore, working on an Agile project/ team has differences:

  • Testers on Agile projects work differently than on traditional projects
  • Certain values and principles underpin Agile projects
  • Testers work as part of a Whole-Team Approach
  • Testers collaborate with
    • Developers
    • Business representatives
    • Other stakeholders
  • Testers provide early and frequent feedback on quality
  • Early feedback provides multiple benefits, as we will see…

1.1.1 Agile Software Development and the Agile Manifesto

Most Agile methods are built upon the Agile Manifesto published in 2001 [Agilemanifesto.org]. The people behind the manifesto write – We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value:

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan

Note that these are statements of emphasis, not a rejection of traditional concepts.
Individuals and Interactions
The first core value of the Agile Manifesto is to value individuals and interactions over processes and tools. When you allow each person to contribute unique value to your software development project, the result can be powerful.

Working Software: A software development team’s focus should be on producing working products. The second Agile core value emphasizes working software over comprehensive documentation.
On projects using Agile management tools, the only way to measure whether you are truly done with a product requirement is to produce the working product feature associated with that requirement. For software products, working software means the software meets what has been called the definition of done: at the very least, developed, tested, integrated, and documented. After all, the working product is the reason for the project.

Customer Collaboration: Agile management principles extend to your relationship with the customer. Agile's third core value emphasizes customer collaboration. The Agile pioneers understood that collaboration, rather than confrontation, produces better, leaner, more useful products. Because of this understanding, Agile methodologies make the customer part of the project on an ongoing basis.

Responding to Change: The fourth core value of Agile project management addresses the response to change. Change is a valuable tool for creating great products. Using Agile management principles, project teams that can respond quickly to customers, product users, and the market in general are able to develop relevant, helpful products that people want to use.

Agile Principles

The 12 Agile Principles are a set of guiding concepts that support project teams in implementing Agile projects. Use these concepts to implement Agile methodologies in your projects.

  1. Satisfy customers via early, continuous, valuable delivery
  2. Welcome changing requirements, even late in project
  3. Deliver working software frequently
  4. Daily whole-team collaboration
  5. Build projects around motivated individuals
  6. Use face-to-face conversations where possible
  7. Working software is the primary measure of progress
  8. Promote sustainable development
  9. Emphasize technical excellence and good design
  10. Emphasize simplicity (amount of work not done)
  11. Self-organizing teams maximize quality
  12. Become more effective via regular retrospectives

1.1.2 The Whole-Team Approach

Figure: The Whole-Team Approach. Teams consist of Programmers, Domain Experts, and Testers.

The Whole-Team Approach, also called team-based approach, is a strategy for project management in which everyone on the project team is held equally responsible for the quality and success of the project. Remember “The Three Musketeers” and their motto "all for one, one for all”.

  • Involve everyone with necessary knowledge, skills
  • Five to nine people (including business stakeholders)
  • Ideally collocated
  • Daily stand-up meetings
  • Everybody is responsible for quality; testers collaborate:
    • With business representatives on acceptance tests
    • With developers on the testing strategy and test automation
  • The Whole-Team Approach (power of three):
    • Transfer knowledge within the team
    • Increase communication and collaboration
    • Avoid unnecessary documentation
    • Leverage everyone’s skills

1.1.3 Early and Frequent Feedback

Frequent feedback is vital for Agile development teams to understand whether the team is going in the direction as expected. The product increment developed by Agile Team will be subjected to stakeholder review and any feedback may be appended to the product backlog, which can be prioritized at the discretion of the Product Owner. One of the best ways to provide frequent feedback is through Continuous Integration (discussed later).

Figure: Rapid Release Cycle with Strong Feedback Loop. Develop and Test includes Feedback, Develop, Test. Release and Monitor includes Deploy, Monitor.

  • Short iterations lead to frequent feedback on quality from testers and customers
  • Customer feedback focuses attention on business value and risk
  • Benefits:
    • Reduced requirements misunderstandings
    • Early and ongoing clarification of customer needs
    • Early discovery and resolution of bugs
    • Understanding of velocity and quality capability
  • Agile projects can enjoy steady progress

Use the promo code: atfacademy10 and get 10% discount for the International Agile Tester Foundation Certification