Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 28.04.20 21:09
Оценка: :)))
Здравствуйте, Erop, Вы писали:


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


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

E>Тут сомнений нет. В раю, наверное, так все и делают


Кто-то надеется на рай в загробной жизни. А кто-то пытается свою жизнь в этом бренном мире сделать максимально комфортной.

06.06.20 11:31: Ветка выделена из темы Глубина кроличьей норы или собеседование по C++ в компании PVS-Studio
Автор: jul_nevermind
Дата: 12.04.20
— Берсерк
www.blinnov.com
Re: Отладчик vs юнит-тесты
От: Sharov Россия  
Дата: 28.04.20 22:04
Оценка:
Здравствуйте, landerhigh, Вы писали:


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


Неужели сам Кен Томпсон? Тогда к чему это спартанство?
Кодом людям нужно помогать!
Re: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 28.04.20 22:54
Оценка:
Здравствуйте, landerhigh, Вы писали:

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

Забавная заморочка.
А смысл себя в инструментарии ограничивать?
Разработка в себя включает тестовые прогоны и отладку. А в этом без дебаггера конечно можно, но придётся надевать лыжи и залазить в них в гамак.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 28.04.20 23:25
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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

CC>Забавная заморочка.

Ага.

CC>А смысл себя в инструментарии ограничивать?


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

CC>Разработка в себя включает тестовые прогоны и отладку. А в этом без дебаггера конечно можно, но придётся надевать лыжи и залазить в них в гамак.


Про юнит-тесты слышал?
www.blinnov.com
Re[3]: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 28.04.20 23:45
Оценка: +1
Здравствуйте, landerhigh, Вы писали:

CC>>А смысл себя в инструментарии ограничивать?

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

CC>>Разработка в себя включает тестовые прогоны и отладку. А в этом без дебаггера конечно можно, но придётся надевать лыжи и залазить в них в гамак.

L>Про юнит-тесты слышал?
Ага, в сферическом вакууме.
Юнит тесты банально далеко не везде применимы.
У меня к примеру дохрена всего работает в связке с другими компонентами, где определённая цепочка событий с определёнными таймингами играет важную роль в формировании состояния всей системы в котором воспроизводится баг. И вот тогда breakpoint или coredump в нужном месте играет очень важную роль.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[4]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 29.04.20 10:29
Оценка:
Здравствуйте, CreatorCray, Вы писали:

L>>Есть инструмент, который помогает. Отладчик при разработке в их число не входит.

CC>Ещё как входит, потому что позволяет многие баги отловить за один раз, без нудного инструментирования

Ага. А многие баги не заметить вообще.
Нудное инструментирование к юнит-тестам вообще никак не относится.

CC>>>Разработка в себя включает тестовые прогоны и отладку. А в этом без дебаггера конечно можно, но придётся надевать лыжи и залазить в них в гамак.

L>>Про юнит-тесты слышал?
CC>Ага, в сферическом вакууме.
CC>Юнит тесты банально далеко не везде применимы.

Число случаев, когда их использовать объективно непрактично, можно пересчитать по пальцам одной руки. Все остальное — вопрос исключительно лени, ну или воображения.

CC>У меня к примеру дохрена всего работает в связке с другими компонентами,


Это у всех сейчас так.

CC>где определённая цепочка событий с определёнными таймингами играет важную роль в формировании состояния всей системы в котором воспроизводится баг.


И это тоже.

CC>И вот тогда breakpoint или coredump в нужном месте играет очень важную роль.


А отладчик совершенно не влияет на тайминги, ага. Особенно забавно, когда баг воспроизводится исключительно в оптимизированной сборке (кто-то там что-то говорил про стоя и гамаке?)
www.blinnov.com
Re[5]: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 29.04.20 16:45
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Ага. А многие баги не заметить вообще.

L>Нудное инструментирование к юнит-тестам вообще никак не относится.

Отвертка нужна чтобы отвинчивать завинченное а не ковырять в ухе.
Если дебаггер использовать вместо тестов — да, будет фигня.
Если написать юнит тесты и думать что багов не будет — будет тоже фигня.


CC>>Юнит тесты банально далеко не везде применимы.

L>Число случаев, когда их использовать объективно непрактично, можно пересчитать по пальцам одной руки.
Говори за свою колокольню.

CC>>И вот тогда breakpoint или coredump в нужном месте играет очень важную роль.

L>А отладчик совершенно не влияет на тайминги, ага.
Правильный отладчик сидит тихо и не лезет пока его не попросят.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[6]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 29.04.20 20:27
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Отвертка нужна чтобы отвинчивать завинченное а не ковырять в ухе.

CC>Если дебаггер использовать вместо тестов — да, будет фигня.
CC>Если написать юнит тесты и думать что багов не будет — будет тоже фигня.

Какие интересные тараканы. Кто-то заявлял, что с тестами багов не будет? (На самом деле это почти достижимо, но не всем дано).
Юнит-тестами можно сделать все то, что ты делаешь отладчиком. Только в разы быстрее и на порядки эффективнее. К вопросу о "стоя и в гамаке".

CC>

CC>>>Юнит тесты банально далеко не везде применимы.
L>>Число случаев, когда их использовать объективно непрактично, можно пересчитать по пальцам одной руки.
CC>Говори за свою колокольню.

Колокольня везде одна.

CC>>>И вот тогда breakpoint или coredump в нужном месте играет очень важную роль.

L>>А отладчик совершенно не влияет на тайминги, ага.
CC>Правильный отладчик сидит тихо и не лезет пока его не попросят.

Ну, закат солнца вручную.
www.blinnov.com
Re[7]: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 29.04.20 20:49
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Какие интересные тараканы. Кто-то заявлял, что с тестами багов не будет?

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

L>Юнит-тестами можно сделать все то, что ты делаешь отладчиком.

Нет.

L>Колокольня везде одна.

Что за чушь?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[8]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 29.04.20 21:17
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


L>>Какие интересные тараканы. Кто-то заявлял, что с тестами багов не будет?

CC>Ну ты ж их продвигаешь как серебряную пулю и утверждаешь что отладчик не нужен.

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

L>>Юнит-тестами можно сделать все то, что ты делаешь отладчиком.

CC>Нет.

Все то, а также то, что отладчиком в жизни не проверить.

L>>Колокольня везде одна.

CC>Что за чушь?

Ну так разработчиков чего-то уникального в своем роде тут отродясь не водилось.
www.blinnov.com
Re[9]: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 29.04.20 22:50
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Я не говорю, что он не нужен.

L>я считаю, что использование программистом отладчика в процессе разработки недопустимо

В чём отличие "недопустимо" от "не нужен"?

L>Я отмечаю, что в процессе разработки использование его контпродуктивно.

Так недопустимо или контрпродуктивно?
И что ты тогда считаешь процессом разработки?
Когда заканчивается разработка и начинается разрешённое использование отладчика?

L>>>Юнит-тестами можно сделать все то, что ты делаешь отладчиком.

CC>>Нет.
L>Все то, а также то, что отладчиком в жизни не проверить.
То, для чего надо отладчик юниттестами в реальной жизни ты не проверишь.
Есессна можно микроскопом гвозди забивать, но за этим не ко мне.
Отладчик надо для вычёсывания кода от затесавшихся туда блох. В процессе разработки.

L>>>Колокольня везде одна.

CC>>Что за чушь?
L>Ну так разработчиков чего-то уникального в своем роде тут отродясь не водилось.

А не надо уникального. Вид с колокольни тех кто клепает Web Frontend UX сильно отличается от вида с колокольни тех кто пилит EFI драйвера.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[10]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 30.04.20 07:30
Оценка:
Здравствуйте, CreatorCray, Вы писали:

L>>Я отмечаю, что в процессе разработки использование его контпродуктивно.

CC>Так недопустимо или контрпродуктивно?

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

CC>И что ты тогда считаешь процессом разработки?

CC>Когда заканчивается разработка и начинается разрешённое использование отладчика?

L>>>>Юнит-тестами можно сделать все то, что ты делаешь отладчиком.

CC>>>Нет.
L>>Все то, а также то, что отладчиком в жизни не проверить.
CC>То, для чего надо отладчик юниттестами в реальной жизни ты не проверишь.

Ну, для разбора коры юнит-тесты и правда неприменимы.

CC>Есессна можно микроскопом гвозди забивать, но за этим не ко мне.


Вообще-то микроскоп в данном случае — это отладчик

CC>Отладчик надо для вычёсывания кода от затесавшихся туда блох. В процессе разработки.


А юнит-тесты нужны, чтобы эти блохи туда даже не попали. В процессе разработки.
Вот и договорились.
www.blinnov.com
Re[11]: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 30.04.20 07:47
Оценка: +4
Здравствуйте, landerhigh, Вы писали:

L>То, что ты там второй час вручную в отладчике глазками проверяешь

Шта? А, ясно, вы его просто готовить не умеете.
В отладчике не проверяют, в отладчике отлаживают.

L>Ну, для разбора коры юнит-тесты и правда неприменимы.

Кора обычно если проблема в кернеле, который порой не так то просто полноценно остановить

CC>>Есессна можно микроскопом гвозди забивать, но за этим не ко мне.

L>Вообще-то микроскоп в данном случае — это отладчик
Именно. Не надо его использовать не по назначению.

CC>>Отладчик надо для вычёсывания кода от затесавшихся туда блох. В процессе разработки.

L>А юнит-тесты нужны, чтобы эти блохи туда даже не попали.
В процессе разработки блохи попадают неминуемо.
Один из лучших способов их найти — отладчик.
Но это всё ещё во время процесса разработки.

Возвращаясь к тому, с чего всё началось:

L>я считаю, что использование программистом отладчика в процессе разработки недопустимо


Я считаю это контрпродуктивной заморочкой. Применение отладчика в процессе разработки для выяснения как возникает тот либо иной баг крайне полезно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[12]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 30.04.20 09:06
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

L>>То, что ты там второй час вручную в отладчике глазками проверяешь

CC>Шта? А, ясно, вы его просто готовить не умеете.

Умеем. Поэтому и не используем.

CC>В отладчике не проверяют, в отладчике отлаживают.


Тебе нужно отлаживать собственный свеженаписанный код? Подумай, прежде чем отвечать

L>>Ну, для разбора коры юнит-тесты и правда неприменимы.

CC>Кора обычно если проблема в кернеле, который порой не так то просто полноценно остановить

Неважно.

CC>>>Есессна можно микроскопом гвозди забивать, но за этим не ко мне.

L>>Вообще-то микроскоп в данном случае — это отладчик
CC>Именно. Не надо его использовать не по назначению.

Вот именно.

CC>>>Отладчик надо для вычёсывания кода от затесавшихся туда блох. В процессе разработки.

L>>А юнит-тесты нужны, чтобы эти блохи туда даже не попали.
CC>В процессе разработки блохи попадают неминуемо.
CC>Один из лучших способов их найти — отладчик.
CC>Но это всё ещё во время процесса разработки.

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

CC>Я считаю это контрпродуктивной заморочкой. Применение отладчика в процессе разработки для выяснения как возникает тот либо иной баг крайне полезно.


Я считаю, что если "разработчику" нужен отладчик, чтобы понять, как возникает баг в его собственном коде, то ему следует поискать работу в другой отрасли.
www.blinnov.com
Re[13]: Отладчик vs юнит-тесты
От: CreatorCray  
Дата: 30.04.20 09:34
Оценка: +5
Здравствуйте, landerhigh, Вы писали:

L>Умеем. Поэтому и не используем.

Да вот что то в глаза не бросается.

CC>>В отладчике не проверяют, в отладчике отлаживают.

L>Тебе нужно отлаживать собственный свеженаписанный код? Подумай, прежде чем отвечать
Загни пальцы. Баги были есть и будут везде. И чем сложнее хреновина тем заковыристее в ней баги, причём часто crossfunctional, в стиле мы тупо красили дом Болконских и после этого у Наташи при прогулке с Пьером падают трусы.

CC>>>>Есессна можно микроскопом гвозди забивать, но за этим не ко мне.

L>>>Вообще-то микроскоп в данном случае — это отладчик
CC>>Именно. Не надо его использовать не по назначению.
L>Вот именно.
Т.е. ты со мной согласен?

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

Возможно потому что пишешь что то изолированное, сферическое и в вакууме. Ничего этот код чужого не использует и его никто чужой не использует. Всё вокруг только своё.

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

L>Я считаю, что если "разработчику" нужен отладчик, чтобы понять, как возникает баг в его собственном коде, то ему следует поискать работу в другой отрасли.

Слово "собственный" надо вычеркнуть. Мы не в вакууме код пишем, он взаимодействует с другим кодом, в том числе и древним.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[14]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 30.04.20 11:42
Оценка: +1
Здравствуйте, CreatorCray, Вы писали:

CC>Загни пальцы. Баги были есть и будут везде.

CC>И чем сложнее хреновина тем заковыристее в ней баги,

Задача инженера — раздробить сложную хреновину на простые части. Как раз чтобы всю жизнь заковыристые баги не ловить.

CC>причём часто crossfunctional, в стиле мы тупо красили дом Болконских и после этого у Наташи при прогулке с Пьером падают трусы.


Причем, эти crossfunctional баги вызваны именно этим самым "думать некогда, копать надо, а мы в отладчике уже прогнали и все работает". Иными словами, они вызваны ленивыми (или самонадеянными) типа погромиздами.
Crossfunctional баги в большинстве своем есть следствие паразитных неявных связей.
И вот тут есть такая небольшая интересность — код с подобными связями не поддается юнит-тестированию либо вообще никак, либо через такую задницу, что разработчики, которые пробовали писать юнит-тесты для такого кода, потом из поколения в поколение рассказывают страшилки.
Хорошее покрытие кода юнит-тестами означает, что в коде нет подобных связей или они выкорчеваны до минимума. Ну то есть трусы Наташи никак не связаны с цветом дома Болконских.

CC>>>>>Есессна можно микроскопом гвозди забивать, но за этим не ко мне.

L>>>>Вообще-то микроскоп в данном случае — это отладчик
CC>>>Именно. Не надо его использовать не по назначению.
L>>Вот именно.
CC>Т.е. ты со мной согласен?

Что отладчик — это микроскоп и ты им забиваешь гвозди? Я с самого начала об этом говорю.

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


И что это меняет?

L>>Я считаю, что если "разработчику" нужен отладчик, чтобы понять, как возникает баг в его собственном коде, то ему следует поискать работу в другой отрасли.

CC>Слово "собственный" надо вычеркнуть. Мы не в вакууме код пишем, он взаимодействует с другим кодом, в том числе и древним.

Отлаживаешь-то ты свой код, а не код сторонней библиотки.
www.blinnov.com
Re[13]: Отладчик vs юнит-тесты
От: Sharov Россия  
Дата: 30.04.20 13:24
Оценка:
Здравствуйте, landerhigh, Вы писали:


L>Странно. А я почему-то всегда считал, что если ты пишешь код, то ты обязан иметь полное или практически полное представление о возможных путях проникновения блох в твой код и вариантах некорректного поведения твоего кода. Иначе ты не инженер, а так. Мимокрокодил.


Вы хоть раз многопоточное приложение писали? Юнит-тесты шибко помогали покрыть все варианты взаимодействия потоков?
Кодом людям нужно помогать!
Re[14]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 30.04.20 14:02
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Вы хоть раз многопоточное приложение писали?


Ну, приходилось.

S>Юнит-тесты шибко помогали покрыть все варианты взаимодействия потоков?


И сколько у вас вариантов взаимодействия потоков, позвольте спросить?
www.blinnov.com
Re[15]: Отладчик vs юнит-тесты
От: Sharov Россия  
Дата: 30.04.20 14:19
Оценка: +1
Здравствуйте, landerhigh, Вы писали:

S>>Вы хоть раз многопоточное приложение писали?

L>Ну, приходилось.

К отладчику не прибегали?
Без отладчика тут даже баг не воспроизведешь...

S>>Юнит-тесты шибко помогали покрыть все варианты взаимодействия потоков?

L>И сколько у вас вариантов взаимодействия потоков, позвольте спросить?

Учитывая недетерминизм присущий многозадачности, то вариантов взаимодействия крайне много.
Кодом людям нужно помогать!
Re[16]: Отладчик vs юнит-тесты
От: landerhigh Пират  
Дата: 30.04.20 14:33
Оценка: :)
Здравствуйте, Sharov, Вы писали:

L>>Ну, приходилось.

S>К отладчику не прибегали?

Нет. Зачем?

S>Без отладчика тут даже баг не воспроизведешь...


Какой такой баг, присущий исключительно многопоточной программе, можно воспроизвести исключительно отладчиком? И как именно, позвольте полюбопытствовать?

S>>>Юнит-тесты шибко помогали покрыть все варианты взаимодействия потоков?

L>>И сколько у вас вариантов взаимодействия потоков, позвольте спросить?
S>Учитывая недетерминизм присущий многозадачности, то вариантов взаимодействия крайне много.

Недетерминированность состояния не имеет прямого отношения к количеству вариантов взаимодействия.
www.blinnov.com
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.