Войти
ФлеймФорумПрограммирование

Почему хабр торчит от TDD?

Страницы: 1 2 339 40 Следующая »
#0
7:02, 2 фев. 2013

Сколько его читаю - последнее время больше, до этого весьма эпизодично, так в каждом посте про программирование обязательно напишут про TDD, какой он вкусный и замечательный, холи грейл практически.

И я никак не могу понять - откуда такой фанатизм? Я делаю продукты 8 лет без всякого TDD, и не имею особенных проблем. Порой я трачу на дебаг значительное время, хотя в последнем проекте у меня практически не было мистических неуловимых багов, которые могли бы исправить тесты, - но если бы я тратил время на написание по куче тестов для каждой функции каждого класса, я бы писал минимум вдвое медленно - что гораздо медленнее чем любой дебаг. Притом, не факт что тесты спасли бы - как правило странные баги вылазят из самых непредсказуемых мест, как раз там, где не предполагаешь - а раз не предполагаешь там проблем, то и тестом это место не будешь закрывать.

Причем, я в коде вполне себе могу использовать тривиальные проверки, типа чтобы индекс массива не выходил за пределы, или ассерты. Но это ведь не TDD - зато одна строчка проверки и никаких тебе особенных юниттестов, максимальная эффективность при минимальных трудозатратах.

#1
8:37, 2 фев. 2013

TDD - это не просто написание юнит-тестов. В TDD тесты первичны, а код - вторичен. По TDD перед тем как написать какой-нибудь метод нужно написать красный (фейлящийся) юнит-тест на этот метод, потом реализовать метод минимальным количеством кода, которое необходимо для прохождения теста.
Для себя решил: юнит-тесты - да, TDD - нет. TDD слишком непривычный и неприятный лично для меня способ кодирования.

#2
8:58, 2 фев. 2013

Получается юниттесты и тдд вообще никак не помогут меня спасти от багов. То есть к примеру у меня запросто будет некорректный и глючный код, по счастливому стечению обстоятельств проходящий свой собственный тест, но собой фейлящий десяток других мест. Что, конечно, индикатор наличия проблемы - но абсолютно никак не поможет найти ошибку быстрее.
Если у меня в игре где-то что-то стало некорректно работать, я или увижу это безо всяких тестов, либо мне на это наплевать :).

#3
9:59, 2 фев. 2013

jaguard
Главный сок тестов - автоматизированная проверка. Ты коммитишь код, на другой машине запускается сборка, потом приложение запускается и начинает проходить тесты. Потом можно посмотреть детальный отчет о том, что произошло.
В играх конечно TDD проводить сложнее, потому что трудно тестом проверить, видна на экране кнопка или нет. TDD это больше для сложных систем, где тяжело нанять штат тестеров, чтобы проверяли все возможные варианты поведения пользователей.

#4
10:23, 2 фев. 2013

jaguard
> Почему хабр торчит от
потому что школота. потому что максимализм и отсутствие опыта. потому что рабы идей и создания кумиров.

#5
11:51, 2 фев. 2013

jaguard
>Почему хабр торчит от TDD?
На хабре зашкаливающее количество теоретиков кайфа, в основном занимающихся веб девом.

#6
12:02, 2 фев. 2013

хабраюзер - не человек

#7
12:53, 2 фев. 2013

jaguard
Им нравится это приятное чувство, когда думаешь, что у тебя в софтине нет багов =)

jaguard
> Получается юниттесты и тдд вообще никак не помогут меня спасти от багов.
Они спасают от багов, которые обнаруживаются написанные вами тестами, очевидно же =) То, что они(тесты) совсем не помогают - это, конечно, неправда. Я бы заменил весь этот бред с юнит тестами и TDD на формальную спецификацию своего кода и аналитическую (т.е. не перебором ) проверку его соответствия этой спец-ии + классические тесты для чужих библиотек с недоступным исходным кодом.

#8
14:34, 2 фев. 2013

Это - мода, очевидно же. Как пришло - так и уйдёт.

#9
14:40, 2 фев. 2013

jaguard
> Получается юниттесты и тдд вообще никак не помогут меня спасти от багов.
От новых багов спасут только если повезет. Никакой гарантии конечно же.

А вот от регресии из-за нового кода — очень даже.

#10
14:41, 2 фев. 2013

Потом что харб состоит из идиотов.

#11
15:10, 2 фев. 2013

jaguard
> Получается юниттесты и тдд вообще никак не помогут меня спасти от багов. То
> есть к примеру у меня запросто будет некорректный и глючный код, по счастливому
> стечению обстоятельств проходящий свой собственный тест, но собой фейлящий
> десяток других мест. Что, конечно, индикатор наличия проблемы - но абсолютно
> никак не поможет найти ошибку быстрее.
> Если у меня в игре где-то что-то стало некорректно работать, я или увижу это
> безо всяких тестов, либо мне на это наплевать :).

А с чего вы вообще начинаете разработку?
Давайте на простеньком примере?

+ Показать
#12
15:30, 2 фев. 2013

Kartonagnick
И накой фиг для этого тесты?
Тривиальные проверки и так в коде должны быть, если ты их знаешь - ты их навесишь. Тесты нафиг не сплющились.
А если ты их не знаешь, то и тест ты не сделаешь.

#13
15:44, 2 фев. 2013

@!!ex
> И накой фиг для этого тесты?

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

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

В этом случае достаточно создать ещё один тест, который проиллюстрирует поведение в этой ситуации.
И если ошибка подтверждается - вносятся правки в реализацию механизма.
При этом все остальные тесты по прежнему должны быть пройдены.

Я хочу сказать, что на позднем этапе, тесты позволяют безопасно вносить правки в механизм. Не нужно боятся, что изменения что-то где-то поломают.

#14
15:48, 2 фев. 2013

а давайте устроим рейд на хабр

Страницы: 1 2 339 40 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.