Automated tests aim to test the behaviour of code automatically, instead of manual testing. The classical example for them is that if we wish to write a function called add(i, j)
that aims to add two integers then we should check that add(2, 3) == 5
, that add(2, 0) == 2
, that add(0, 2) == 2
, that add(5, -2) == 3
, that add(10, -24) == -14
, etc.
Then we can run all the tests and if any of them failed, we can fix them. Then after we write or modify the code, we can test using them again to see if there are any regressions.
Writing automated tests before we write the actual code, or before we fix a bug, and accumulating such tests (the so-called "Test-driven development" paradigm), is a good practice which helps maintain a high-quality software, and facilitates refactoring and makes it safer.