Нужно ли очищать БД перед каждым тестом (TDD/BDD)?
1. Значит ли это что мне нужно очищать базу данных после каждого теста?да2. Как лучше заполнять базу данных: вызывать функцию заполнитьБдТестовымиЗаписями() (функция заполняет сразу все таблицы какими-то текстовыми записями) перед каждым тестом? Или не заполнять сразу всю базу данных, а создавать только необходимые записи (например пару юзеров) прямо внутри теста? создавать только необходимые записи (например пару юзеров) прямо внутри теста3. Правда ли что тестовая БД должна храниться именно в memory? (не в файле, как обычная БД) (то есть использовать sqlite для тестов, вместо mysql)желательно, но не обязательно. 
"Финальные" тесты должны проходить на софте и окружении, который будет на продакшене. 
Также желательно провести тесты еще раз не на пусстой базе, а на обезличенных данных с реального проекта
Разберитесь в различиях функциональных/приемочных тестов и юнит-тестов
много идеологических вопросов, что именно и зачем тестируете. 
несколько уровней тестирования, обычно при ТДД разработке требуется быстрая обратная связь с тестами, и тестируют исключительно ту функциональность которую разрабатывают, без тестирование зависимостей в виде баз данных и тд, для этого используют разного рода заглушки (в виде мокапа). 
тоесть базу данных вообще не используют. 
В конце разработки, все равно прогоняются "интеграционные" тесты, по всему сервису, чтоб посмотреть работу сервиса в целом, включая все его части, тогда используется максимально идентичное окружение, что и как на продакшене, по возможности даже используя примерно такую-же БД что и на продакшене. База данных в памяти уже не соответствует этому требованию, может случится так, что например разница в задержках между тем как отрабатывало в памяти и как отрабатывает в реальности будет сильно отличатся, и приведет к неожиданному поведению. 
ну и да на каждый такой интеграционный тест базу заново перезаписывают и заполняют темеже самыми данными что и ранее (мы же обычно в тестах проверяем соответствие исходным данным, потом проверяем например изменение этих данных, поэтому без отката этих данных назад, повторить теже самые тесты не получится)