LINUX.ORG.RU

TDD для одного разраба

 , ,


1

2

Неоднозначно с ними все.

согласен

Данной тематике посвящено довольно много публикаций.

каких? кроме «ТДД - это остой» и «ТДД - это круто»?

Самый плюс в том, что хорошо, когда тесты есть.

ППКС. А в чем минусы наличия тестов? Их нужно поддерживать?

Минус в том, что на них иногда уходит неоправданно много трудо-затрат

а если тесты выполняются во время написания кода?

и не все ошибки находятся вкратце.

пример

Не всегда удается построить эффективные тесты для реальных систем.

пример

Но когда нечего делать или не знаешь что делать или довольно большой уровень сложности - полезно.

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

пример!

Для одного полезно почти так-же как и для при совместной разработке

ППКС



Последнее исправление: EnterpriseMobility (всего исправлений: 1)
Ответ на: комментарий от EnterpriseMobility

Внезапно, тесты нужны, чтобы проверить, правильно ли работает написанный тобой код. А если не знаешь, как писать код - сиди и думай, пока не придумаешь.

tailgunner ★★★★★
()
Ответ на: комментарий от EnterpriseMobility

Внезапно, тесты нужны, чтобы проверить, правильно ли работает написанный тобой код. А если не знаешь, как писать код - сиди и думай, пока не придумаешь.

стоп, но ведь сначало нужно писать тест, а потом код. в TDD.

А нужен тест для того же. Колдунство.

tailgunner ★★★★★
()
Ответ на: комментарий от Legioner

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

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

Miguel ★★★★★
()

Какую ценность tdd привносит для конечного пользователя - это основной критерий.

Например: мантейнеры/разработчики вносят изменения в пакеты (ebuild-ы) или там в расширения, библиотеки - словом модифицируются важные зависимости в итоге.

Соответственно, как не трудно догадаться все восхитительно ломается ;)

Вот тут-то вспоминается tdd ...

В первом случае tdd вообще нет ... Во втором выясняется что есть, но толку ноль ...

Лишь иногда посещает мысль - если бы после изменения прогнали бы набор тестов, может быть что-то срефлексировалось у делальщиков ...

Вывод номер один: как минимум не дурно, когда есть покрытие и его обеспечение ничего не стоит.

К сведению: даже например systemd, облепленный тестами весь такой, а вот толку ... может и не быть.

anonymous
()
Ответ на: комментарий от EnterpriseMobility

Спринты — это тот ещё звиздец, но, всё-таки, не настолько.

Miguel ★★★★★
()

Помимо очевидных трудозатрат на покрытие тестами всего, TDD дает «иллюзию защищенности», что выливается в более небрежное кодирование («тесты поймают все регрессии!»), что выливается в реальные ошибки, которые должны поймать QA-сотрудники. А если QA уже существует, то нехрен их дублировать.

Автоматизированное тестирование итогового продукта на порядки эффективнее мегабайтов бесполезных юнит-тестов, 95% которых проверяют, что «2+2==4».

kawaii_neko ★★★★
()
Ответ на: комментарий от EnterpriseMobility

Никто здесь не отрицал необходимость тестов.

Miguel ★★★★★
()
Ответ на: комментарий от kawaii_neko

Любая методология - это не панацея от головотяпства разработчиков. Это способ снизить трудозатраты для ГРАМОТНЫХ разработчиков, которые применяют инструмент корректно.

dizza ★★★★★
()
Последнее исправление: dizza (всего исправлений: 1)
Ответ на: комментарий от dizza

т.е. важнее не TDD всякие, а способы корректного применения инструментов. Точнее, знания, умения, навыки и корректные их аппликации. Короче, не TDD, а [K(now)]H(ow)DD ;)

anonymous
()
Ответ на: комментарий от kawaii_neko

Автоматизированное тестирование итогового продукта на порядки эффективнее мегабайтов бесполезных юнит-тестов, 95% которых проверяют, что «2+2==4».

какие ваши доказательства? и да, расскажи как автоматизированное тестирование итогового продукта упрощает рефакторинг и расширение функциональности, а я послушаю

vostrik ★★★☆
()
Последнее исправление: vostrik (всего исправлений: 1)
Ответ на: комментарий от vostrik

и да, расскажи как автоматизированное тестирование итогового продукта упрощает рефакторинг и расширение функциональности, а я послушаю

Во-первых, регрессии - хер ты юнит тестами посчитаешь. Поведенческое тестирование - то что все юнит тесты зеленые не означает, что все в месте они будут работать. И еще оведрдохрена моментов. Про UI-тестирование вообще молчу.

ioway
()
Ответ на: комментарий от ioway

Во-первых, регрессии - хер ты юнит тестами посчитаешь.

если у тебя есть регрессионный сьют - абсолютно ортогонально, из каких тестов он состоит, уровень тестирования тут не влияет вообще ни на что

Поведенческое тестирование - то что все юнит тесты зеленые не означает, что все в месте они будут работать

если писать их абы как, не покрывая тестами интерфейсы и не понимая, с какими модулями работает модуль under test - не означает. точно так же, как и херово написанный интеграционный тест не показывает ничего.

И еще оведрдохрена моментов

например скорость разрастания сьюта при расширении функционала, неочевидные изменения доменов при рефакторинге, которые невозможно отловить без юнит-тестов и прочие милые вещи, которые, правда, говорят не в пользу интеграционных тестов

Про UI-тестирование вообще молчу

это ты правильно в разговоре о автоматизированной интеграции молчишь о UI. не упоминал бы вообще - за умного сошел бы

vostrik ★★★☆
()
Последнее исправление: vostrik (всего исправлений: 1)
Ответ на: комментарий от vostrik

если писать их абы как, не покрывая тестами интерфейсы и не понимая, с какими модулями работает модуль under test - не означает. точно так же, как и херово написанный интеграционный тест не показывает ничего.

Ну наконец-то. Хоть пришли к выводу, что все что зависит от человека по факту - ненадежно. И без разницы когда писать тесты до или после кода - результат зависит от автора кода и ничего с этим не сделать.

не упоминал бы вообще - за умного сошел бы

Ой-ли? Если UI присутствует и жизненный цикл сложнее чем «Если видно значит работает, если не видно значит не работает» - без тестирования представления в получится говно.

ioway
()
Ответ на: комментарий от vostrik

какие ваши доказательства?

Не намерен ничего доказать любителям assert(2 + 2 == 4)

расскажи как автоматизированное тестирование итогового продукта упрощает рефакторинг и расширение функциональности

Если тебе это не очевидно, то мне очевидно, что с тобой не о чем дальше говорить.

kawaii_neko ★★★★
()
Ответ на: комментарий от ioway

Ну наконец-то. Хоть пришли к выводу, что все что зависит от человека по факту - ненадежно. И без разницы когда писать тесты до или после кода - результат зависит от автора кода и ничего с этим не сделать.

перестань путать TestDriven_Development_ и QA. написание тестов в TDD - способ проектирования и документирования кода. написание тестов в QA - способ найти несоответствие требованиям. ни в одном из вариантов интеграционные тесты не имеют сколько-нибудь значимых преимуществ перед юнит-тестами.

Ой-ли? Если UI присутствует и жизненный цикл сложнее чем «Если видно значит работает, если не видно значит не работает» - без тестирования представления в получится говно.

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

vostrik ★★★☆
()
Ответ на: комментарий от dizza

Нет хороших и плохих. Есть примененные в нужном месте и в нужном виде и нет.

Те, для которых программирование — не «нужное место», называются «плохими».

Miguel ★★★★★
()
Ответ на: комментарий от vostrik

перестань путать TestDriven_Development_ и QA

Перестань путать автоматическое тестирование UI и QA, это капец какие разные вещи.

ioway
()
Ответ на: комментарий от ioway

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

vostrik ★★★☆
()
Ответ на: комментарий от vostrik

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

Похапешному хамлу вроде тебя? Да ты половины не поймешь.

ioway
()
Ответ на: комментарий от ioway

Похапешному хамлу

похапешному хамлу можешь не возражать, похапешное хамло с тобой не спорит. а вот мне можешь возразить

ты половины не поймешь

а ты попытайся. за 7 лет в профессии у меня как-то не было проблемы с пониманием QA процессов и терминологии

vostrik ★★★☆
()
Ответ на: комментарий от vostrik

за 7 лет в профессии у меня как-то не было проблемы

Как это не было. Это я стенке писал? Ньюфажина.

Если UI присутствует и жизненный цикл сложнее чем «Если видно значит работает, если не видно значит не работает» - без тестирования представления получится говно.

ioway
()
Ответ на: комментарий от ioway

Это ты хер знает зачем и к чему написал. расскажи лучше про

автоматическое тестирование UI и QA, это капец какие разные вещи

vostrik ★★★☆
()
Ответ на: комментарий от vostrik

Это ты хер знает зачем и к чему написал. расскажи лучше про

Досвидания.

автоматическое тестирование UI и QA, это капец какие разные вещи

Автоматическое тестирование UI - одна из разновидностей юнит-тестов (те что для V в MVC и для P в MVP) читай техническая проверка реализации. QA - это завершающий этап релиз-цикла, проверяющий соответствие логики проекта и списку фич-реквестов и, внезапно, включающий в себя полный комплекс мер от автоматическоко тестирования до ручного.

Ты тут уже второй, который думает что UI - это <какой-то>эмээль и значит QA.

ioway
()
Ответ на: комментарий от ioway

Досвидания

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

Автоматическое тестирование UI - одна из разновидностей юнит-тестов

если это автоматизированные юнит-тесты на UI. или одна из разновидностей интеграционных тестов, если это интеграционные тесты UI. или одна из разновидностей акцептанс тестов, если это акцептанс тесты UI

читай [техническая] проверка реализации

как и любое [автоматизированное] тестирование. внезапно, да?

QA - это завершающий этап релиз-цикла

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

проверяющий соответствие логики проекта

чему?

списку фич-реквестов

список фич-реквестов не волнует ни QA ни QC. вообще. совсем. он волнует только PM. QA/QC волнет список требований.

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

внезапно, из этой фразы следует что «автоматическое тестирование UI - часть QA». QA ⊃ QC; QC ⊃ Test automation; Test automation ⊃ UI test automation. сфейспалмируй теперь от своего же высера.

Ты тут уже второй, который думает что UI - это <какой-то>эмээль и значит QA.

а ты один из многотысячного стада баранов, которое думает что задача QA - это запускать тесты и что для QA/QC имеет значение, как именно реализован UI системы - в виде API или HTML. Не говоря уже о том, что твой первоначальный высер про автоматические интеграционные тесты имеет смысл только в разговоре о эмэлях и впфах

vostrik ★★★☆
()
Последнее исправление: vostrik (всего исправлений: 1)
Ответ на: комментарий от vostrik

как и любое [автоматизированное] тестирование. внезапно, да?

Внезапно нет.

убейся

обратно нет

список фич-реквестов не волнует ни QA ни QC.

Волнует. Это первый критерий качества реализации.

автоматическое тестирование UI - часть QA

Найди в оригинальной фразе «включающий в себя полный комплекс мер от автоматическоко тестирования до ручного» аббревиатуру UI. Нету? А с какого перепугу ты его сюда приплел?

никаким нахер образом не завершающая, а охватывающая весь цикл

И проектирования? И реализации? И качество чего она проверяет? Воздуха? Обещаний?

а ты один из многотысячного стада баранов, которое думает что задача QA - это запускать тесты и что для QA/QC имеет значение, как именно реализован UI системы

Бухой что-ли? Твои слова «автоматическое тестирование UI - часть QA»? Твои. С этого все и началось. Вобщем иди трезвей, пьянь.

ioway
()
Ответ на: комментарий от Miguel

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

dizza ★★★★★
()
Ответ на: комментарий от dizza

Нет, работают именно методологии, т.е. без них хуже, чем с ними.

Методолгия работает одна.

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

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

Miguel ★★★★★
()
Ответ на: комментарий от Quickern

давно. уже крутится в продакшене. Клиент за дерево заплатил некислое такое бабло

EnterpriseMobility
() автор топика
Ответ на: комментарий от Quickern

в следующий раз нужно мне не искать на гитхабе , а реализовывать самому. Через TDD.

EnterpriseMobility
() автор топика
Ответ на: комментарий от Miguel

Нет, работают именно методологии, т.е. без них хуже, чем с ними.

Методолгия работает одна.

Назови это методологию.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.