An anti-pattern is a counterproductive practice that can lead to inefficiencies in testing. Of course reduced software quality and increased maintenance efforts will follow. Like in the Little Red Riding Hood - at first glance they are like Grandma - logical, wise and positive. When you start digging though, you will find the Big Bad Wolf hiding inside and eating your test automation costs.
Avoiding such anti-patterns is a real challenge for businesses, as the world currently chases financial savings in a pace that was rarely heard of. We will use the example of the ice-cream cone anti-pattern to help you diagnose and get rid of those unwanted costs. Unless you are a saboteur or an industrial spy within a company - then just switch "don't" into "do'' in this article.
It's a joke by the way.
Test Ice Cream Cone
In our opinion the key to successful software testing is to automate as much and as smartly as possible.
The testing ice cream cone does something completely opposite.
The most effort is being used by manual testing. It can especially bother the whole development process if the tests done manually are monolithic and overly centralized. In this anti-pattern the automated tests only occur after the manual tests are done which can result in new bugs revealing themselves almost constantly.
Key Characteristics
1. Centralized Testing: All testing efforts are funneled through a single, centralized team of testers making it challenging to address the diverse needs of different software components or projects.
2. Lack of Specialization: There's a lack of specialization in testing efforts, as the central team or approach is responsible for everything from unit testing to end-to-end testing, performance testing, and more.
3. Difficulty in Adaptation: Changes in testing requirements or the introduction of new technologies become cumbersome, as they often require significant adjustments to the centralized testing process.
4. Reduced Efficiency: Testing efforts become less efficient and more time-consuming due to the need to navigate through a centralized, complex structure.
5. Risk of Inadequate Coverage: It can result in inadequate testing coverage, as the centralized approach may not address the unique needs and challenges of individual components or projects.
How to Find the Ice Cream Cone Anti-Pattern?
Well there are two key areas where to look for errors in the software development process. There are ones that are product related and we can call the others "strategy related".
Your code base is the first place you need to check for flaws. Constantly modifying the tests may often result in overcomplicating them. Any sign of centralization may also lead you to the idea that you might not follow best practices.
First of all review the testing hierarchy plus the size and quality of test suites. If you find some significantly larger than others - you might investigate. Other indicators might include:
- long test execution time - centralized tests take longer to run
- high degree of interdependence among test suites
- monolithic test data set
- high test maintenance or test environment usage
Of course there are also multiple software tools that might assist you in this task.
For starters there are the static code analysis tools. Each and every programming language has a different setup so you just need to browse the web for something relevant to your project.
Sometimes they are separate pieces of software, another time they are already placed into your IDE. They will not monitor the functionality of your code but at least will give you a hint if your code is too complex and looks more like a spaghetti (mmmm carbonara...) that we often see in IT conventions.
The strategy related issues are not directly connected with the code, but we dare to say are even more important. The ice cream cone, the cupcake, the pyramid and other patterns and anti-patterns are not only about what you do but how you do it.
It really takes an experienced and balanced team to create a proper test strategy. If you lack the expertise, you have to obtain it or buy it (hire a testing expert for example).
It is important to establish a culture of constant feedback and communication. It is very easy especially for teams that work in agile methodologies. Regular standups and sprint reviews are a great platform to obtain information.
It is significant that the testing process is adaptable and efficient. Therefore we strongly recommend having code review procedures within the software development and testing teams.
Another great source of information are the testing documentation (although some teams fall into the trap of constantly postponing creating documentation), the bug reports and testing metrics.
Last but not least, if you have the resources to do it - consider having a testing audit. It will give you a great view from outside your entire team.
Why Switch from the Ice Cream Cone to the Test Pyramid?
It's like trying to answer a question "why should we switch from doing something incorrectly to doing something properly?" 😃
We strongly believe that the vast majority of unit tests, UI tests and integration tests can and should be automated. We wouldn't have created BugBug in the first place if we believed in the opposite.
There is more than content marketing here. Our own quality assurance experiences as well as feedback from our clients both confirm that assumption.
Introducing software testing quality checks on a regular basis will improve your code quality and readability. It has much more implications that some of us can imagine. You reduce the number of hours consumed by test maintenance. Not only will you probably end up reducing the number of lines of code, but much more of the code will be self explanatory.
The best software projects are those with as little technical debt as possible. Reducing the number of manual tests will give you just that. Product development is much more efficient and cost effective when you automate.
Manual tests should be left just for edge cases since among other disadvantages, they have the tendency to interfere with the continuous delivery process.
Here you can find more thorough information on what is and how to implement the test pyramid.
Also Alan Richardson aka Evil Tester created a good piece of content about the test automation pyramid.
Test Ice Cream Cone - Do's and Dont's
We often see organizations fall into two bitter-sweet anti-patterns - software testing ice cream cone and software testing cupcake.
The hardest thing about those two is that they seem reasonable on the first glance.
But whenever we sit down with our clients or prospects and start pointing out where the process is malfunctioning we see their eyes open wider and wider. It is really worth checking on a regular basis if your organization has fallen into a similar trap or not.
Happy (automated) testing!