We already know that there has been a transformation to Agile Software Development in the software industry for years. We also know that testing is an important part of software development.
So how has the testing been performed in Agile Software Development? And how has the tester been changed to adapt to the transformation? If you already read the book “A Practical Guide for Testers and Agile Teams”, you might have answers from the authors Lisa Crispin and Janet Gregory.
In this article, I would like to share 10 principles for Agile testers excerpted from my favorite book.
What is Agile testing?
“Agile testing is a software testing practice that follows the principles of agile software development. Agile testing involves all members of a cross-functional agile team, with special expertise contributed by testers, to ensure delivering the business value desired by the customer at frequent intervals, working at a sustainable pace. Specification by example is used to capture examples of desired and undesired behavior and guide coding.” (Source: Agile testing - Wikipedia).
I like the definition of Agile Testing from the Global App Testing: “Agile testing operates under the philosophy that testing is a crucial part of development, on a par with coding. In Agile, testing is integrated directly into the development process so that bugs are discovered as early and as often as possible. As a result, testers can identify problems at every point in the development process, moving the product quickly towards release.”
To understand more detail about the concept of Agile testing, let’s examine the difference between traditional and Agile testing in the comparison right below.
Traditional vs. Agile testing
Firstly, we need to understand the main differences between traditional and Agile software development methodologies. Traditional software development normally referred to as the Waterfall, is known as a linear sequential life cycle model, whereas Agile is an iterative, incremental, and evolutionary software development method.
Below are different points between traditional and Agile testing:
Traditional Testing | Agile Testing |
Testing at the end of the development cycle | Continuous testing/parallel to the development |
Quality became the tester’s responsibility | Team’s responsibility for the quality |
Testing departments or independent testing | Whole team approach |
Scripted testing | Exploratory testing |
Requirement specification as the reference | User stories and customer needs as references |
Breaking the software mindset | Building the best software mindset |
Late involvement and delay feedback | Early involvement and continuous feedback |
Finding defects | Prevent defects |
Source: The Differences Between Testing in Traditional and Agile Approaches - www.medium.com.
Ten principles for Agile tester
As mentioned above, in Agile, testing is the whole team approach. We all might have known that there is no role named Tester in the Agile team. All team members are developers. So when we use the term Agile tester we refer to the team member whose main activities are related to testing and quality assurance.
I’m interested in 10 principles for Agile testers which are mentioned in the book “A Practical Guide for Testers and Agile Teams” the most. They are derived and developed from the manifesto and principles of Agile software development. Therefore, they are not only useful for testers but also for all team members. Now let’s explore what they are:
Provide continuous feedback
Agile testers do not only simply test constantly, but also provide valuable feedback to the team and customer regularly. By doing this, we are helping the product owner and customer articulate the requirements via samples and tests.
Testers also need to work closely with the team and provide feedback during the development to ensure the team is on the right track in terms of business logic and software behaviors.
Deliver value to the customer
This is the most important principle since the end goal of software development generally and the team particularly is to provide the best software to customers.
Enable face-to-face communication
As the sixth principle of Agile states “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation”. This is to reduce confusion and errors by communicating directly with developers as well as enabling customers to communicate directly with developers.
Have the courage
Courage is one of the must-have qualities which every Agile team member needs to build. Agile testers need the courage to do any tasks to get the job done; courage to learn new skills to help the project move forward and ensure the quality of the software; courage to ask for help, especially when the person providing that help looks pretty busy and stressed-out himself; we also need the courage to allow others to make mistakes, because that’s the only way to learn the lesson.
Keep it simple
My client often says that “Keep it simple first”. I like that. As a tester, we need to work with customers to make business rules, test cases, and bugs logged as simple and clear as possible. The challenge to the testers and the team is to not only provide the simplest possible software implementation but also to take a simple approach to ensure that the software meets customer expectations.
Anyway, we need to keep things as simple as possible. The famous quotes below motivate us to do that: “Simplicity is the ultimate sophistication” (Leonardo da Vinci) and “If you can't explain it simply, you don't understand it well enough” (Albert Einstein).
Practice continuous improvement
Continuous improvement by looking for tools, learning more skills to do better work, and getting a better return on customer investment is the key value of the Agile team. As Agile testers, we need to find a way to automate repetitive tasks, so we have more time to contribute more valuable works.
Respond to change
In many cases, the team starts developing a new feature from scratch with little information, there will be a lot of changes during the development. As Agile testers, we need to work with the team to accommodate changes.
Self-organize
An Agile team needs to be aware that all team members are in charge of testing and software quality. When we have a problem, it’s everyone’s problem.
Focus on people
One key value of an Agile team is to build an environment where everyone has opportunities to contribute and develop their skills. Testers don’t bother to learn more skills to contribute more value to the team. By doing this, we are going to remove the wrong thinking that testing is low-skilled work or that the tester is a second-class citizen. All members of the Agile team are of equal weight.
Enjoy
Have you ever asked questions like what makes you enjoy your work in software development? For me, working with the team to deliver software that helps end-users do their jobs better and brings value to customers makes me happy. In Agile, we can make it happen by adding real values to the team from our viewpoint and skills.
Conclusion
In my opinion, the Agile philosophy enables all team members to be able to contribute their values to deliver the best software to customers. I believe that we, as testers, can add more value to the team if we apply the 10 Agile testing principles above and are eager to develop ourselves by learning more skills day by day.
Thanks for reading the article.
References:
- Lisa Crispin and Janet Gregory, Agile Testing: A Practical Guide for Testers and Agile Teams - Publisher: Addison-Wesley Professional; 1st edition (December 30, 2008).
- Best Practices for Agile Testing - www.globalapptesting.com.
- Thilini Karunarathne - The Differences Between Testing in Traditional and Agile Approaches - www.medium.com, 2019.