TDD

Как-то (года три назад) решил освоить новые-современные-молодёжные подходы в программировании, начать писать тесты и стать лучшей версией себя. Купил книжку, изучаю, делаю упражнения… бесит, что тесты в три-четыре раза объемнее тестируемого кода, но продолжаю.

Но делать по книжному — скучно… и вместо ToDo-листа решил сделать «рандомный показыватель мудрых изречений». И сразу, бац! А как тестировать, что случайность случайна? Путь только один — запустить тест миллион раз, построить вероятностное распределение для каждой цитаты из тестового дета-сета, вычислить мат-ожидание и сигму, и на основании этого прочекать тест (или не прочекать). В общем, пара сотен строк кода, миллион прогонов, и все ради тестирования единственной строчки программы?! А в случае с рандомизацией на уровне базы так и вовсе тестируем символ '?'…

Да ну нах…

Так я и не стал современным программистом.

Книжку продам. Дорого.

P.S. Кстати, в разных среда и разных окружениях случайность и вправду случайна по-разному. Причем в продакшн (когда между пользователем и кодом появляются всякие кеширования на уровне пакетов в веб-сервере, браузера, прокси, CGI и БД) случайность и вовсе может стать повторяемой последовательностью…

P.P.S. А результат труда, кстати: https://dq.cube2.ru/ — «медитативный показыватель цитат» — и правда показывает в не случайном порядке. Закольцовывает последовательность. Для каждой сессии по-своему, но закольцовывает.

TDD | Сетка — социальная сеть от hh.ru TDD | Сетка — социальная сеть от hh.ru