Когда у меня нет контроля над областями транзакций моих тестов, я обычно каждый раз удаляю и воссоздаю базу данных с нуля.
Очевидно, что это возможно только в том случае, если тесты могут выполняться с пустой схемой (или с жестко заданными значениями поиска, вставленными в сценарии создания).
Когда я тестирую базу данных моментальных снимков, предварительно заполненную большим количеством данных, я раньше использовал сценарии очистки, скажем, удаляю все записи из каждой таблицы выше максимального идентификатора моего базового снимка.
Не пытался автоматизировать резервное копирование / откат, как предлагает AdaTheDev, но, похоже, это ваш лучший вариант, если вы не хотите поддерживать потенциально сложные (и глючные) сценарии очистки (зависит от сложности данных снимка / как часто вы можете изменить свой снимок и соответственно изменить очистку).
Рассматривали ли вы макетирование доступа к данным, чтобы ваши веб-тесты работали с хранилищем данных в памяти? Затем выполните внутреннюю проверку процедур доступа к данным, где вы все еще можете откатить области транзакций?