Test jednostkowy? Test integracyjny? Test regresji? Test akceptacji?

Czy jest ktoś, kto może jasno zdefiniować te poziomy testowania, ponieważ trudno mi je rozróżnić podczas wykonywania TDD lub testów jednostkowych. Proszę, jeśli ktoś może wyjaśnić, jak i kiedy je wdrożyć?