As a tester it's near impossible to avoid all the discussions and articles about the importance of test automation, but do software testers need to know programming and how to code?
If you go to any testing forum or discussion board, you’ll notice that every third post is someone asking “How do I get into test automation?” or “What programming language should I learn to get started in automation?” This level of interest is indicative of the current tone within the testing industry, as well as the broader software industry. It’s in job listings too. Pretty much every job specification, even for junior roles, asks for automation or coding experience, often referencing a specific programming language and the popular automation tool, Selenium.
To anyone entering the profession, or even to seasoned veterans, it would be impossible not to draw the same conclusion: you need to be able to code to progress, and that test automation is the premium skill in the industry.
I could not disagree more!
A team made up of different skills
I’m not saying that coding in testing isn’t a valuable and useful skill. However, balance and variety within a test team is far more important. Varying and contrasting skills contribute to a much more comprehensive picture of the software’s quality.
For example, if the whole team was made up with usability specialists, sure the software will probably be easy to use, but the software will suffer in other areas. You need the automation to catch regression, the exploratory testing for creative analysis, the load testing for reliability and the security testing for… security. You get the picture.
That’s not to say that programming in testing is only used in automation, specialties such as security, load, performance, and API testing all require some degree of coding knowledge in most cases. That said, automation is often the focus with recruiters and hiring managers, and that’s what enforces the myth that testers need to code.
I know my saying this doesn’t necessarily help when the people giving out jobs are the ones asking for the coding experience, but what I can say is that apart from a few brief dabbles over the years, I have close to zero experience coding, yet I’ve had no trouble progressing in the profession.
I have managed this by accepting that I will never be a 100% fit for the job specification and that it’s far more relevant that I explain what I will bring to the role rather than try to make excuses for what I am currently unable to. Once I have defined for them the value that I will provide in other areas, the focus quickly moves away from those areas where I’m weaker.
Automation does not replace the need for Human Imagination
It is also vital to nurture a good working relationship with the developers wherever you are. That way, if you have a coding problem to solve, like testing an API, automating a regular task or if you need an SQL query written, you will have people to turn to who can either write the code for you or teach you how to write it yourself.
By doing this you will inevitably pick up bits and pieces as you go which will help you to understand the software better, and give you a better grounding should you decide to have a dabble in coding later on.
The main thing to remember is that when it comes to software testing – and I mean the intellectual act of using software and finding the key bugs – this process can never be automated. The more vital and creative part of testing comes from the human imagination which can never be replicated with code.
Learning a programming language is a massive achievement and will help you in your career, but having original thought, following hunches and using your eyes makes you a vital part of the development lifecycle.
Unless of course artificial intelligence is created that can learn to replicate how we test software, then we’re all doomed, programming language or not.