Back to blog

The Quality Ice Cream Truck

Cover Image for The Quality Ice Cream Truck
Sergio Freire
Sergio Freire

In software and in testing we use models a lot. Models allow us to create a perspective of something real and easily visualize its internal and its relations. The "Quality Ice Cream Truck" is a model, and as such it represents a fallible, non-perfect, perspective on value and its relations to quality and testing. I'm always trying to refine and clarify concepts for myself, to help me understand, see the gaps and also talk about them.

In the Quality Ice Cream Truck all is around value as we'll see ahead.

What is value?

Many of us think that value is something highly well-defined, static, and probably around visible features. However, value is subjective, it changes with time... and it's just more than features. Quality defines value, by defining what is relevant for the stakeholders. Here I'm talking about quality criteria (e.g. correctness, usability, scalability, etc). By agreeing what composes value, then the team can use that to drive other collaborative activities.

Distilling the "Quality Ice Cream Truck" model

First, I hope this model visually resembles an ice cream truck, at least for me it does :) It's an evolution of a previous model on the relationship between Quality, Value, Testing and Risks by Rich Rogers.

Quality Ice Cream Truck

Value is at the center and it's the actual driver of our ice cream truck; it's what we and our users want to "taste" and enjoy. We know that people like different flavours, sizes, consistencies, etc, of ice creams. It makes sense since value is derived from our own definition of quality.

Knowing what is relevant will shape our testing, which in turn will provide us information on our quality. Testing informs us on (negative) risks, opportunities and also gaps. We can consider a defect as a risk in this model, since we can decide how to handle it (i.e. its treatment, from a Risk Management perspective). Even though we may consider that testing is about risk assessment, and treatment as a natural consequence, I would like to highlight opportunities and gaps for a moment because they're forgotten so many times. Having in mind value, testing looks at all spots where we can increase and optimize it. That's why I look at testing not just as bug preventing/finding but as all other ways that can ultimately give us tips to increase and accelerate the delivery of value.

Testing does not affect or assure value directly. Testing produces information, hopefully shared and discussed as a team, that we can act on. By acting on the information, we may affect value and try to maximize it. Value is directly affected by how we code/build the product and how we operate and maintain it.

Since value is served on production, we need to understand what is happening there to fine-tune it ASAP. Operations and support informs us about how value is being delivered, served and tasted. We do use monitoring tools to provide some insights even though they're limited. We can go a step further and use observability to analyze raw data, trace requests, see patterns, understand what is happening, i.e. to explore and ask questions to the system that we don't know in advance. This allows us to highlight risks and confirm the value of our product by looking at its usage. It can also give us tips on possible opportunities and gaps that we can try to address.

Final considerations

There are for sure more relations and more entities that we could represent in this model but I tried to simplify it to a point. As we saw, information comes from multiple sources. From those, testing outputs are essential to provide insights about quality. To improve the product itself and its value, we need shared understanding and collaboration, so that necessary changes, no matter if it's in the product itself or in the surrounding processes, can be implemented... no matter by whom.

I challenge you to make your own version of quality, testing, value and activities around it. Putting it on paper/screen can foster some healthy discussions and bring to the table all the different aspects that contribute to delivering value to customers... which is always a team effort leveraged by the continuous understanding of what value represents.

Useful references