Monday, August 15, 2016

A Programmer's mind + a Tester’s mind = Automation Tester

What does it take to be a good automation tester? Is it the good diagnostic skills of a QA specialist or the brilliant step by step thinking mind of a programmer?
As I was thinking about this I was reminded of something I told someone else. “If you know what everyone is supposed to do you can do your job better.” I know it is lame to quote yourself and I was talking about soccer, so not really testing or even software. However, I really think I might have been onto something.
Let us dive into a testers mind. Constant self evaluations, constant thoughts of “no programmer is perfect”, and constant thoughts of “how do I effectively exploit this program so that it reveals to me it’s soft spots.”
These are the driving thoughts of a tester. They do not care what others think because if they did they would not be a good tester. They do not mind walking up to a programmer, no matter who it is, and telling them, in a tactful way, that you broke the program and you need to fix it. They are the ones that are responsible when there are bugs in the program that weren’t caught and they know it. They make sure no matter what that they do their absolute best to minimize the possibilities of major crashes.
Now let us take a look at the mind of a programmer. Logic. Really everything a programmer does is driven by the logical ‘next step’ in the sequence. Whether they are deciding what to do for dinner or how to plan party. Their decisions are driven by this logic.
This logic is why programmers are good at their job. They have the ability to think through a problem by breaking it down into step by step instructions on how to solve it. This is their ability. This is their ‘super power.’
Now their is the automation tester that must be the ‘no programmer is perfect’ thinker and must have the ‘step by step’ super power. How is this done? This is done by always thinking “there has to be a better way of doing this.” It is done by being the best of both worlds.

Really automation testers should be the smartest, or at least some of the smartest, at the company. If you can have effective automation testers your life will be easier and so will the life of everyone at the company.


  1. I don't intend to be rude, but I had a hard time following the argument that leads to "Automation testers should be the smartest".
    Sure, it's always fun to pat oneself on the shoulder, but I always fear that I will sprain a muscle while I do that.
    As a tester, I have some tasks I do. Some of these tasks I put into code according to my coding capabilities (which are good, I know that some of the devs in my team are better programmers that I am). Despite that, I'm not claiming for any superiority over others in my work environment - I might be good at testing, and part of that is being able to code whatever task I need to be done by a computer - but in what way is this different than a tester who does not code but is a brilliant business analyst and have a keen eye on spotting bad or missing requirements? Or a tester who has a deep understanding in security? or in accessibility? Each of of us can contribute to the team effort of producing good software, and the fact that I posses a skill that the others currently might not have is no indication of me being any better.

    (also, as a side note - Testers "do not care what others think"?? caring about what others think is what makes a good tester - caring what the user or the product owner thinks is a great way to spot bugs, and caring about what the developers think is, besides being polite, a great way to get bugs fixed.)

    1. Your good I actually really enjoy comments like yours. Constructive criticism is one of the ways to learn. My train of thought is that developers just focus on coding and testers only focus on testing. Maybe a better word would be versatile, but if you have multiple talents you have more smarts, or at least talents then others.
      "do not care what others think" is a little strong but the point was that they are not afraid to walk up to a developer and tell him that his code broke the program obviously you have to use tact. see my other 2 articles similar to this. and

    2. Hi,
      Thanks for your kind response.
      I think I'll go a bit further and take your permission to further query this assumption that you have (I will skip commenting about the two linked posts, as one of them assumes a world very different than my own, and the other leaves me with a strong sense of objection, but I don't have the time to pinpoint exactly what or why) and will ask - what is so special about programming that makes it worth distinguishing groups by it. Sure, if your job is to be a developer - it might make sense to recognize programming as one of the main skills you have, but as a tester - why is programming any different than any other tool? I don't hear much about "SQL capable testers" or "linux fluent tester", despite the fact that both of those are pretty common (and powerful) skills for testers, what makes programming such a big deal?
      I'm a tester. As such, I do what I need to do - if it requires learning Plsql, I'll do that. If it requires learning to work with Jenkins, I'll do that too. Programming might be a bit harder to learn than some skills, but is there anything so special around it to justify creating a whole new category of testers for it (besides the "everyone's doing that" reasoning, which I don't like) ?

      Also - Is it so that the only skills to have are "programming" and "testing"? If all I do is program and test, am I more versatile than someone who dabbles with customer support, sales and testing? or more than a tester who has some background in project management and business analysis and specializes in user experience?
      Sure, I have more skills than those who do exactly what I do but don't code - but can I honestly say that counting different skills is what makes me more versatile? or means that I have "more smarts" ? what if I'm comparing myself with someone who is really good (for the argument's sake - better than I am) at testing manually? Someone with keen senses and a good hunch of what might be the most interesting path to take. why demean such a person?