Как применять TDD при написании кода?
Эта:
https://habrahabr.ru/company/piter/blog/326662/
Суть TDD "на пальцах":
1. Написать тест на проектируемый кусок кода.
2. С успехом "провалить" этот тест.
3. Написать достаточно кода, чтобы пройти тест успешно.
4. Отрефакторить получившийся код.
И дальше все начинается сначала. Чтобы понять как это работает, предлагаю загуглить решение задачи FizzBuzz с применением TDD(на YouTube роликов полно, постов в блогах не меньше).
Дальше можно уже почитать литературу по тестированию. Я бы посоветовал сначала что-то фундаментальное по теме тестов, например, The Art of the Unit Testing.  Дело в том, что TDD это в первую очередь и одновременно "всего лишь" техника написания кода через тесты. И чтобы ее успешно применять, надо уметь писать эти самые тесты.
В этой книге найдёте много полезного про тесты и их концепцию. Советы по TDD также присутствуют.