Почитайте в принципе про тестирование, есть масса литературы. Привязка к языку тут не особо нужна.
Почитайте
документацию к PHPUnit, там хорошо написано. Есть так же
частичный перевод (чуть старый).
Про функциональные и интеграционные тесты можно почитать сначала на вики и потом уже гуглить что не понятно, различные статьи и т.д.
Если вас интересует TDD - почитайте "экстремальное программирование" Кента Бэка. Мне очень понравилась подача материала в этой книге. Там же про рефакторинг в контексте TDD хорошо расписано.
Если вас интересует BDD - behat.org