There is a lot of talk about everyone should learn how to code. It is the \u2018end’ for any software activity which does not involve coding. While I don\u2019t feel this to be true, but nonetheless I strongly feel testers should be \u2018technical\u2019. In this post I\u2019d like to distinguish what is the meaning of \u2018being technical\u2019 and being a programmer.<\/p>\n
A technical person, in the general sense would be someone who knows how the software is working, how to find issues and trouble shoot any problems they see. Being able to code is a subset needed to develop this skill set, and certainly not the only skill needed to be technical. As far as traditional testers go I feel this is a very important distinction.<\/p>\n
There are also other \u2018personality\u2019 aspects about being technical and certainly some of them hold very important insights, in this post I am focused more on automation vs being technical rather than going into the depth of characteristics of being technical.<\/p>\n
Traditional testers, when thinking of switching to the next career move, the first thing they start off with is leaning automation. In there too, starting from installing IntelliJ and learning Java for selenium, which is the worst place to start for a newbie programmer. This approach sets people to fail, I call a \u2018planned failure\u2019. Apart from this being a bad approach, I feel it\u2019s the wrong one too.<\/p>\n
Automation is not done for the sake of it, it\u2019s a means to an end. That end is testing the software thoroughly and efficiently as possible. Automation is a fraction of the effort needed to reach there, more important is \u2018being technical\u2019. An understanding of how the application works behind the scene. Being able to test the AUT at different levels of the technology stack using different tools at each layer.<\/p>\n
There are automation engineers who are reasonable at coding, but cannot be classified as \u2018technical\u2019. They don\u2019t know how a web architecture works and lots of other things a technical person should know. It would be more beneficial to know what to automate first, i.e. being technical and go under the hood to identify what areas need to be tested and how, then start automating or ask someone to automate portions of it. Case in point, being \u2018technical\u2019 is more important than learning automation right off the bat.<\/p>\n
The most important point for me being classified as technical is to understand how different pieces of the software work generating the results you see on the screen. A person should know how does the data flow from entering a value in a field till the expected result shown back on the screen. Role played by tools, libraries and frameworks at different levels in the technology stack and how they communicate with one another. Apparently, this might seem a daunting task (if you have some knowledge of how the web works), but the reality is it\u2019s easy to learn and is not as complicated as it might seem.<\/p>\n
Once you know what\u2019s going on behind the scene, next step is to learn what tools are needed to test at different levels. On the UI you can use developer tools for a lot of things, tracking performance, testing change in data, verifying styling, tests around cookies and sessions. Other tools for multi browser testing and running on different versions.<\/p>\n