Highly Effective Agile Testing – The Principles of Agile Testing – #6
Since my Keynote at TestIstanbul on the Seven Habits of Highly Effective Agile Testing, I’ve covered the first 5 habits in depth:
- Proactively Be Efficient and Effective
- Treat the User as Royalty
- Sustain an Improvement Frame of Mind
- Be Agile, Then Do Agile
- Think Tasks, Not Roles
At PNSQC 2017, I presented my “7 Habits Talk” which I continue to improve upon as I get feedback and then use it to update and freshen the presentation for other organizations. I try to make each Habit adaptable depending on the context of the organization. Just like many who have an aversion to ‘best practices’, I like to think of them as habits or principles to guide what we do given our own situation. The 6th Habit, “Focus on the Customer”, represents one of the core principles of Agile Testing where everything we do needs to provide value and be worthwhile. If not, why do it at all? So the 6th Habit is built on three principles:
Collaborate with the Customer
Firstly there is a big difference between communication and collaboration. Communication means that messages go back and forth and they are heard and understood. Collaboration on the other hand, means that the communication occurs with common goals in mind. And for software projects, the common goal is to satisfy the customer’s requirements, needs and wants. The problem occurs when the customer doesn’t know what they want, can’t express what they want, or change their minds. That’s our job; to help them communicate to us. As Jerry Maguire said, “Help me help you”. Why should we as software testers and those responsible for QA take charge of this? Because quality depends on it! A “quality” product ultimately means a happy customer, not just a product that does what it is supposed to do according to some document.
So our job should focus on:
- Help the customer understand what their requirements are
- Help the customer prioritize their needs
- Extract and elicit examples and user stories to build quality test cases and test scripts
- ‘Mind the gap’ – be a bridge between the developers (tech language) and the users/business analysts (business language)
Identify and Get Missing Information
Recognize the most difficult part about requirements that Agile was designed to solve is that of missing information. The purpose of frequent iterations within the Agile development process is to provide and fill in missing information within each sprint. So first, we need to identify where the design of functions and features are either unclear or missing, and then go to find that information clarifies the design and/or plugs the holes. That information may be inside the head of a developer or business analyst or even buried in document that people overlooked. In any case, it’s up to us in QA to go get it and incorporate as needed. If the missing information we go get turns out to be wrong, that’s okay! We at least discover what is wrong on the way to being right.
Prioritize What Serves the Product Best
You may ask what serves the product best? In most cases it will be obvious from the prioritization of user stories and their implementation. Occasionally, we may need to revisit prioritization because the software may be rendered ‘useless’ without some key part of a function even though that may not be listed out as a priority. In any case, common sense trumps official requirements.
In summary, the 6th Habit in connection with the Agile Testing Principle, Focus on the Customer, can sometimes get lost in the Agile shuffle. The reason is that we often put our heads down to try and ‘get stuff done and stay ahead of the curve’, while forgetting to lift up our heads up from time to time to make sure we’re doing the right things that satisfy the customer.
Both Moss Drake Zeger Van Hese did a sketch from my talk from PNSQC. Check it out here…