Юнит-тесты это в модульной системе понятие ... ну, избыточное.

Для каждого модуля пишутся тесты, и всё.

Ведь каждый модуль представляет некую абстракцию, которая может отдельно и независимо от всего прочего тестироваться.

Контрактное программирование -- тоже некое избыточное понятие.

Неконтрактное программирование -- это не программирование, а так ... чмо.

Для каждой процедуры есть пред- и пост-условия.
На всё втыкаются АССЕРТы на уровне инстинкта.

Я детишкам в самом начале логики показываю фрагмент из "Леона":

-- Проверь. Убедись, что это именно то, что тебе нужно.
-- Я тебе доверяю.
-- Не путай одно с другим, Леон!