I have been dating Test automation for the past decade and am never bored of it all the time. She has been a fascinating partner, making my life merry when I take care and making it a living hell, when I do not.
Automation is always is a double edged sword and I use this phrase many times today (read decade), because my excitement in automation has led to advocating responsible automation. It’s another question on whether I am able to sell it or not always.
A good part of my energy and effort has gone by in proving Test automation is the right thing for its most hardest critic and Test Automation is not the golden goose for its easiest subscriber.
Automation should not be seen as the magic wand that solves all of the problems, especially Testing. It can address concerns over schedule and cost in the long run, but may fall flat on providing good quality systems if it is being harassed. Automation builds a degree of predictability, but always misses to find out of the box defects.
Test Automation in theory is another piece of code that is built on an existing code called application/system. It would have defects, it would have changes , it would work , it wouldn’t work , it may find defects and it may not find.
Just like the way application code changes very frequently , “AUTOMATION CODE ALSO WOULD CHANGE”. There is no running away from this phenomena. A lot of times, I have PMs and Architects pointing at failures of Automation. I tell them, it is bound to fail. It should fail. What is the need for it if everything passes ?
I find it hard to understand what they need from Test automation code , is it “Magic”. We plain engineers, architects building line of code dependent on so many facets of software development factors.
If there could be maintenance releases for application code, I ask why couldn’t all accept that automation code base also needs maintenance.
Does anyone believe that Test Automation is more complex than application development, whoa didn’t I raise some eyebrows here.
· Application code is derived from requirements. Automation code is based on application behavior and requirements.
· Application code is bound to make the requirements a reality. Automation code should validate the requirements against the built system
· Application code is usually the first line of representation of requirements, Automation code is built based on multiple representation of requirements (environment, technology, tools, test scenarios etc)
A growing and a relevant trend is to tie automation to the parent code, build components , reduce dependency on UI layers. Absolutely the way to go. Automate as much as possible at the interface layer and as much as needed at the UI layer.
Testing as a function cannot change to build everything at interface layer and abandon the UI layer once for all. The job of test automation is also sign off the system the way end user would do, do we expect the end user to test APIs only ?
The hardest critic of test automation just needs to know the value of test automation, where the hypnotized believer of Test automation wishes for sun.
Today, that’s the unfortunate direction we as an industry are heading at . Everyone wants to automate and everything needs to be automated.
I am fascinated the ease at which “reset button is hit” , when understanding the expectations from Test automation is desired. We do not learn from mistakes and we always re-invent the wheel.
Am rest assured, this is not a concern only with Test automation, rather across the board where specializations are involved.