Should Testers know how to code?

I was actively involved in recruitment of testers for in 2012 and came across an age old discussion once again which made me write about this topic. Should Testers know how to code?

Adding to this, there was also a statement made by Adam Goucher at CAST2012..

This is the last generation of testers that don’t know how to code

In my opinion, it totally depends on the situation. For example, in companies like Microsoft and Google, virtually all testers must know some form of coding. There are still companies out there which only require manual testers. If coding know how was not a requirement, I would also prefer to hire a tester who has critical thinking, analytical, investigative skills, good communication, understanding of risk and knowledge of common areas where bugs tend to hide as compared to someone who can just write C#.

 I also agree with Cem Kraner’s view below:

Testing within a business involves at least two types of knowledge: knowledge about testing and knowledge about the type of application under test. Much of the PR about the need for “software development engineers in test” has come from software companies. For them, software is the subject matter. For them, expecting someone to understand code is like a bank expecting someone to understand financial statements. It is unfortunate that the software publishers and software service providers have been speaking with a louder megaphone than the other industries: the result has been that some non-software companies are changing recruiting standards to look for people with stronger software knowledge instead of stronger industry (e.g. banking) knowledge.

Vacancies for “Developers in Test” or “QA Developers” are coming out more and more, especially in Agile environments. We need to remember, automation testing can never replace the need to do manual testing. There has to be a balance between the two. Skilled testers are adaptable people and should not be threatened by test automation. It’s a valuable skill to have and it’s not like learning how to code will make you forget manual testing. Secondly, the more the tester knows about coding, they’ll be able to do their jobs better, and the more career opportunities they will have (more on this later – I have some stats to prove this). Additionally, talking to developers in a language they can understand, writing clear bug reports which put your message across correctly and quickly has to be a good thing, right?

As a recruiter, you also need to use a common sense approach. I have seen companies that seem to use a standard list of demands, that they once created, and keep on using because they have been told it is a good list by the consultant they hired to create it, or they see other companies ask for the same skills, so they assume they are vital. You should look at the job spec, the role of a tester in your organisation and your team structure. What does a tester’s role involve, instead of what others testers in your company do/can do. Sometime you may find that the ability to write code is desirable instead of a requirement. If it is a requirement, state the level of familiarity with coding that you require. This way you will avoid putting off good candidates who will just be overwhelmed by the long list of requirements. Here at the Trainline, I have amended our requirements in job specs to be inline with the role of a QA Developer.

Lastly, what all programming skills should a tester have? This totally depends upon the job requirement and differs from one company to the other. Some positions are for automated testers and for this you require a good set of programming skills to create test frameworks. A recommendation for a manual tester or a tester thinking of improving their programming skills would be to:

  • Learn enough in any language (look at your target market or see research below) so you can write some test automation helper code, create classes, make asserts etc.
  • Learn enough of general programming concepts so that you can write code for typical easy programming exercises available on the internet.
  •  Once you have mastered this, drill deeper into object oriented design skills/concepts and create a mock test framework testing a website or an application.
  •  Also attend tester gatherings and talk to other testers/managers and see what skills they seek in a tester.

Now, let’s have a look at testing job specs taken from 2012. This research has been done by a UK based recruitment company.

Percentage of jobs that require Good/Exceptional coding skills:

Q1/Q2 2012 – 63%

Q3/Q4 2012 – 84%

Breakdown of languages required:

  Q1/Q2 2012  –  28% – Java, 26% – C#, 23% – Ruby, 16% – C, 7% – PHP

Q3/Q4 2012  –  39% – Java, 35% – C#,  8% – Ruby, 12% – C, 6% – PHP

The remaining  37% in Q1/2 2012 and 16% in Q3/4 2012 were a mixture of “we don’t need someone with any coding experience”, or “we purely need a Manual tester.”

Research also shows that salaries for testers with exceptional coding abilities have risen by £3500 per annum in the past 6 months.

What this means:

The research above suggests there are 21% more people being hired in the past 6 months alone with good to exceptional coding knowledge than without, however, there is clearly still a requirement for Manual testers.

Java is a still the main scripting requirement but Ruby has become increasingly popular.

Top Test Automation Technologies are:

  •   Selenium, including SeleniumRC and Webdriver
  •   QTP
  •   XUnit frameworks such as JUnit, NUnit, TestNG, etc
  •   BDD tools like Specflow/Cucumber
  •   Watir or Watin.

The above results are for the UK. A similar study was done in the US not long ago and you can read the details about that here.

Final Words:

Adam Goucher is probably right. But for now, manual testing and manual testers are here to stay. As more and more companies move towards the “Developer in Test” mentality, I see future testers taking up coding, especially if they want to work for the best companies and not to forget, these roles pay considerably more as compared to manual testing roles.

4 thoughts to “Should Testers know how to code?”

  1. Good article!

    I know that manual testing is valuable to Google, although it is not commonly perceived (or rewarded) as such. An ex-colleague of mine now works at Google as a “Developer in Test”. He says that manual testing finds a number of significant issues missed by tests… and we are not just talking typos, 1 pixel misalignment, and the like.

    In my experience this is pretty much universally the case for two reasons:

    1. It is not feasible to automate every test.
    There are several reasons for this: ROI (do the tests provide enough value versus the time and effort to automate them?), test execution time (feedback not quick enough), resource requirements (e.g. test environments, hardware), tests that do not need to be repeated often (if at all), consistency of results (browser-based tests are notoriously fragile), to name a few.

    2. An automated test will only pass or fail.
    Automated tests can only confirm something is or isn’t; it is a case of black-or-white, whereas a person testing can analyze shades of grey. They can pick up on things that an automated test is not programmed to look for. They can have conversations to determine if this thing they have noticed is a defect or not. They can learn from the feedback the system is given them and and explore further. They will find defects that automated tests do not.

    Essentially automated tests are valuable in confirming that the things they are programmed to check are present and correct, and so provide a good platform for (manual) testing to expand upon.

    I would have said automated “checks” but I don’t want to get into that debate here. If you are interested in what this means I suggest you read this excellent article on “Testing vs. Checking” by Micheal Bolton:

  2. I fully support your view on how companies are missing the point on hiring Test Engineers. Most important skills that any tester must possess are analytical thinking, ability to adapt, understand applications/business domains from both bird’s eye view and detailed view and to have good communication skills. I was once told by a colleague of mine that Test Engineers should be the guiding light in any team especially in Agile teams and I tend to fully agree with that.

    Automation is a very important skill and much needed one too. But I am convinced that strong Automation (read: Development skills in testing context) does NOT guaranty a good tester.

    It is also becoming a fad in a way these days to hire “Developers in Test” and that surely raises quite a few concerns. One must understand that in a testing role one must hire a “Tester who can Develop” rather than a “Developer who can Test”. Testers are skilled people with niche skills and as outrageous it might sound to replace all developers with testers the contrary is quite true if you ask any quality conscious person.

    You rightly put, every organization has its specific needs and generalizing requirements may push the industry surely to the point Adam Goucher has made (This is the last generation of testers that don’t know how to code)…

    I’m all in for Skilled testers to up-skill themselves and automation surely should be on top of any manual tester’s list but to move to a point where one thinks that we can do with developers testing might be stretching it a bit too far…

  3. Yes, I concur with all your statements. I’m old school, been testing for 25 years, and during that time I’ve picked up a smattering of code but also, in all that time, not one of my employers has considered that I was justified in requesting support from the training budget to get some formal coding experience.

    As it happens, I passed examinations in Pascal, C, and VB (as well as other bits and pieces) but unfortunately this all happened many years ago (plus the certificates have gotten lost in house moves!) It is frustrating that my genuine, extensive work experience coupled with an ability to read code and a good understanding of logic, is not sufficient to counterbalance the demand for people to be able to script for Selenium or QTP (which, as it happens, I beta-tested when it was known as Quick Test Alpha.)

    But the future is set, I think – until the NEXT big thing in testing arrives and the current crop off testers find their skills are supplanted again.

Leave a Reply

Your email address will not be published.