Need to check that failures happen when they should
It is all too seductive for me, as a developer, to write tests that check that certain inputs yield the expected outputs.
What is much harder to think about and thus write are tests where the s/ware should fail (eg invalid input, conflicting records, ...). What is wanted is that the system should detect these unwanted situations, complain suitably and then proceed normally to deal with more input. If this is not done you can get disasters like earlier this year when UK air traffic control went TITSUP over a bad flight plan.