Всех приветствую.
Случилось у меня тут затишье. В очередной раз наследую чужой говнокод (практически обычная моя работа) для допиливания его до работоспособного состояния. И в связи с чем в пустую голову полезли всякие глупости типа TDD (точней на хабре прочитал в свежей статье).
Так как сам я этим не пользуюсь, хотел бы узнать у благородных донов (смердам и быдлам не беспокоится) как этим всем пользоваться. С теорией я вроде как знаком (я умею в википедию и там в поиск всякий). Но вот на практике как это делать чего-то мне не ясно.
Хотелось бы каких-то рецептов по правильной готовке. Желательно применимо к моей специфике. Обычно я все пишу на Си, и чаще всего для МК и всяких SoC. Опять же, чаще всего все завязано на всякие аппаратные интерфейсы и взаимодействие через них с внешним миром и всякими реакциями на внешние раздражители.
Вот к примеру. Начинаю я новый проект на малоизученном SoC-e. ARM, стандартные IP-core и т д. И надобно мне запилить протокол через UART, моргание лампочками через GPIO, управление периферией по I2C, опрос кнопочек и т д.
Ну и начинаю я все это реализовывать. Идея есть, описание алгоритмов есть (по двойному нажатию кнопачки, три раза моргаем зеленым свистком, пишем в уарт «че нада», и по i2c отправляем 2 байта). Будет у меня файл main.c с вызовом всего и главным лупом. И куча файлов с «драйверами» для всех интерфейсов (ну там инициализации, обработчики прерываний и т.д.)
Как теперь во все это воткнуть TDD?
Как все это будет выглядеть?
Как это запускать и куда смотреть результат?
пихать в рабочий код кучу ifdef с написанием тестов прям в боевом коде. Или писать еще один проект с отдельным main.c где буду дергать функции из боевого дерева?
Как это автоматически запускать и контролировать успешность выполнения?
Как писать тесты для инициализации аппаратной периферии?
как писать тесты для прерываний?
Или может это вся блаж только для жаболюбов? А для встаиваемых систем это ересь?