Я думаю, все согласятся с тем, что модульные (unit) тесты пишутся разработчиком для того, чтобы протестировать минимально возможную обособленную единицу программного кода в изоляции (обычно это класс или функция).
Однако когда речь заходит о других видах тестов (например, функциональных или интеграционных), каждая команда представляет своё собственное видение того, как они должны выглядеть. Google вот вообще отказался от терминологии "функциональные" / "интеграционные" / etc в пользу
"маленьких", "средних" и "больших".
В связи с этим хочу задать несколько вопросов:
Какая терминология принята у вас в компании?
Какие виды тестов у вас пишет разработчик, а какие осуществляет отдел тестирования?
Где Вы проводите грань между юнит, функциональными и интеграционными тестами?
Какие библиотеки / фреймворки используете для каждого из видов программных тестов?
Ну, и наконец, небольшой оффтоп -- запускаете ли Вы юнит-тесты автоматически при каждом сохранении исходных файлов?