It has been a long struggle for 35+ years for the Software Testing field in trying to imitate humans in navigating the graphical user interface using automation scripts. There have been some advances, but essentially, we are still pretty much standing at the same place today doing one of these three methods:
- Specify expectations through a human-friendly language
- Have a higher level of abstraction and then generate scripts
- Have the engineers write and maintain the scripts
One way of the other, if you are required to tell the computer about what to expect, you are bound to one of the above. Nothing wrong with that, except that the cost of maintenance is high in terms of human effort and energy and the amount of time taken. The whole idea of automating is to reduce human fatigue, but if you are tinkering your automation script on a Friday evening for a Monday release instead of going home and being with the family, then you have not achieved your objective.
There should be an alternate approach to automation, one that does not involve trying to imitate human actions. I am not talking about model-based testing or AI-based exploration, as these have their own problems too. I am thinking automation should be placed in a difference context altogether. Automation is necessary; it cannot be done away with. We got to look at how to use it effectively for our purposes.
I have some thoughts. They need to be solidified. I am working on them. Probably I will talk about it in a product development conference in the future, in person.
Feel free to get in touch with me to discuss your thoughts on automation for testing.