Our Tests are Robust

Flaky and brittle tests are a nightmare and sometimes even worse than no tests at all. retest was designed from the ground up to have non-flaky, non-brittle tests.

Automated Popup Treatment

Often enough, an unforeseen popup suddenly appears during testing (or does not appear) and the test has to be aborted.

Not so with retest. If a modal popup appears and contains only a single button, retest just presses that button and continues with the test. That additional action is later presented in the report like any other change, where you can permanently apply it to maintain the test.

This is actually only one instance of a more powerful mechanism to passively maintain the tests.

Automated Waits

Almost every test tool requires the test script to contain infamous wait-for commands.

This technique is brittle for several reasons:

  • The command has to be manually inserted, which can easily be forgotten.
  • Changes to the component that is waited for, make manual adjustments of the test necessary.
  • The command usually contains a timeout. If that timeout is exceeded, the test fails, making it "flaky".

Instead, retest employs a general, application-wide wait-for mechanism, that can easily be adjusted. This not only allows tests to be much more robust, it also allows to measure the time needed until the application is ready.

Robust Component Recognition

retest captures the complete state of the GUI. Not only does this remove the necessity to create assertions or validation rules, it also allows for a much more robust component recognition.

Multiple Attributes

With traditional scripting approaches, you have to settle for a single attribute that identifies the component, such as XPath or an ID. If that attribute changes, the component is not recognized anymore, the test fails, and the corresponding script needs to be maintained..

Multiple component attributes Multiple component attributes

With retest, you can use all available attributes at once. If only one or a few of the attributes change, the component can still be identified using the remaining attributes. With traditional tools, this approach would multiply the effort to maintain the test and thus be prohibitive. Because of the ease of test maintenance, this is not an issue for retest.

The Puzzle Advantage

With traditional approaches, you always have only one piece of information that you can use in order to find the component in question. This is like having a single piece of a puzzle and trying to find the equivalent piece in a different puzzle.

With retest however, you have two complete puzzles that you can align the pieces of.

Finding the corresponding component after substantial changes Finding the corresponding component after substantial changes

In the picture above, there were substantial changes to the screen. If the only available information was the label of the button, these changes would brake the test.

However, if we know that there are two buttons on the screen and one didn't change … then it is suddenly easy to derive that the "Accept" button was relabeled to "Save".