если коротко
Юнит тест позволяет удостовериться что то, что ты написал работает так, как ты думаешь.
Функциональный позволяет удостовериться, что он делает именно то, что нужно, не зная деталей имплементации - как блекбокс
Юнит тесты обычно очень маленькие, и делаются на каждую нетривиальную функцию, чтобы проверить что она во время своего выполнения вызывает нужно количество раз, в нужных местах нужные функции, обращается к нужным полям, нужное количество раз, и что по итоговый результат совпадает с твоими представлениями о том, как это должно работать. Юнит тест это валидатор, который показывает, что твое сознание правильно интерпретирует написанные тобой символы.
Функциональные тесты обычно довольно тяжеловесные, они позволяют прогонять тесты по нескольким компонентам системы и их заботит только соответствие выходных данных входным, но не детали имплементации