So I saw a LinkedIn post the other day saying “Please stop writing frameworks from scratch”. It ended up being a product plug for yet another tool claiming to do everything needed for test automation.
I get why this tool, and dozens of others, keep coming out. I’m sure a lot of it is because people want to make money. I’m also sure that some of it is altruistic. There’s this idea that automation is extremely difficult, and that the very people who need it most–the testers–aren’t tech-savvy enough to do it. They need help.
There are a lot of problems with this approach though:
It reinforces a dangerous idea about the craft
Not everybody in testing is non-technical. There are some, but they don’t represent everybody. Some are very technical. Everybody’s somewhere on the spectrum.
A lot of people don’t pick up on marketing tactics before making a judgment call. When one-stop-shop tools keep coming out, it reinforces a false idea that “testers are non-technical”. Otherwise why would they keep being produced?
It’s… kind of false advertising, a little bit
Let’s say for example, that someone actually did come up with a tool that addressed all the needs for tests that needed to be automated. What do you think would happen?
Would there still be dozens of new tools coming out? Or would that one tool propagate everywhere?
Would any new tools even need to be created anymore? Or would everybody double down and learn how to use that one tool?
What do you see happening right now?
It puts focus on the tool and not the skill
I’ve never seen a classified ad looking for someone skilled in using pliers, cutters, hacksaws, pipe wrenches, fittings, blowtorches and solder. I have seen ads for people looking for plumbers though.
When all-in-one solutions are the norm, then the focus becomes learning how to use the tool. Learning how to problem solve takes 2nd place.
It fosters dependence on single points of failure
Companies, teams and even single people come and go. Given enough time, it always happens. Teams can be disbanded, projects can be sunset and companies can be bought.
If your company is putting faith in one tool always being there for you, you may be in for a rude awakening.
It causes costly replatforming
Eventually, any tool may become the wrong solution for us. Our needs and goals change, and sometimes we need something different.
But if your entire solution is wrapped up in one big tool, instead of multiple smaller ones, then everything has to be replatformed. Very costly.
The Path to Success
All that being said, a way to solve this not only makes us immune/resistant to the above points, but helps to further the testing craft.
- Demystifying coding: Computer programming isn’t magic. It’s a learnable thing. And there are so many options for languages that more people can pick it up.
- Break down walls: There’s still this wall between developers and testers, and it seems to be centered on coding ability. Writing frameworks teaches us about coding, and augments the testing craft. Testing + coding = powerful.
- For Testers: If you know how to test and automate, business are really going to want your skills.
- For Managers: If word gets out that your company is a place where testers can come to learn how to automate, and not just use a tool, you will get access to some raw talent.
- More independence: If you have one big tool, that’s a big risk. A group of smaller ones (particularly open source) increases your independence. If one small part isn’t the right solution anymore, change it, update it or remove it.
- Just enough solution: So many tools oversolve the problem and do way too much for what we need. The more of a thing you have, the more it has to be maintained. Writing our own frameworks allows us to have just enough to solve what we need–no more, no less.
As a tester, I want to challenge you to take steps toward writing your own frameworks. As an automator, I want to let you know it’s not nearly as scary as it seems. Challenging, yes, but we’re testers–that’s what we thrive on. It’s a complex thing, but it can be broken down into simple, solvable parts.