We have a great unit test suite in that it is very fast (many tests per second, not many seconds per test!). We also have automated UI (browser, selenium based) tests.
However this now seems to have come at an interesting cost. We have interfaces to populate consumer data from other services and then integrating it with our HTML forms.
We've had more than 5 different incidents recently of having thousands of duplicate records (duplicate for the key fields, not all fields). Not just one table either but 4 different tables.
It seems that our unit tests don't check the database and our UI tests often don't show duplicate records that are not showing up in the UI but exist in the database.
What approaches and techniques can we use to avoid this happening within the limitation of generally very fast unit tests to enable a good TDD/BDD workflow?