Today’s market is a very competitive environment, where products need to be developed, improved and updated fast and in a very agile way. Therefore it’s imperative to invest time and resources in performing regular quality automated testing, to quickly test and evaluate both functional aspects and the performance of the projects before ‘go-live’.
Over the years we came to understand that a good testing approach requires several equally important things, such as clear testing objectives, automated regression tests, security and validation tests etc. Moreover, ‘testing early’ and ‘testing continuously’ has become our motto and therefore we created an automated testing suite that has been continuously updated and improved over the years. This automated testing suite is today one of the strongest pillars of our Agile development approach.
After several years of experimenting different approaches, we’ve put in place 5 best–practices for automated testing:
1. Test early and test often
It is extremely important to test as soon as possible new developments projects. It is the reason why we execute automated regression tests already in the first phase of development and as often as possible. This does not only help in early defect detection but also prevents instability issues later on.
2. Automate all (if possible) in regression tests suites
To be able to test early and often, we need to have testing suites that cover the most of functionalities and are quick to run. These are called “automatic regression collections”. These must be regularly updated with new features and thus be consistent for future stages of development.
During all stages, they will be performed very early and very often again. This is where automation makes a lot of sense and saves an incredible amount of time.
3. Automate only stable features
We dedicate a significant amount of time and effort to design and implement automated tests, therefore it would be good not to change them all the time. That is why we avoid using automated testing for features that are not finalized and can change many times until they become stable.
This would require automated tests to be updated as well, over and over.
4. Design independent automated tests
Designing automated tests that don’t depend on other tests is the best way to approach automated testing. Having tests that need a certain order to be executed or are dependent on other tests makes it difficult for automation to provide full benefits.
If we avoid this limitation, they can be scheduled to be executed anytime and in parallel, even across different environments.
5. Automation is not the only way
Automation has its own merits and advantages, but we don’t rely exclusively on it. Sometimes automation is either not possible, or it’s not worth the effort, or even not recommended.
That is why we always try to use it only whenever it makes sense and not make it the only testing option.