Sometimes, not everything can be automated. So how can you optimise your manual regression testing so the test suite can be run quickly and is easy to maintain? I have used the tips below and it is turning out to be very effective!

– Make your tests UI independant:

Exemple: instead of *click on the button “Save” to save your data*, write *Save your data*. This is a minute difference with a big impact: if you change the title of the button or change from a button to a drop down list, the second test is still valid, the first one is invalid.

Testing requires common sense and intelligence: having your tests UI independant means you need to get your brain work a bit more on the first time you run the test, the second time it gets faster and the third time, you just know what to do.

Also, tests are simpler to read and far easier to maintain!

– Make your tests business focused:

Because of the history in your company, tests might be written with lots of details such as “The pop-up should open” but this is pointless as the pop-up exists because there is business workfow behind so by writing tests that represent business workflows, the test will fail if the pop-up does not open even if you don’t check explicitly this is the case.

– Combine tests that are similar and find the path that tests most cases:

Let’s say you have 2 tests testing these 4 cases:

  • A -> B -> C
  • B-> C ->D
  • Can’t you have a test that does A->B->C->D?
  • And if you write a new test: B->D->E then why not having only A->B->C->D->E?

– Use consistent way of writting tests:

One way is to use the Given/When/Then pattern:

  • (Given) some context
  • (When) some action is carried out
  • (Then) a particular set of observable consequences should obtain

– Add as many verfications as possible with the tests:

The purpose of the tests is to find defects if any so add as many verification as possible including verifying impact on data and other screens.

Conclusion: I have used the tips above, based on BDD principals for most, and this has been very effective: we can run more tests, validate more cases and still have not that many tests to run that are easy to maintain. Indirectly, your tests could be now automated quite easily!