One of the not-so-obvious reasons I spend a lot (too much?) time on LinkedIn is because it regularly provides me with inspiration for thinly veiled rants (also know as blog posts). This one is no exception. Here’s the question that caused this specific blog post to happen:
If a functional tester needs to learn automation, which tool (or programming language) would you recommend and why?
I’ll just forget about this ‘functional tester’ and why he or she ‘needs’ to learn automation (there is a gazillion other ways to contribute to quality software). No, my main gripe with this question is one that I’ve been talking about a lot on this blog, on other media as well as in person: it directly zooms in on the ‘how?’, skipping over the far more important questions of ‘why?’ and ‘what?’ to automate.
Note that I’m not blaming the person who asked the question, he probably meant well and really wanted an answer to his question. And yes, he got a lot of answers, most of them pointing him to Selenium and/or Java. No idea why, since there’s absolutely no context provided with regards to the application for which automated tests need to be written, the skill set of the people who are going to be made responsible for the automation, the overall software development process and lastly but probably most importantly, whether or not there is a need for automation at all.
Granted, I’m taking the question out of context here probably, or at least I’m way overthinking it, but the relentless focus on tools is a real problem in the test automation space, and one that needs fixing. I see it in questions like these, but (and that’s a far bigger problem) in job openings and project offers too. People contact me and ask me to help them introduce and set up test automation, but they’ve already made the decision to go with tool X and Y. The reasoning? ‘Well, we’ve got a couple of spare licenses for those tools’, or ‘Benny from accounting saw a demo and thought it was cool’, The stupid is strong in that one.
So, let me say this once more:
The. Tool. Is. Not. Important.
What you want to do with it is, though. And that’s the question that’s still too often forgotten. Funny thing is, other crafts mastered this a long time ago. For instance, would you trust a handyman that does not ask what needs to be done and why you want something done in the first place, but instead says ‘See you tomorrow at eight. I’ll bring my hammer.’? It could be that he’s psychic and knows you need some woodwork done. In that case, let’s hope he brings a ruler, a saw and some nails too. Or you probably won’t hire him because you’ve got a hunch that a hammer might not be all too useful for that paint job you need done. I think. I’m not really into DIY. But I hope you get my point anyway.
So why is it that we’re still directly jumping to conclusions on which tool to use, bring, buy or build when it comes to test automation? Wouldn’t it be far better if we asked why we need automation in the first place, and what exactly it is that needs to be automated, and in what way? I think it would lead to far better and more effective automation, and save the craft and the software development world of a lot of useless automation efforts.
Only after the ‘why?’ and the ‘what?’ has been covered and answered, it’s time to look at the ‘how?’. And that’s when the tool becomes important. Until then, it’s not.