Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Чем плоха концепция TDD? (число прочтений - 5747 )
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Чем плоха концепция TDD?
05. Мая 2010 :: 10:42
Печать  
Разведем холивар тут Улыбка
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #1 - 05. Мая 2010 :: 12:11
Печать  
НерешительныйБуду первым.
Холиварить не хочу.
С краткой теорией TDD знаком. Против нее ничего не имею.

Но хотельсь бы услышать коментарии специалистов по такому моменту:
Есть некая Программа обладающая по мнению Программиста1 функциями A и B.
Программист1 покрывает эти функции тестами. Ок.
Программист1 решил внести функцию C. Соответственно подготовил тест, реализовал C. Прошел тесты для A, B и C.
Все вроде бы хорошо, но Программист1 не учел (потому что не знал), что Программа обладает еще и
функцией D, которая поломалась из-за C.
С точки зрения теории TDD, кмк, этого бы не произошло если бы Программист1 писал Программу начиная с ХелоуВорд.
Но в нашем примере это не так - был еще и Программист0.
Как избежать подобных проблем? Какие есть теории?
Стоит ли вообще полагаться на тесты?
Стоит ли большую часть времени разработки тратить на разработку теста, если вдруг окажется что тесты врут?
Или может нужно смотреть гораздо шире тестов и пытаться разумом и/или интуицией охватить последствия внесения функции C ?
  

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #2 - 05. Мая 2010 :: 12:40
Печать  
Дмитрий, ты разорвал мне мозг... для меня это проблема...
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #3 - 05. Мая 2010 :: 12:47
Печать  
vandalsvq писал(а) 05. Мая 2010 :: 12:40:
ты разорвал мне мозг
эээ... в хорошем или плохом смысле?
  

1&&2&&3
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #4 - 05. Мая 2010 :: 13:06
Печать  
С теорией не знаком, но утверждение trad писал(а) 05. Мая 2010 :: 12:11:
С точки зрения теории TDD, кмк, этого бы не произошло если бы Программист1 писал Программу начиная с ХелоуВорд.

не похоже на правду.  Нерешительный
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #5 - 05. Мая 2010 :: 13:23
Печать  
berezdetsky писал(а) 05. Мая 2010 :: 13:06:
С теорией не знаком, но утверждение trad писал(а) 05. Мая 2010 :: 12:11:
С точки зрения теории TDD, кмк, этого бы не произошло если бы Программист1 писал Программу начиная с ХелоуВорд.

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

1&&2&&3
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #6 - 05. Мая 2010 :: 13:47
Печать  
trad писал(а) 05. Мая 2010 :: 12:11:
Стоит ли вообще полагаться на тесты?

Надо здраво оценивать, что дают тесты, и чего они не дают.

Тест может сказать лишь одно из двух:
1. "Функционал А - работает"
2. "Функционал А - не работает"

Никакой информации о работоспособности функционала "Б" тест дать не может.

===================================

Исходя из этого - у нас возможны два варианта.

1. У нас есть тесты на 100% заявленного функционала.
Помимо прочего, это означает, что 100% функционала как-то вообще заявлено. То есть или функционала крайне мало, или функционал крайне формален (= весьма далек от работы с людьми) или так не бывает. Не рассматриваем.

2. У нас нет тестов на какую-то часть функционала.
В такой ситуации, успешное прохождение всех тестов говорит нам лишь о том, что проверяемый функционал, в условиях проверки - работает. И выводы о том, что программа вся работает корректно, что рефакторинг проведен безопасно, и всякое такое прочее... такие выводы нельзя делать только на основе прохождения неполного набора тестов.
  
Наверх
www  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #7 - 05. Мая 2010 :: 13:47
Печать  
trad

Собственно, я оспаривал само утверждение, а не точку зрения теории на него. Если теория TDD так утверждает - это (холивара ради) проблемы теории.  Улыбка

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

Добавлено: если чё, я не против TDD. Хуже от него точно не будет.  Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #8 - 05. Мая 2010 :: 13:55
Печать  
Ну и вдобавок: серебрянной пули нет. Апологеты XP, кстати, тщательно подчеркивают это. Ну и давайте не забывать, что само по себе автотестирование и TDD безусловно дают результаты (Миш, представь, что автотестов вообще бы не было? Помнишь проблемы с формексом?). Но кумулятивный эффект XP достигается за счет одновременного применения довольно большого количества практик, помимо TDD. Таких как парное программирование, метафора системы, постоянный рефакторинг, коллективное владение кодом и многих других.
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #9 - 05. Мая 2010 :: 14:09
Печать  
berezdetsky писал(а) 05. Мая 2010 :: 13:47:
Собственно, я оспаривал само утверждение, а не точку зрения теории на него.
Нерешительный в том утверждении и была точка зрения теории.
  

1&&2&&3
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #10 - 05. Мая 2010 :: 14:18
Печать  
trad писал(а) 05. Мая 2010 :: 13:23:
berezdetsky писал(а) 05. Мая 2010 :: 13:06:
С теорией не знаком, но утверждение trad писал(а) 05. Мая 2010 :: 12:11:
С точки зрения теории TDD, кмк, этого бы не произошло если бы Программист1 писал Программу начиная с ХелоуВорд.

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


Невнимательно читал. Я помогу.
Цитата:
Большая часть нежелательных побочных и отдалённых эффектов от вносимых в программу изменений отслеживается именно на этом этапе, с помощью достаточно полного набора тестов.


Не "все", а "большая часть". Жизнь - удивительно сложная штука. И программирование - это бесконечная и безнадежная борьба с этой сложностью.
  
Наверх
www  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #11 - 05. Мая 2010 :: 14:24
Печать  
fez
Вот, а из "довольно большого количества практик" у нас применяется только "коллективное владение кодом" (и оно, кстати, хорошо помогает в разборе полетов и нахождении крайнего) и поэтому TDD тут, наверное, не особо помогает.

А по первопричинной ветке, мое имхо, нужно просто признать ошибку (ну ведь ошибка же) и без отговорок зафиксировать/исправить ее. Без апелляции к TDD как с одной так и с другой стороны.
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #12 - 05. Мая 2010 :: 14:29
Печать  
fez писал(а) 05. Мая 2010 :: 14:18:
trad писал(а) 05. Мая 2010 :: 13:23:
berezdetsky писал(а) 05. Мая 2010 :: 13:06:
С теорией не знаком, но утверждение trad писал(а) 05. Мая 2010 :: 12:11:
С точки зрения теории TDD, кмк, этого бы не произошло если бы Программист1 писал Программу начиная с ХелоуВорд.

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


Невнимательно читал...
...Не "все", а "большая часть"

Ах, вот о чем Иван. Смущённый
  

1&&2&&3
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #13 - 05. Мая 2010 :: 15:03
Печать  
trad писал(а) 05. Мая 2010 :: 14:24:
fez
Вот, а из "довольно большого количества практик" у нас применяется только "коллективное владение кодом" (и оно, кстати, хорошо помогает в разборе полетов и нахождении крайнего) и поэтому TDD тут, наверное, не особо помогает.

В разборе полетов TDD действительно не помогает, ибо направлено на уменьшение количества тех самых полетов Улыбка

Цитата:
А по первопричинной ветке, мое имхо, нужно просто признать ошибку (ну ведь ошибка же) и без отговорок зафиксировать/исправить ее. Без апелляции к TDD как с одной так и с другой стороны.

Подпишусь под каждым словом.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Чем плоха концепция TDD?
Ответ #14 - 06. Мая 2010 :: 04:07
Печать  
trad писал(а) 05. Мая 2010 :: 14:24:
А по первопричинной ветке, мое имхо, нужно просто признать ошибку (ну ведь ошибка же) и без отговорок зафиксировать/исправить ее. Без апелляции к TDD как с одной так и с другой стороны.

1. Я про ТДД в применении к данной ошибке вообще не говорил Улыбка
я только ответил Михаилу, который и заявил про ТДД, что наличие тестов все-таки намного лучше, чем их отсутствие.
2. Я показал, что в случае, который я считаю нормальным для ООП (создание внутренних данных в конструкторе), ошибка вообще не возникает. т.е. показал простой путь обхода.
3. Как неоднократно говорил, у меня сейчас нет времени на 77, я практически полностью сижу на 8. Соответственно, нет времени на поддержку 1С++, к сожалению.
поэтому я и показал решение из п.2 для того, чтобы народ видел хотя бы возможность обхода проблемы.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать