Rethinking Pyramids
We as humans have a habit of getting stuck in our ways of thinking. Once we learn something, it is hard to learn away from it. And the longer we are stuck in our ways, the harder it gets. In this blog post we are going to be looking at something very familiar to many of us, and spend some time thinking about it. In the words of John Ruskin: “Quality is never an accident. It is always the result of intelligent effort.” So let’s use our gift of intelligence to rethink for a while. To rethink the pyramids guiding our work.
Rethinking leads to iterative improvement
In this post, I will be talking a lot about rethinking. You may have seen the big headliner on our webpage as well: Rethinking Quality Assurance. But what does rethinking actually mean? I thought the easiest way to approach it is through an example. One from the history of software testing. How software developers and testers have had to rethink their approach to meet the needs of an evolving industry.
First, there was an age of Debugging. Back then testing didn’t have its own identity yet. In the age of debugging it was basically about encountering and fixing bugs while doing development and running your code, instead of actively trying to test.
But quickly software became bigger and more complex, and you had to start specifying how it should work in different scenarios. And people thought: You have to be able to demonstrate that the software works as specified. Thus testing entered the age of demonstration. It became about designing tests based on predefined requirements to prove system functionality, using expected and recognizable parameters. This was also when the number of test cases became a common measurement for quality.
But this way of testing still left a lot of defects uncovered. And as the complexity of the software again kept increasing, testers needed to rethink. Rethink how to find faults where normal testing does not find them. Thus came to be the age of destructive testing. Many testing techniques that are used even today were born in this age. The goal became to demonstrate that the software does not work the way it’s supposed to.
Gradually through trial and error and experimentation, we arrived at the time of evaluation where it became a common practice that, during the lifecycle of a product, testing activities were done and evaluated and quality is measured. Test automation also started to raise its head. But business, testers and developers were still working in their separate siloes. And there was a big change taking place. And that change was known as agile.
Again testers needed to rethink how things would fit into this new way of looking at things. The age of prevention came to be. This is the modern age. This is where we are today. Our goal nowadays is to prevent defects from reaching the product at all. We want to find and eliminate any issues as early as possible with the help of the whole team. Testers are involved in all parts of development, all the way from the beginning. Stuff like Agile Testing and Exploratory testing have become norms known to most testers. And to support the new workflows and fast feedback, continuous testing through automation has become a standard thing.
Preparing for the future
Who knows what the future brings? One thing is for certain: we need to rethink in time so we don’t get caught with our pants down. Maybe the future is all about testing with AI and using machine learning to help us. Or maybe it will be focused on the more humane aspects of quality? Testing against biases. Testing that our systems are inclusive to everyone. Testing the charisma of the product. One thing is for sure: the complexity of systems and software just keeps increasing.
Maybe we even need to rethink the whole meaning of quality
That is what rethinking means to me. It means moving forward. Rethinking is an iterative process of Improving.
So, about those pyramids?
What do pyramids have to do with testing, you might be wondering. Well… I would presume that everyone, who has been working with either test automation, or test strategies has run into the following pyramid. The famous (or infamous) TESTING PYRAMID.
What if I told you that the pyramid is outdated
Are test runtime and amount of tests on each specific level the things we want to focus on these days? Running tests is cheaper and faster than ever before. This is thanks to easy-to-obtain cloud resources to enable concurrent runs and more efficient testing tools and frameworks.
Furthermore, should we just go for a return on investment? Should we always go with quality first instead?
But what is quality?
A more agile pyramid
In Agile testing, our goal is not just to reduce the number of defects, but to improve the speed and quality of our iterations. To make the development process as fast as possible, it might make sense to start with the things that save the most time in the long run. Focus your test automation efforts on things that are slower to do. On things that you spend a lot of time testing. If something is fast to do manually, maybe that should not be the first item on your automation priority list.
You can't protect yourself from unknown risks.
Testing alone does not increase quality.
Maybe we should RETHINK even further
So why did I want to write about pyramids
I’m not saying any of the pyramids I presented here as alternatives are better or worse than the others. In fact, I’m not saying this blog was about pyramids in the first place. This post is all about just making you think. And RETHINK about quality. Never stop rethinking your pyramids.