It’s a never-ending story of folks in Software Testing talking about automation. From framing it as ‘Test Automation’ to wondering if test tools would ‘replace’ ‘QA’, the discussion always goes on. It’s good to talk about it; there are great points that are being shared.
I read this article on Test Automation with a title that reflects on the question that Software Testers constantly have in their mind. There are some very good points in this article as to why automation is not able to scale as a complete replacement of Software Testers, why automation cannot be used in every situation, the case of application never stabilizing for automation to catch up with the changes, and the case of UI design where there are many possible cases all of which cannot be automated. It also talks about a suggestion of what should Software Testing team do if they are not able to automate everything.
The article should have highlighted why automation by itself cannot be Software Testing, and that automation can only be an aid, and it helps checking predictable and unchanging steps that result in human fatigue because of repetition. But this key point is not present in that article. At least not in those words.
That brings about the question where automation can be useful. The answer is that it could be useful in a whole lot of situations depending on the context. But there are certainly some situations in which automation cannot be used. It is better to avoid those in your automation strategy:
Areas with no testability
There would be areas in the product which simply won’t be testable because of the complexity of the product. There would also be situations where hooks / objects are not available for automation to pick up. Unless these hooks are provided by the development, checks in these areas cannot be automated.
Rapidly changing application areas where automation cannot keep up
During initial stages of product development when the product has not matured, there will be frequent changes to the product. Automation cannot be done at this stage. Automation will be useful only when the product/module is complete and stable and any changes thereafter can be verified for a regression. During the initial stages of the product development, it is better to stick with unit tests or module tests written by development to verify the functionality.
Deeply complex functional areas that involves multiple scenarios
Sometimes, the number of combinations that need to be tested is simply overwhelming and it would be impossible to automate testing these scenarios. Testing by humans in these scenarios is the best way to go. Unplanned, unscripted testing with exploration and experimenting is the best approach when the functionality is complex and/or extremely context-sensitive.
While talking about automation, it is always important to emphasize that automation is not Software Testing or a replacement of Software Testing or Software Testers. Automation can be helpful in a number of areas, and there are situations where automation is a no-no and it is important to identify them and avoid automation.
To discuss a strategy for how and where to use automation in your product testing, feel free to setup an initial free introduction call with me. Happy Testing!