In recent years, much attention has been paid to setting up test automation frameworks which are effective, easy to maintain, and allow the whole testing team to contribute to the testing effort. In doing so, we often leave out one of the most critical considerations of test automation: What do we do when the test automation doesn’t work correctly?
Testing teams need to develop a practical solution for determining who’s accountable for analyzing test automation failures, and ensure that the right processes and skills exist to effectively do the analysis.
There are three primary reasons why your test automation may not work correctly:
- There is an error in the automated test itself
- The application under test (AUT) has changed
- The automation has uncovered a bug in the AUT
The first step whenever a failed test occurs in test automation is to figure out what happened. So who should be doing this?
Too often in testing organizations, it’s the case that as soon as a test engineer runs into a problem with the test automation, they simply tell the automation engineer “Hey, the test automation isn’t working!” The job of analysis then falls to the automation engineer, who is already overburdened with implementing/maintaining new and existing test automation.
How can we push this analysis ‘upstream’ to the test engineers who execute the test automation? In order to do this, we must first look at why the test engineers don’t feel that they can or should analyze the issues.
In a typical ‘scripting approach’ to test automation, the test engineers will first write a verbose test case, typically in Word, Excel, or some sort of in-house or 3rd party test case management tool. Once that task is completed, the test engineers effectively “throws it over the wall” to the automation engineer. The automation engineer thens create a scripted version of the test case, and “throw it back over the wall” to the test engineer, who then executes the automated test.
More often than not, the test engineer will not understand the scripted test very well. If something is broken, she relies on the automation engineer to figure out what went wrong. This situation violates the very principle of the four fundamental tasks that an experienced test engineer must be able to do:
- Design/write tests.
- Execute tests and identify/seek out failure.
- Analyze a failure for reproducibility and ideas to incorporate into new tests.
- Report a failure and/or bug.
At a minimum, the test engineer should be able to analyze the results of the automated tests, and figure out if a failure is due to an actual bug in the AUT. If there is no apparent bug, then the test engineer should be able to determine whether or not a change occurred in the application. Finally if there is no apparent bug or changes in the AUT, then she may confidently consider that the issue was caused by an error in the automation.
So how can you empower the test engineer to analyze test automation failuress? It’s simple really. If your test engineers can create automated tests themselves, then they will be empowered to analyze those tests when they don’t work. In our experience, a keyword driven test automation framework is the best way to enable your test engineers to effectively own the analysis of test automation failures.
With a properly implemented keyword-driven test automation framework, the analysis of a test automation failure consists of the following steps:
- Did the test automation uncover a bug in the AUT? (Done by a test engineer)
- Was the failure caused by a change in the AUT? (Done by a test engineer and/or automation engineer)
- Was the failure caused by an error in the automation itself? (Done by an automation engineer)
With keyword driven test automation, scripting is kept to a minimum, so most of your failures will occur due to bugs or changes in the AUT. Test engineers should be able to do most of the failure analysis, freeing your automation engineers to focus more on creating new automated tests, and allowing you to further increase your test coverage, reduce testing time, decrease maintenance, and most importantly, create higher quality products!