To understand the agile testing mindset, we first need to determine what makes a team "agile." To me, an agile team continually focuses on becoming self-organized and cross-functional to be able to complete any challenge they may face during a project. In addition (and based on the agile spirit), the team must put the customer first and ensure that the customer receives the best possible product at the end of each iteration.
In my experience, some aspects differentiate "agile" teams from other teams, such as:
Continuous learning. As in any other field in life, agile team members must grow as individuals to contribute to the team effort to succeed. They must learn agile practices, new technologies, tools, and technical excellence and master all aspects of the product.
Discipline ensures that each team member will follow the rules and guidelines of the agile manifesto and the organization (as each organization has its own rules, boundaries, and goals).
Excellent HR skills allow team members to work with one another, help in case of trouble, and most importantly, allow for team dynamics that focus on both the team and the individual.
Embracing continual improvement will allow the team to improve the process and product each iteration.
Sharing knowledge promotes team members who do not have the relevant skills, knowledge, or experience needed to complete their goals.
Trust and respect are fundamental aspects we want to see in any team and agile team. Team members who do not trust and respect their co-workers will become the most significant impediment of the team.
Now that we understand the characteristics of a great agile team, we can see that successful agile projects result from teams built from great people who have the freedom to utilize their skills to generate great work.
THE NEW TESTER IN AGILE TEAMS
Agile teams are built from developers and testers working together towards a common goal. (The best teams I created were built without testers at all, but this is for a more advanced article.) Now that we’ve discussed the characteristics of a great agile team, it’s time to define the same thing for testers and ask what makes someone a success as a tester on an agile team? The basic answer is that what makes a tester succeed on an agile team is usually the same characteristics that make a highly respectful tester on any other team.
An agile tester doesn't see himself as the team’s quality authority, protecting the customers from the programmers as he did back in the old days when he worked in a dedicated test department, usually at a separate physical location from the development teams.
For me, there is no difference between tester and developer; they are all equal and should follow the same team culture, mindset, and principles. Based on that, I can say that great testers who succeed in agile teams are willing to share their knowledge and test experience among other team members. They are eager to work hand in hand with developers and the product owner to promote the team and the overall quality of the product, using a collaborative approach that states that the entire team is responsible for quality.
Agile testers (and probably any other testers) that have the right HR skills, technical skills, and mindset promote the team and themselves by providing continuous feedback about the overall quality of the product. This allows the team to see the big picture and what should be done to increase quality.
In addition, agile testers are continually searching for new ways to help the team increase their efficiency and produce high-quality products. What does it mean to search for new ways? Here are three examples:
Testers can search for new technical tools that will improve the efficiency of the testing process and reduce manual efforts (such as automated frameworks that will shorten regression cycles).
Testers can create local group meetings or roundtables with other teams to learn and adapt success stories that worked in their team.
Testers can share their knowledge with the rest of the team to increase quality ownership. During this process, the tester can act as a quality consultant to help other members remove quality barriers they are unfamiliar with.
The bottom line is that testers in agile teams should have a different mindset than the one they had in the environment of traditional software development. They must understand that their agile teammates (including more programmers than testers) share the same goal. Testers should like their teammates and enjoy learning from them (especially coding skills that will help them add more value). Testers should never limit themselves to solving only quality issues.
But wait, there’s more. Agile testers should also help the team address issues that arise during the iteration and afterward, especially regarding technical aspects of the product. In addition, testers should know that the team trusts them to understand the big picture of the whole product rather than concentrating on a specific component.
Great testers rely on the team because they know that they have an instinct and knowledge for where and how software might fail and what solutions the team should implement to reduce the risk of failure.
But wait, I think that testers can do even more! Testers should use their expertise, knowledge, and experience in testing and help the team in other layers of the development process. A great tester isn't afraid of being involved in design discussions, making suggestions to improve testability and reduce future risk.