Re[4]: Применяете ли вы Unit Testing
От: jazzer Россия Skype: enerjazzer
Дата: 18.06.09 08:36
Оценка:
Здравствуйте, matumba, Вы писали:

M>Здравствуйте, jazzer, Вы писали:


M>>>TDD применимо к маленьким, чётко оговоренным библиотечкам


J>>Открою тайну: нормальные сложные системы состоят из "маленьких, чётко оговоренных библиотечек".


M>Jazzer, у меня тоже есть для вас сюрприз! "маленькие, чётко оговоренные библиотечки" — это СТРОИТЕЛЬНЫЕ БЛОКИ, ничего не значащие сами по себе.

Золотые слова!
"Строительный блок" — это как раз по-английски и есть unit
И Unit Testing — это _только_ о тестировании этих самых блоков.

А то, что ты пытаешься притянуть практику тестирования блоков к тестированию системы в целом — это уже твои проблемы.
Потому что для тестирования системы в целом есть system tests, integration tests и т.д.

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

Остальное скипнуто как не относящееся к юнит-тестированию.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[5]: Применяете ли вы Unit Testing
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 18.06.09 08:51
Оценка:
Здравствуйте, koandrew, Вы писали:

K>Здравствуйте, Mystic, Вы писали:


M>>Так и получается. Только UNIT-тестирование сводится к разработке внешнего приложения, которое читает последовательно файлы из парки, парсит их на предмет данных и результатов, данные загоняет в алгоритм и проверяет результат...


K>Это неправильный подход. При правильном подходе тест кормит алгоритму (через моки/стабы) некий заранее сформированный инпут, и затем сравнивает результат с тем, который должен быть. Причём тесты пишутся идеально просто в случае, если используется IoC, ибо тогда ничего не стоит вместо компонента, "который читает последовательно файлы из папки" (С), подсунуть мок, который вернёт то, что надо — да хоть захардкоженный прямо в тесте инпут. Алгоритмы — это именно то, что в 99.(9)% случаев отлично поддаётся юнит-тестированию.



Во-первых, как заметили ниже, это уже не UNIT-тестирование. Во-вторых, я не вижу принципиальной разницы между моим и вашим способом. В третьих, этот метод хорош, когда есть результат, который должен быть. А если его нету?
Re[5]: Применяете ли вы Unit Testing
От: matumba  
Дата: 18.06.09 09:19
Оценка: 6 (1) -6
M>>Jazzer, у меня тоже есть для вас сюрприз! "маленькие, чётко оговоренные библиотечки" — это СТРОИТЕЛЬНЫЕ БЛОКИ, ничего не значащие сами по себе. Будучи же собранные в систему, они и составляют ту сложную хренотень, которую не так просто протестировать!
G>Неправда. Каждый кирпичик тестируется отдельно...

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

M>>Более того, метафора "кирпичей" хороша только в статьях — на деле, взаимодействие и проникновение кода куда сложнее.

G>Это зачастую признак хренового кода.

Если ваши задачи решают квадратные уравнения, это ещё не повод думать, будто всё на свете так легко поддаётся декомпозиции.

M>>Если модуль А делает работу, Б её обновляет, при этом модуль В синхронно работает с А и Б, обрабатывая результаты обоих, я бы не стал на вашем месте бросаться это тестировать "юнит-тестами" — рискуете поседеть и всё равно ни черта не решить.

G>Такие случаи находятся за пределами компетенции юнит-тестов.

Как уже сказал, другие примитивные случаи не интересны. А судя по крикам студентов "Как, вы не пишете тесты?!?!" начинаешь опасаться за здоровье программирующих — уж не идолопоклонничеством ли они занимаются.

M>>Увлечение новым buzzword "TDD" — это ещё один манёвр известного "огонь и движение".

G>TDD, это не тесты, TDD — методика дизайна кода, причем вполне хорошо работающая при детальном дизайне.

Спускаться к лингвистическим дебрям — это да, признак умного и квалифицированного оппонента.

TDD — buzzword, хорошо работающее на примитивных задачах. Сложные задачи продумать до деталей нереально, а когда твердолобые таки начинают писать спеки раньше программы, получается тот самый "исторически сложившийся маразм" в архитектуре. Итеративность — вот ключ разработки. А в такой динамике извините, тесты отдыхают.
Re[5]: Применяете ли вы Unit Testing
От: matumba  
Дата: 18.06.09 09:26
Оценка:
Здравствуйте, jazzer, Вы писали:

J>И Unit Testing — это _только_ о тестировании этих самых блоков.


J>А то, что ты пытаешься притянуть практику тестирования блоков к тестированию системы в целом — это уже твои проблемы.


Капитан Очевидность, вам действительно интересен этот метод? Тогда могу только поздравить, все открытия у вас ещё впереди.

J>Потому что для тестирования системы в целом есть system tests, integration tests и т.д.


Пока я слышу только крики про "юнит-тесты" и их неоценимую помощь. Можете начать новую тему: "А вы пишете system tests?"


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


Как я уже откомментировал, подобный примитив не интересен. Здания — вот уровень, с которого можно что-то обсудить со знающими людьми.
Re[6]: Применяете ли вы Unit Testing
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 18.06.09 09:36
Оценка:
Здравствуйте, matumba, Вы писали:

M>>>Jazzer, у меня тоже есть для вас сюрприз! "маленькие, чётко оговоренные библиотечки" — это СТРОИТЕЛЬНЫЕ БЛОКИ, ничего не значащие сами по себе. Будучи же собранные в систему, они и составляют ту сложную хренотень, которую не так просто протестировать!

G>>Неправда. Каждый кирпичик тестируется отдельно...

M>Такой примитивный уровень не интересен.

Так это и есть unit-testing

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

Я ничего не вырезал.

M>>>Более того, метафора "кирпичей" хороша только в статьях — на деле, взаимодействие и проникновение кода куда сложнее.

G>>Это зачастую признак хренового кода.
M>Если ваши задачи решают квадратные уравнения, это ещё не повод думать, будто всё на свете так легко поддаётся декомпозиции.
Если что-то сложно поддается декомпозиции, то это не повод не заниматься декомпозицией.

M>>>Если модуль А делает работу, Б её обновляет, при этом модуль В синхронно работает с А и Б, обрабатывая результаты обоих, я бы не стал на вашем месте бросаться это тестировать "юнит-тестами" — рискуете поседеть и всё равно ни черта не решить.

G>>Такие случаи находятся за пределами компетенции юнит-тестов.

M>Как уже сказал, другие примитивные случаи не интересны. А судя по крикам студентов "Как, вы не пишете тесты?!?!" начинаешь опасаться за здоровье программирующих — уж не идолопоклонничеством ли они занимаются.

Тогда зачем ты тут пишешь? Тема о юнит-тестах, а тебе она не интересна и ты пишешь о чем-то своем.

M>>>Увлечение новым buzzword "TDD" — это ещё один манёвр известного "огонь и движение".

G>>TDD, это не тесты, TDD — методика дизайна кода, причем вполне хорошо работающая при детальном дизайне.
M>Спускаться к лингвистическим дебрям — это да, признак умного и квалифицированного оппонента.
Ты просто не понимаешь TDD.

M>TDD — buzzword, хорошо работающее на примитивных задачах. Сложные задачи продумать до деталей нереально, а когда твердолобые таки начинают писать спеки раньше программы, получается тот самый "исторически сложившийся маразм" в архитектуре. Итеративность — вот ключ разработки. А в такой динамике извините, тесты отдыхают.

Надо декомпозировать любую задачу до примитивных. если этого не делать тогда всегда найдутся проблемы в архитекторах, процессах, инструментах.
Re[6]: Применяете ли вы Unit Testing
От: jazzer Россия Skype: enerjazzer
Дата: 18.06.09 09:56
Оценка:
Здравствуйте, matumba, Вы писали:

M>Здравствуйте, jazzer, Вы писали:


J>>И Unit Testing — это _только_ о тестировании этих самых блоков.


J>>А то, что ты пытаешься притянуть практику тестирования блоков к тестированию системы в целом — это уже твои проблемы.


M>Капитан Очевидность, вам действительно интересен этот метод? Тогда могу только поздравить, все открытия у вас ещё впереди.


Какой именно метод? Твой (юнит-тесты для системы в целом) — неинтересен. Юнит-тестирование — интересно.

J>>Потому что для тестирования системы в целом есть system tests, integration tests и т.д.


M>Пока я слышу только крики про "юнит-тесты" и их неоценимую помощь. Можете начать новую тему: "А вы пишете system tests?"


Конечно же начни, кто-то мешает?

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


M>Как я уже откомментировал, подобный примитив не интересен. Здания — вот уровень, с которого можно что-то обсудить со знающими людьми.


Ради бога. Не лезьте тогда в тему, где обсуждается примитивный уровень.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[7]: Применяете ли вы Unit Testing
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.06.09 18:57
Оценка: 32 (2) +5 :))) :)
Здравствуйте, gandjustas, Вы писали:

G>Ты просто не понимаешь TDD.


Вот что меня всегда радовало, так это то, что все разговоры о TDD всегда заканчиваются этим "аргументом". Ну еще книжки отправляют читать, бывает.
... << RSDN@Home 1.2.0 alpha 4 rev. 1227 on Windows Vista 6.1.7100.0>>
AVK Blog
Re[3]: Применяете ли вы Unit Testing
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.06.09 18:57
Оценка:
Здравствуйте, FR, Вы писали:

FR>Можно попробовать по мотивам http://en.wikipedia.org/wiki/QuickCheck сформировать инварианты и гонять на случайных данных и множестве запусков.


И получится тест, который может выдавать разный результат в зависимости от фазы Луны.
... << RSDN@Home 1.2.0 alpha 4 rev. 1227 on Windows Vista 6.1.7100.0>>
AVK Blog
Re[4]: Применяете ли вы Unit Testing
От: Пацак Россия  
Дата: 18.06.09 19:40
Оценка:
Здравствуйте, matumba, Вы писали:

M>Jazzer, у меня тоже есть для вас сюрприз! "маленькие, чётко оговоренные библиотечки" — это СТРОИТЕЛЬНЫЕ БЛОКИ, ничего не значащие сами по себе. Будучи же собранные в систему, они и составляют ту сложную хренотень, которую не так просто протестировать!


"Та сложная хренотень", собранная из библиотечек, юнит-тестами не тестируется по определению. Для этого есть тесты интеграционные и функциональные. Вот только если "хренотень" изначально состоит из модулей, которые делают "фиг-знает-что" (потому что писались на коленке без юнит-тестов), то это уже, увы, не поможет.
Ку...
Re[4]: Применяете ли вы Unit Testing
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 19.06.09 04:56
Оценка: +1
AndrewVK,

FR>>Можно попробовать по мотивам http://en.wikipedia.org/wiki/QuickCheck сформировать инварианты и гонять на случайных данных и множестве запусков.


AVK>И получится тест, который может выдавать разный результат в зависимости от фазы Луны.


А почему? Для языков таких как Эрланг и Хаскелл сей тул зарекомендовал себя с самой лучшей сторны:
Multicore programming in Erlang
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[4]: Применяете ли вы Unit Testing
От: FR  
Дата: 19.06.09 05:57
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>И получится тест, который может выдавать разный результат в зависимости от фазы Луны.


Угу а статистическая физика — лженаука
Re[8]: Применяете ли вы Unit Testing
От: matumba  
Дата: 19.06.09 07:32
Оценка:
G>>Ты просто не понимаешь TDD.

AVK>Вот что меня всегда радовало, так это то, что все разговоры о TDD всегда заканчиваются этим "аргументом". Ну еще книжки отправляют читать, бывает.


Хорошо ещё не классическим "Ты просто не умеешь их готовить!".

Фактически, мои претензии к TDD состоят в их примитивности и РАЗДУТОЙ ШУМИХЕ вокруг них. Ни один _ля "профессионал" (коими кишит этот форум) никогда не делает оговорок об узкой применимости TDD — все только и умеют тыкать окружающих носом: "Как?! Вы не пишете тесты?!" (читай: ну вы и _удаки!) Да, возвышать себя унижая других — это древнее умение.
Кроме того, НИКТО не задаёт вопросов про системное тестирование, многопоточное, транзакционное.... Ухватились за то, на что мозгов хватило, и давай пальцы на форумах гнуть! Надоело — вот и написал.
Re[9]: Применяете ли вы Unit Testing
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.06.09 07:46
Оценка:
Здравствуйте, matumba, Вы писали:

G>>>Ты просто не понимаешь TDD.


AVK>>Вот что меня всегда радовало, так это то, что все разговоры о TDD всегда заканчиваются этим "аргументом". Ну еще книжки отправляют читать, бывает.


M> Хорошо ещё не классическим "Ты просто не умеешь их готовить!".

Не надоело бравировать своим непониманием?

M>Фактически, мои претензии к TDD состоят в их примитивности и РАЗДУТОЙ ШУМИХЕ вокруг них. Ни один _ля "профессионал" (коими кишит этот форум) никогда не делает оговорок об узкой применимости TDD — все только и умеют тыкать окружающих носом: "Как?! Вы не пишете тесты?!"

Да ты че?
А ты не думал что проверить корректность программы на динамическом языке можно только тестированием?
Не приуменьшай важность тестирования как такового. А также разберись что такое TDD.

M>(читай: ну вы и _удаки!)

Если хочешь — читай так.

M>Да, возвышать себя унижая других — это древнее умение.

Ты это отлично показываешь.

M>Кроме того, НИКТО не задаёт вопросов про системное тестирование, многопоточное, транзакционное.... Ухватились за то, на что мозгов хватило, и давай пальцы на форумах гнуть! Надоело — вот и написал.

А с чего ты взял что "многопоточное" важнее тестирования?
Re[10]: Применяете ли вы Unit Testing
От: matumba  
Дата: 19.06.09 08:02
Оценка:
M>> Хорошо ещё не классическим "Ты просто не умеешь их готовить!".
G>Не надоело бравировать своим непониманием?

Читаем ещё раз: M>>Да, возвышать себя унижая других — это древнее умение.

TDD очевиден как котлета, ЧТО вы в нём хотите обсудить? Флейма уже на 10 страниц, но вы упорно с видом мудреца впариваете 2х2=4.

G>А ты не думал что проверить корректность программы на динамическом языке можно только тестированием?


Ну вот, теперь ещё и динамика... А прежде чем вообще начинать темы про TDD, вы не удосужились очертить ЗАДАЧИ, которые вы им успешно решаете?
Пока я только слышу общие (а значит общеприменимые) и удивительные по настырности советы "пишите тесты!".
Кстати, "динамические языки" — не такая большая ниша, так что пусть решают свои проблемы сами, без рекламы TDD.

G>Не приуменьшай важность тестирования как такового. А также разберись что такое TDD.


См про "2х2".
Никто тесты не отрицает, но выпячивать их как панацею — встречается буквально в каждой первой статье о TDD.
Что забавно, Джоэл (в своих 12 признаках) даже словом не обмолвился о TDD. Есть повод задуматься.


M>>Кроме того, НИКТО не задаёт вопросов про системное тестирование, многопоточное, транзакционное.... Ухватились за то, на что мозгов хватило, и давай пальцы на форумах гнуть! Надоело — вот и написал.

G>А с чего ты взял что "многопоточное" важнее тестирования?

Это твои слова (туповатый метод спора, согласись?). Тестирование ЛЮБОГО вида важно, каждое в своей задаче. Но раз мы пишем весьма сложные задачи, то тесты а-ля "правильное вычисление квадратного корня" просто примитив по ср. с задачами самой системы.
Лучший тестер по прежнему остаётся человек.
Re[11]: Применяете ли вы Unit Testing
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.06.09 08:26
Оценка:
Здравствуйте, matumba, Вы писали:

M>>> Хорошо ещё не классическим "Ты просто не умеешь их готовить!".

G>>Не надоело бравировать своим непониманием?

M>Читаем ещё раз: M>>Да, возвышать себя унижая других — это древнее умение.

M>TDD очевиден как котлета, ЧТО вы в нём хотите обсудить? Флейма уже на 10 страниц, но вы упорно с видом мудреца впариваете 2х2=4.
Я уже все в этой теме обсудил, и это не я с видом мудреца доказываю что тесты неважны.

G>>А ты не думал что проверить корректность программы на динамическом языке можно только тестированием?


M>Ну вот, теперь ещё и динамика... А прежде чем вообще начинать темы про TDD, вы не удосужились очертить ЗАДАЧИ, которые вы им успешно решаете?

Задача для тестов одна — проверка корректности кода.
Есть случая когда тестирование излишне — когда коррекность проверяется статически — с помощью системы типов или DbC.
Есть случаи, когда проверка корректности программы недетерминирована — такое возникает с асинхроных системах, в таком случае тесты неочень эффективны.

M>Пока я только слышу общие (а значит общеприменимые) и удивительные по настырности советы "пишите тесты!".

Потому что написание тестов, особенно до написания кода, помогает лучше понять как система должна работать.

M>Кстати, "динамические языки" — не такая большая ниша, так что пусть решают свои проблемы сами, без рекламы TDD.

Чем тебе TDD не угодил?

G>>Не приуменьшай важность тестирования как такового. А также разберись что такое TDD.

M>Никто тесты не отрицает, но выпячивать их как панацею — встречается буквально в каждой первой статье о TDD.
Ну так не читай такой булшит, тебя же никто не заставляет.

M>Что забавно, Джоэл (в своих 12 признаках) даже словом не обмолвился о TDD. Есть повод задуматься.


А куча народу пишет только о TDD и ниче.


M>Лучший тестер по прежнему остаётся человек.

С чего бы?
Человек ошибается, а компьютер — нет.
unit-тесты и интеграционное тестирование, это как раз работа с которой компьютер справляется гораздо лучше человека.
Re[5]: Применяете ли вы Unit Testing
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.06.09 08:30
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, AndrewVK, Вы писали:


AVK>>И получится тест, который может выдавать разный результат в зависимости от фазы Луны.


FR>Угу а статистическая физика — лженаука


Статистической физика называется не потому что её законы выведены из статистических исследований, а потому что статистическое поведение системы почти всегда совпадает с результатами теоретических исследований.
Re[6]: Применяете ли вы Unit Testing
От: FR  
Дата: 19.06.09 08:35
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Статистической физика называется не потому что её законы выведены из статистических исследований, а потому что статистическое поведение системы почти всегда совпадает с результатами теоретических исследований.


Угу случайно так берет и совпадает
Re[12]: Применяете ли вы Unit Testing
От: thesz Россия http://thesz.livejournal.com
Дата: 19.06.09 12:13
Оценка:
M>>Лучший тестер по прежнему остаётся человек.
G>С чего бы?
G>Человек ошибается, а компьютер — нет.
G>unit-тесты и интеграционное тестирование, это как раз работа с которой компьютер справляется гораздо лучше человека.

Это в том случае, когда юнит-тесты и тесты интеграции представлены в виде проверяемых компьютером контрактов.

Читай — выражены в виде типов.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[10]: Применяете ли вы Unit Testing
От: thesz Россия http://thesz.livejournal.com
Дата: 19.06.09 12:14
Оценка: +1 :)
G>Не приуменьшай важность тестирования как такового. А также разберись что такое TDD.

Type Driven Design?
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[13]: Применяете ли вы Unit Testing
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 19.06.09 13:05
Оценка:
Здравствуйте, thesz, Вы писали:

M>>>Лучший тестер по прежнему остаётся человек.

G>>С чего бы?
G>>Человек ошибается, а компьютер — нет.
G>>unit-тесты и интеграционное тестирование, это как раз работа с которой компьютер справляется гораздо лучше человека.

T>Это в том случае, когда юнит-тесты и тесты интеграции представлены в виде проверяемых компьютером контрактов.

Я про это чуть выше написал.

С задачей проверки контрактов компьютер тоже справляется лучше.

T>Читай — выражены в виде типов.

Это не единственный способ выражения контрактов.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.