Tests are the specification of the program's behaviour. You change them when you need to change the specifications, because they are the specifications. Some that come to my mind...
- When the requirements for the code have changed and the test does not match the new behaviour, you should update them.
- When some requirements become obsolete, the tests that specify that behaviour should be removed.
The primary quality that test code needs to have, is readability. Therefore you should change the tests regularly because of...
- If a test is hard to read and does not reveal every intention of the programmer, it should be refactored to improve its readability.
Then there are also cases where the tests are broken, for example brittle tests for concurrent code that mostly pass but every now and then fail, even though the code is correct. In such cases the tests should be fixed to be more repeatable (it might require changing the code to be more easily testable - the best thing is to avoid/restrict concurrency with suitable design patterns).