Re[4]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 29.06.21 15:43
Оценка: 5 (1) +4
Здравствуйте, mrTwister, Вы писали:

L>>Высококвалифицированный хирург поможет плохому танцору!

T>Не понял, поясни мысль. Ты хочешь сказать, что рефакторинг не инвалидирует юнит-тесты?

Рефакторинг в идеале есть изменение структуры кода без изменения функционала. По определению, рефакторинг не должен инвалидировать юнит-тесты, так как они тестируют как раз функционал.

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

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

Случаи, когда юнит-тесты написаны профессиональным копателями от забора до обеда под руководством консультантов по code coverage, мне рассматривать не интересно.
www.blinnov.com
Re: Подделка юнит тестов, пригорело
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.06.21 08:03
Оценка: +1 -3
Здравствуйте, Тёмчик, Вы писали:

Тё>Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.

Юнит тесты не нужны.

1) Объем кода юнит-тестов при полном покрытии превышает объем кода
2) Юнит-тесты мешают рефакторингу, изменение структуры кода часто сильно рушит юнит-тесты.
3) Очень часто встречаются юнит-тесты, которые фактически ничего не проверяют.
Re[2]: Подделка юнит тестов, пригорело
От: viellsky  
Дата: 22.06.21 20:24
Оценка: +2
Здравствуйте, blacktea, Вы писали:

B>А почему это не было поймано на этапе code review?

А с чего должны быть такие гарантии? А за коде-ревьювером нужен еще кто-то, кто оценит его работу?

Здесь первичным должно быть четкое распределение личной ответственности и последствия за грубые нарушения в работе.
Тот, кто пишет тесты — должен понимать, что его работа имеет четкие критерии качества. А именно — если в следующий этап тестирования или еще хуже в продакшн пролезет ошибка, которую закрывали этим тестом, да еще пролезла в результате подделки юнит-теста — то будут финансовые последствия (лишение премии например, а повторное — до увольнения).
Это основной каркас в обеспечении качества. А коде-ревью — такое специфичное субъективное действо...
Re[3]: Подделка юнит тестов, пригорело
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.06.21 08:48
Оценка: +2
Здравствуйте, Ватакуси, Вы писали:

G>>1) Объем кода юнит-тестов при полном покрытии превышает объем кода

G>>2) Юнит-тесты мешают рефакторингу, изменение структуры кода часто сильно рушит юнит-тесты.
G>>3) Очень часто встречаются юнит-тесты, которые фактически ничего не проверяют.

В>Это всё так. Но какая альтернатива?


Интеграционные, функциональные тесты. Design by contract, типизация, статичские верификаторы.

По моему опыту статическая ферификация на предмет самых популярных ошибок дает самый лучший результат.
Re[2]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 28.06.21 09:34
Оценка: +2
Здравствуйте, gandjustas, Вы писали:

G>2) Юнит-тесты мешают рефакторингу, изменение структуры кода часто сильно рушит юнит-тесты.


Высококвалифицированный хирург поможет плохому танцору!

G>3) Очень часто встречаются юнит-тесты, которые фактически ничего не проверяют.


Да, нередко встречаются полицейские, которые вместо ловли преступников непонятно чем занимаются.
www.blinnov.com
Re[6]: Подделка юнит тестов, пригорело
От: Sharov Россия  
Дата: 30.06.21 10:47
Оценка: +2
Здравствуйте, mrTwister, Вы писали:

T>Нет, рефакторинг — это перераспределение ответственности, в рамках которой удаляются и видоизменяются абстракции (юниты). Удаление и видоизменение юнитов не может не приводить к инвалидации юнит-тестов. Иначе, это не юнит-тесты, а интеграциюнные тесты, которым плевать на архитектуру, структуру кода и распределение ответственности.


Так ют должны тестировать не абстракции, а реализации (тело) методов, т.е. интерфейсы по сути. И если тут приходится что-то сильно
менять, значит дизайн не очень чтобы очень.
Кодом людям нужно помогать!
Re: Подделка юнит тестов, пригорело
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 22.06.21 01:31
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>1) ожидаем (подписываемся) какой-то event (в общей куче), как критерий прохождения теста.

Тё>2) вызываем функцию, которую т.н. "тестируем", которая вроде бы должна отправить тот event.
Тё>3) контрольный выстрел- из теста отправляем event, ожидаемый в (1).

Тё>Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.


Это реальная и повсеместная проблема. В текущей команде я лекцию делал по юнит тестам с разяснениями почему подобные тесты не вариант и как надо делать. Вроде помогло. Как еще с таким бороться я не знаю
Re: Подделка юнит тестов, пригорело
От: blacktea  
Дата: 22.06.21 11:33
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.


А почему это не было поймано на этапе code review?
Re: Подделка юнит тестов, пригорело
От: Слава  
Дата: 22.06.21 22:17
Оценка: :)
Здравствуйте, Тёмчик, Вы писали:

Тё>Пригорело. Опять.


А вы не пишите юнит-тесты. Обходитесь функциональными.
Re[2]: Подделка юнит тестов, пригорело
От: Je suis Mamut  
Дата: 26.06.21 14:09
Оценка: +1
KP>Это реальная и повсеместная проблема. В текущей команде я лекцию делал по юнит тестам с разяснениями почему подобные тесты не вариант и как надо делать. Вроде помогло. Как еще с таким бороться я не знаю

это не халтура, а использование инструмента не к месту.
любой тест, в т.ч. юнит-тест пытается зафиксировать контракт какого-то кода.
если люди пишут бессмысленный юнит тест — значит никакой контракт они фиксировать не хотят, нечего их насиловать.
если критично — надо отдать написание теста человеку, который понимает, какой здесь контракт нужен и почему.
а то и вообще не писать этот тест.
Re: Подделка юнит тестов, пригорело
От: Vladek Россия Github
Дата: 27.06.21 22:30
Оценка: :)
Здравствуйте, Тёмчик, Вы писали:

Тё>Как относитесь к такой практике юнит тестов:


Это тест для галочки. Их вообще быть не должно, потому что они не нужны.

Фикс — удалить тест.
Re[2]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 29.06.21 13:52
Оценка: +1
Здравствуйте, kaa.python, Вы писали:

KP>Как еще с таким бороться я не знаю


Как минимум, перестать считать покрытие, если считаете. KPI всегда приводят примерно к такому.
лэт ми спик фром май харт
Re[5]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 29.06.21 16:29
Оценка: +1
Здравствуйте, landerhigh, Вы писали:

L>Рефакторинг в идеале есть изменение структуры кода без изменения функционала. По определению, рефакторинг не должен инвалидировать юнит-тесты, так как они тестируют как раз функционал.


Нет, рефакторинг — это перераспределение ответственности, в рамках которой удаляются и видоизменяются абстракции (юниты). Удаление и видоизменение юнитов не может не приводить к инвалидации юнит-тестов. Иначе, это не юнит-тесты, а интеграциюнные тесты, которым плевать на архитектуру, структуру кода и распределение ответственности.

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


Узнать, что сломана интеграция позволяют интеграционные тесты, по определению. Юнит-тестам на интеграцию наплевать. Юнит-тесты могут только в лучшем случае продублировать мое представление о внешней системе, то есть я сначала в коде фиксирую свое представление о внешней системе, потом его же дублирую в юнит-тестах. Чем помогает это дублирование не понятно, так как если я неправильно представляю интерфейс внешней системы, то я его и в юнит-тесте тоже неправильно продублирую.
лэт ми спик фром май харт
Re[11]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 07:18
Оценка: :)
Здравствуйте, steep8, Вы писали:

T>>О каком публичном API идет речь? Если это REST, или GRPC какой-нибудь, то юнит-тесты бесполезны, тут надо только настоящий веб-сервер запускать, а это уже интеграционный тест.

S>Что мешает сделать мок в районе отправки/получения данных?

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

Когда кодеру лень писать юнит-тесты, он ищет оправдания.
www.blinnov.com
Re[14]: Подделка юнит тестов, пригорело
От: · Великобритания  
Дата: 30.06.21 12:14
Оценка: +1
Здравствуйте, mrTwister, Вы писали:

T>·>Не очень понятно что конкретно ты хочешь обнаружить. Отпрпавка/получение это транспорт, и частью API как правило не является.

T>Ну вот мне было выше обещано, что с помощью юнит-тестов можно быстро обнаруживать слом публичного API внешней системы. Я пытаюсь понять, как именно это сделать.
"внешней системы"? Этого вроде не было. Внешняя система тестируется conformance-тестами и к твоему коду отношения не имеет.

T>·>Можно же протестировать, что некий REST-запрос правильно конвертируется в некий DTO. Зачем для этого работающий веб-сервер не очень ясно.

T>Не очень понятно, как без web-сервера можно обработать http запрос. Иначе, мы будем тестировать не то, как REST запрос конвертируется в DTO, а, например, парсинг JSON. Только зачем нам надо это тестировать (учитывая, что это делается третьесторонней библиотекой как правило), и как это поможет быстро обнаружить слом публичного API внешней системы
Не очень понятно, зачем тестировать и быстро обнаруживать ошибки в том как web-сервер обрабатывает http-запросы. Этим должны заниматься разработчики веб-сервера. Ну я понимаю, что должен быть небольшой end-to-end интеграционный тест, который проверяет, что твоё приложение правильно запускается, открывает нужные порты, и отвечает на какой-нибудь простой запрос.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[14]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 13:00
Оценка: :)
Здравствуйте, Тёмчик, Вы писали:

Тё>Реальный случай: юнит-тест сравнивал список, а в логике в кишках использвался hashmap, и при смене версии JVM, порядок стал рандомным. Лечилось выставлением initial seed перед каждым тестом.


В нашем реальном случае оказалось, что все интеграционные тесты использовали датасет, в котором вызов API возвращал ровно один элемент.
Более того, 99.9% вызовов в продакшене тоже имели дело с только одним элементом.
Но два раза в год (угадайте, когда) "умные" девайсы, работающие на слабой однокристалке, запрашивали все данные.
И вот тут случился "упс".
www.blinnov.com
Re[26]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 01.07.21 08:35
Оценка: +1
Здравствуйте, mrTwister, Вы писали:

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


Этот контракт нигде не был явно описан. Проблема именно интеграционная.

L>>Еще раз — подобные баги есть во всех мало-мальски сложных спецификациях. Один из примеров — IEC61850 tissues.

T>И? При чем тут это? Еще раз: если проблема в том, что нарушен контракт модуля, то это не интеграционные баг, независимо от того, явный ли контракт модуля, или нет.

Это и есть словоблудие.

L>>Конченому пользователю, у которого из розетки вместо 220 полилось 380, насрать, интеграционный, алгоритмический это баг или просто звезды так сложились.

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

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

Можно сколько угодно упражняться в словоблудии, но если копеечный юнит-тест позволяет обнаружить, выявить или хотя бы предсказать заслуживающую дальнейшего расследования проблему интеграционного уровня, то написание этого юнит-теста оправдано.
www.blinnov.com
Re[28]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 01.07.21 08:57
Оценка: +1
Здравствуйте, mrTwister, Вы писали:

L>>Этот контракт нигде не был явно описан. Проблема именно интеграционная.

T>Но при этом контракт подразумевался, как минимум, в голове у TL. Либо библиотека должна возвращать элементы в отсортированном виде, либо не должна.

Он нигде не подразумевался и нигде не был описан.
Он сформировался постфактум и неявно, когда клиенты наблюдаемое поведение посчитале зафиксированным в контракте. Клиент, конечно, не прав в том, что полагался на поведение, никем не гарантированное, но удачи объяснить ему, что ему нужно теперь перепрошить ПЗУ в 100500 девайсах по всему миру.

T>Если должна, то неважно почему: потому что так написано в спецификации, или потому что уже есть клиенты, которые на это завязались. И в том и в другом случае это контракт библиотеки. Причем во втором случае надо еще отредактировать спецификацию и зафиксировать в ней требование по сортировки, чтобы оно было явное, раз уж оно все равно есть и его надо поддерживать.


Твоими устами бы да медку хлебнуть.
Ошибки в спецификациях неизбежны.
Я уже привел несколько примеров. Тот же МЭК 61850 специально обученные люди больше 10 лет разрабатывали, но тем не менее, мест, которые исходя из разработанной ими спецификации, можно было понять двояко, там осталось овердофига. В результате имеем зоопарк из девайсов, реализуемых определенные ключевые API разным путем.
Редактируй, фиксируй, какие проблемы?
Ах да, эти девайсы уже внедрены и их перепрошивка в общем случае невозможна.

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


T>Я с этим и не спорю. Действительно, гвоздь удобно забивать молотком. Я спорю с тем, что надо шурупы молотком забивать.


Ну то есть, если юнит-тест вдруг выявил проблему интеграционного уровня, то это забитый молотком шуруп?
www.blinnov.com
Re[4]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 02.07.21 10:39
Оценка: :)
Здравствуйте, Poopy Joe, Вы писали:

L>>Высококвалифицированный хирург поможет плохому танцору!

PJ>Чем?

Скальпелем.
www.blinnov.com
Подделка юнит тестов, пригорело
От: Тёмчик Австралия жж
Дата: 22.06.21 00:38
Оценка:
Как относитесь к такой практике юнит тестов:

1) ожидаем (подписываемся) какой-то event (в общей куче), как критерий прохождения теста.
2) вызываем функцию, которую т.н. "тестируем", которая вроде бы должна отправить тот event.
3) контрольный выстрел- из теста отправляем event, ожидаемый в (1).

Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.

Пригорело. Опять.
Re: Подделка юнит тестов, пригорело
От: Faland США  
Дата: 22.06.21 02:47
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Как относитесь к такой практике юнит тестов:


Тё>1) ожидаем (подписываемся) какой-то event (в общей куче), как критерий прохождения теста.

Тё>2) вызываем функцию, которую т.н. "тестируем", которая вроде бы должна отправить тот event.
Тё>3) контрольный выстрел- из теста отправляем event, ожидаемый в (1).

Тё>Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.


Тё>Пригорело. Опять.


Хех, индийские аутсорсеры миллионы зарабатывают такими тестами, это серьезный бизнес
Re[2]: Подделка юнит тестов, пригорело
От: Тёмчик Австралия жж
Дата: 22.06.21 02:55
Оценка:
Здравствуйте, Faland, Вы писали:

F>Хех, индийские аутсорсеры миллионы зарабатывают такими тестами, это серьезный бизнес


Указанный случай- из братской республики. Подозреваю, просто схалтурил чел, ведь никто не понял.
Re: Подделка юнит тестов, пригорело
От: AmSpb  
Дата: 22.06.21 21:45
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Как относитесь к такой практике юнит тестов:

Тё>Пригорело. Опять.

Такие проверки зона ответственности интеграционных и end-to-end тестов
Re: Подделка юнит тестов, пригорело
От: sts  
Дата: 25.06.21 23:10
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Как относитесь к такой практике юнит тестов:


Тё>1) ожидаем (подписываемся) какой-то event (в общей куче), как критерий прохождения теста.

Тё>2) вызываем функцию, которую т.н. "тестируем", которая вроде бы должна отправить тот event.
Тё>3) контрольный выстрел- из теста отправляем event, ожидаемый в (1).

Тё>Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.


Тё>Пригорело. Опять.


просто новый тикет в жире не должен оцениваться как полезная работа — это тех долг
классика же ж
Re[2]: Подделка юнит тестов, пригорело
От: Тёмчик Австралия жж
Дата: 26.06.21 02:04
Оценка:
Здравствуйте, blacktea, Вы писали:

B>А почему это не было поймано на этапе code review?


Это полу-политический вопрос. Лично я UT в 90% случаев прокручиваю, неглядя. Так что разводить вонь по этому поводу- ну, в рсдн только насрать.
А в этом случае пригорело по причине массированного рефакторинга, и выбор —
1) тоже фейк вкрутить (а это значит, нарушить собственные принципы)
2) починить- срываются сроки, пригар
3) отключить, ибо хуже не будет.
Re[3]: Подделка юнит тестов, пригорело
От: blacktea  
Дата: 26.06.21 12:58
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Это полу-политический вопрос. Лично я UT в 90% случаев прокручиваю, неглядя. Так что разводить вонь по этому поводу- ну, в рсдн только насрать.

Тё>А в этом случае пригорело по причине массированного рефакторинга, и выбор —

Ну вот, если сам и проглядел во время code review, то как говорится ССЗБ

А вообще, я сам часто так халтурю. Не вчитываюсь, смотрю чисто на соответствие CC. Потом в какой-то момент смотришь на кодовую базу и ужасаешься. Видимо пора перестать халтурить на code review.
Re[2]: Подделка юнит тестов, пригорело
От: Ватакуси Россия  
Дата: 28.06.21 08:21
Оценка:
G>1) Объем кода юнит-тестов при полном покрытии превышает объем кода
G>2) Юнит-тесты мешают рефакторингу, изменение структуры кода часто сильно рушит юнит-тесты.
G>3) Очень часто встречаются юнит-тесты, которые фактически ничего не проверяют.

Это всё так. Но какая альтернатива?
Все будет Украина!
Re[2]: Подделка юнит тестов, пригорело
От: Je suis Mamut  
Дата: 28.06.21 12:33
Оценка:
G>Юнит тесты не нужны.

это всегда вопрос соотношения цены и качества.
важный и сложный кусок кода, упростить не получается, интеграционные тесты до него дотягиваются через 100 посредников — ну что поделаешь, юнит тест будет выгоднее.
подавляющее большинство кода просто не стоит этих усилий, да и интеграционные тесты масштабируются лучше — ими занимаются QA, но бывают же исключения.
Re[3]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 29.06.21 13:57
Оценка:
Здравствуйте, landerhigh, Вы писали:

G>>2) Юнит-тесты мешают рефакторингу, изменение структуры кода часто сильно рушит юнит-тесты.


L>Высококвалифицированный хирург поможет плохому танцору!


Не понял, поясни мысль. Ты хочешь сказать, что рефакторинг не инвалидирует юнит-тесты?
лэт ми спик фром май харт
Re[6]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 29.06.21 16:34
Оценка:
Здравствуйте, mrTwister, Вы писали:

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


Тем, что обнаружение проблемы на этапе юнит тестирования дешевле, чем на любом другом этапе.
www.blinnov.com
Re[7]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 29.06.21 16:39
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Тем, что обнаружение проблемы на этапе юнит тестирования дешевле, чем на любом другом этапе.


Только интеграционные проблемы юнит-тестами не обнаруживаются, для этого интеграционные тесты нужны
лэт ми спик фром май харт
Re[8]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 29.06.21 16:50
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>Только интеграционные проблемы юнит-тестами не обнаруживаются, для этого интеграционные тесты нужны


Поломка пубилчного API или изменение декларируемого поведения прекрасно обнаруживается.
www.blinnov.com
Re[9]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 29.06.21 16:56
Оценка:
Здравствуйте, landerhigh, Вы писали:

T>>Только интеграционные проблемы юнит-тестами не обнаруживаются, для этого интеграционные тесты нужны


L>Поломка пубилчного API или изменение декларируемого поведения прекрасно обнаруживается.


О каком публичном API идет речь? Если это REST, или GRPC какой-нибудь, то юнит-тесты бесполезны, тут надо только настоящий веб-сервер запускать, а это уже интеграционный тест.
лэт ми спик фром май харт
Re[10]: Подделка юнит тестов, пригорело
От: steep8  
Дата: 30.06.21 03:38
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>О каком публичном API идет речь? Если это REST, или GRPC какой-нибудь, то юнит-тесты бесполезны, тут надо только настоящий веб-сервер запускать, а это уже интеграционный тест.


Что мешает сделать мок в районе отправки/получения данных?
Re[11]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 09:19
Оценка:
Здравствуйте, steep8, Вы писали:

T>>О каком публичном API идет речь? Если это REST, или GRPC какой-нибудь, то юнит-тесты бесполезны, тут надо только настоящий веб-сервер запускать, а это уже интеграционный тест.


S>Что мешает сделать мок в районе отправки/получения данных?


И как этот мок поможет обнаружить поломку публичного API?
лэт ми спик фром май харт
Re[7]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 11:15
Оценка:
Здравствуйте, Sharov, Вы писали:

S>Так ют должны тестировать не абстракции, а реализации (тело) методов, т.е. интерфейсы по сути. И если тут приходится что-то сильно

S>менять, значит дизайн не очень чтобы очень.

Естественно, дизайн не очень, именно поэтому его и рефакторят. Если бы с дизайном было бы всё нормально, то рефакторинг и не нужен был бы.
лэт ми спик фром май харт
Re[8]: Подделка юнит тестов, пригорело
От: Sharov Россия  
Дата: 30.06.21 11:17
Оценка:
Здравствуйте, mrTwister, Вы писали:

S>>Так ют должны тестировать не абстракции, а реализации (тело) методов, т.е. интерфейсы по сути. И если тут приходится что-то сильно

S>>менять, значит дизайн не очень чтобы очень.
T>Естественно, дизайн не очень, именно поэтому его и рефакторят. Если бы с дизайном было бы всё нормально, то рефакторинг и не нужен был бы.

От дизайна объем рефакторинга и поломанных ют и зависит.
Кодом людям нужно помогать!
Re[12]: Подделка юнит тестов, пригорело
От: · Великобритания  
Дата: 30.06.21 11:19
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>>>О каком публичном API идет речь? Если это REST, или GRPC какой-нибудь, то юнит-тесты бесполезны, тут надо только настоящий веб-сервер запускать, а это уже интеграционный тест.

S>>Что мешает сделать мок в районе отправки/получения данных?
T>И как этот мок поможет обнаружить поломку публичного API?
Не очень понятно что конкретно ты хочешь обнаружить. Отпрпавка/получение это транспорт, и частью API как правило не является. Можно же протестировать, что некий REST-запрос правильно конвертируется в некий DTO. Зачем для этого работающий веб-сервер не очень ясно.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[9]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 11:24
Оценка:
Здравствуйте, Sharov, Вы писали:

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

S>От дизайна объем рефакторинга и поломанных ют и зависит.

Ну то есть если рефакторинг не нужен, то юнит-тесты рефакторингу не помешают. Спасибо, Кэп!
лэт ми спик фром май харт
Re[12]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 11:28
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>И как этот мок поможет обнаружить поломку публичного API?


Для тех, у кого публичный API — это просто описание контракта в схеме — никак.
У некоторых старообрядцев "публичный API" включает в себя также и декларируемое или подразумеваемое поведение. И вот тут — очень даже "как".

Например, отрефакторил ты модуль в целях оптимизации. Заменил std::map на std::unordered_map.
Функциональность не изменилась, но записи в ответе на запрос больше не упорядочены по алфавиту.

Сломался юнит-тест, который полагался на определенный порядок записей в ответе.

Твои действия:

1. Обматерить аффтара "бессмысленного юнит-теста".
2. Другое.
www.blinnov.com
Re[13]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 11:42
Оценка:
Здравствуйте, ·, Вы писали:

·>Не очень понятно что конкретно ты хочешь обнаружить. Отпрпавка/получение это транспорт, и частью API как правило не является.

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

·>Можно же протестировать, что некий REST-запрос правильно конвертируется в некий DTO. Зачем для этого работающий веб-сервер не очень ясно.

Не очень понятно, как без web-сервера можно обработать http запрос. Иначе, мы будем тестировать не то, как REST запрос конвертируется в DTO, а, например, парсинг JSON. Только зачем нам надо это тестировать (учитывая, что это делается третьесторонней библиотекой как правило), и как это поможет быстро обнаружить слом публичного API внешней системы
лэт ми спик фром май харт
Re[13]: Подделка юнит тестов, пригорело
От: Тёмчик Австралия жж
Дата: 30.06.21 12:15
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>std::unordered_map.

L>Сломался юнит-тест, который полагался на определенный порядок записей в ответе.

Реальный случай: юнит-тест сравнивал список, а в логике в кишках использвался hashmap, и при смене версии JVM, порядок стал рандомным. Лечилось выставлением initial seed перед каждым тестом.
Отредактировано 30.06.2021 12:17 Артём . Предыдущая версия .
Re[13]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 12:59
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Например, отрефакторил ты модуль в целях оптимизации. Заменил std::map на std::unordered_map.

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

Ок, то есть речь идет о тестировании публичного API библиотеки. Но если тест тестирует целую библиотеку через её публичный API, то это не юнит-тест, а интеграционный.
лэт ми спик фром май харт
Re[15]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 13:01
Оценка:
Здравствуйте, ·, Вы писали:

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


T>>·>Не очень понятно что конкретно ты хочешь обнаружить. Отпрпавка/получение это транспорт, и частью API как правило не является.

T>>Ну вот мне было выше обещано, что с помощью юнит-тестов можно быстро обнаруживать слом публичного API внешней системы. Я пытаюсь понять, как именно это сделать.
·>"внешней системы"? Этого вроде не было. Внешняя система тестируется conformance-тестами и к твоему коду отношения не имеет.

Мой код может непавильно этот API использовать.

·>Не очень понятно, зачем тестировать и быстро обнаруживать ошибки в том как web-сервер обрабатывает http-запросы. Этим должны заниматься разработчики веб-сервера. Ну я понимаю, что должен быть небольшой end-to-end интеграционный тест, который проверяет, что твоё приложение правильно запускается, открывает нужные порты, и отвечает на какой-нибудь простой запрос.


Под веб-сервером имелся ввиду сервис, предоставляющий REST API.
лэт ми спик фром май харт
Re[14]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 13:01
Оценка:
Здравствуйте, mrTwister, Вы писали:

L>>Например, отрефакторил ты модуль в целях оптимизации. Заменил std::map на std::unordered_map.

L>>Функциональность не изменилась, но записи в ответе на запрос больше не упорядочены по алфавиту.
T>Ок, то есть речь идет о тестировании публичного API библиотеки. Но если тест тестирует целую библиотеку через её публичный API, то это не юнит-тест, а интеграционный.

Нет, это юнит тест. Который проверяет поведение одного из юнитов изолированного обработчика вызовов глубоко внутри библиотеки.
www.blinnov.com
Re[15]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 13:06
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Нет, это юнит тест. Который проверяет поведение одного из юнитов изолированного обработчика вызовов глубоко внутри библиотеки.


Тогда при чем тут публичный API библиотеки? Да, юнит-тест может найти баг в кишках, который может проявиться в некорректной работе публичного API, но юнит-тесты фокусируются не на этом, они ни про какой публичный API не знают и не тестируют его. При этом я не говорю, что юнит-тесты не нужны. Это инструмент, который имеет свою область применимости и свои ограничения, которые надо хорошо понимать. Не надо наделять его чудодейственными свойствами.
лэт ми спик фром май харт
Re[16]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 13:10
Оценка:
Здравствуйте, mrTwister, Вы писали:


L>>Нет, это юнит тест. Который проверяет поведение одного из юнитов изолированного обработчика вызовов глубоко внутри библиотеки.

T>Тогда при чем тут публичный API библиотеки? Да, юнит-тест может найти баг в кишках, который может проявиться в некорректной работе публичного API,

Вот причем:

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


Теперь оказывается, что не только не обнаруживаются, но и все же обнаруживаются.
www.blinnov.com
Re[17]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 13:19
Оценка:
Здравствуйте, landerhigh, Вы писали:


L>Вот причем:

L>

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


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


Только это не интеграциюнная ошибка, это обычный алгоритмический баг. Интеграционная ошибка — это когда две системы непраильно взаимодействуют друг с другом, то есть ошибка на стыке систем.
лэт ми спик фром май харт
Re[18]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 13:31
Оценка:
Здравствуйте, mrTwister, Вы писали:

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


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

Сломалась именно интеграция. Интеграционные тесты, кстати, эту особенность не уловили.
www.blinnov.com
Re[19]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 13:42
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Сломалась именно интеграция. Интеграционные тесты, кстати, эту особенность не уловили.


Данные возвращаются в неправильном порядке. Это была бы интеграционная ошибка, если бы упорядоченность никто и не обещал, а другая система необоснованно на неё завязалась. Если же модуль просто не выполняет свой контракт, то это не интеграционная ошибка.
лэт ми спик фром май харт
Re[20]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 13:49
Оценка:
Здравствуйте, mrTwister, Вы писали:

L>>Сломалась именно интеграция. Интеграционные тесты, кстати, эту особенность не уловили.


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


Это ты клиентам попробуй объяснить.

В системах со сложными спецификациями всегда возникают ситуации, когда в спецификации есть пробелы, неявности или просто места, которые можно понять двояко. За примерами далеко ходить не надо
Автор: Кодт
Дата: 29.06.21
.

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

А копеечный юнит-тест эту ошибку не выпустил бы за пределы IDE разработчика.
www.blinnov.com
Re[21]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 14:02
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>В системах со сложными спецификациями всегда возникают ситуации, когда в спецификации есть пробелы, неявности или просто места, которые можно понять двояко. За примерами далеко ходить не надо
Автор: Кодт
Дата: 29.06.21
.

Совершенно верно, и юнит-тесты эти места, которые можно понять двояко, не отловят. Есть спецификация. Команда "А" поняла её одним образом, написала код и юнит-тесты к этому коду в соответствии со своим пониманием. А команда "Б" поняла спецификацию по-своему, и тоже написала код и юнит-тесты согласно своему пониманию. У всех юнит-тесты успешно проходят, но совместно модули "А" и "Б" не работают, потому что спецификация была понята по-разному.

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

L>А копеечный юнит-тест эту ошибку не выпустил бы за пределы IDE разработчика.
Я же не говорю, что юнит-тесты не нужны. Это инструмент, который иногда имеет смысл использовать для отлова алгоритмических ошибок. Но то, что спецификация была понята неправильно он не поймает.
лэт ми спик фром май харт
Re[22]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 14:22
Оценка:
Здравствуйте, mrTwister, Вы писали:

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


L>>В системах со сложными спецификациями всегда возникают ситуации, когда в спецификации есть пробелы, неявности или просто места, которые можно понять двояко. За примерами далеко ходить не надо
Автор: Кодт
Дата: 29.06.21
.

T>Совершенно верно, и юнит-тесты эти места, которые можно понять двояко, не отловят.

Отловят.
Вот из примера выше — замена std::map на std::unordered_map сломала юнит-тест.
Кодер класса "юнит-тесты не нужны" закоментил его.
Но его TL эту фишку просек, PR заблокировал и позвонил продакт овнеру.
А тот сказал, что раз в спецификации не оговаривается порядок сортировки данных, а значит, кто-то из клиентов поломается и виноваты будем мы.

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

L>>А копеечный юнит-тест эту ошибку не выпустил бы за пределы IDE разработчика.
T>Я же не говорю, что юнит-тесты не нужны. Это инструмент, который иногда имеет смысл использовать для отлова алгоритмических ошибок. Но то, что спецификация была понята неправильно он не поймает.

При правильном применении они выявляют места, где спецификация может быть понята неправильно.
www.blinnov.com
Re[23]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 14:27
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Отловят.

L>Вот из примера выше — замена std::map на std::unordered_map сломала юнит-тест.
L>Кодер класса "юнит-тесты не нужны" закоментил его.
L>Но его TL эту фишку просек, PR заблокировал и позвонил продакт овнеру.
L>А тот сказал, что раз в спецификации не оговаривается порядок сортировки данных, а значит, кто-то из клиентов поломается и виноваты будем мы.

Ну то есть фактически вы внесли в контракт модуля порядок сортировки. Таким образом, был нарушен контракт модуля. Если модуль не выполняет свой контракт, это не интеграционный баг, а внутренний алгоритмический баг.
лэт ми спик фром май харт
Re[24]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 30.06.21 14:40
Оценка:
Здравствуйте, mrTwister, Вы писали:

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

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

Это уже словоблудие.

Еще раз — подобные баги есть во всех мало-мальски сложных спецификациях. Один из примеров — IEC61850 tissues.

Конченому пользователю, у которого из розетки вместо 220 полилось 380, насрать, интеграционный, алгоритмический это баг или просто звезды так сложились.
www.blinnov.com
Re[25]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 30.06.21 14:57
Оценка:
Здравствуйте, landerhigh, Вы писали:

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


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

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

L>Это уже словоблудие.

Ну дак заканчивай его

L>Еще раз — подобные баги есть во всех мало-мальски сложных спецификациях. Один из примеров — IEC61850 tissues.

И? При чем тут это? Еще раз: если проблема в том, что нарушен контракт модуля, то это не интеграционные баг, независимо от того, явный ли контракт модуля, или нет.

L>Конченому пользователю, у которого из розетки вместо 220 полилось 380, насрать, интеграционный, алгоритмический это баг или просто звезды так сложились.

Речь про то, что для всего есть свой инструмент. Из того, что ты гвоздь назвал шурупом и забил его молотком никак не следует, что шурупы можно забивать молотками.
лэт ми спик фром май харт
Re[27]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 01.07.21 08:46
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Этот контракт нигде не был явно описан. Проблема именно интеграционная.

Но при этом контракт подразумевался, как минимум, в голове у TL. Либо библиотека должна возвращать элементы в отсортированном виде, либо не должна. Если должна, то неважно почему: потому что так написано в спецификации, или потому что уже есть клиенты, которые на это завязались. И в том и в другом случае это контракт библиотеки. Причем во втором случае надо еще отредактировать спецификацию и зафиксировать в ней требование по сортировки, чтобы оно было явное, раз уж оно все равно есть и его надо поддерживать.

L>Это и есть словоблудие.

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

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

К чему ты это написал? Спор ради спора?

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


Я с этим и не спорю. Действительно, гвоздь удобно забивать молотком. Я спорю с тем, что надо шурупы молотком забивать.
лэт ми спик фром май харт
Re: Подделка юнит тестов, пригорело
От: GarryIV  
Дата: 02.07.21 06:02
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Тест всегда проходит, похрен что "тестируемая" функция совсем иначе себя ведёт. И вот этому тесту был посвещен целый тикет в жыре.


Есть такие штуки для тестирования тестов как Weak Test (проверяет есть ли ассершны вообще) и Mutation Test (aka StringTest) (проверяет работают ли ассершны) https://pitest.org/
Я когда то писал и то и другое, первый несмотря на свою наивность находит кучу говна, второй подход муторный и сложный но твой кейс наверняка поймает.
WBR, Igor Evgrafov
Re[4]: Подделка юнит тестов, пригорело
От: elmal  
Дата: 02.07.21 06:06
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Интеграционные, функциональные тесты. Design by contract, типизация, статичские верификаторы.

G>По моему опыту статическая ферификация на предмет самых популярных ошибок дает самый лучший результат.
Это да. Но как обосновать заказчику необходимость в команде в 100 человек, ибо если ограничиться интеграционными и функциональными проект вполне можно сделать тремя разработчиками, пятью начальниками и аналитиками и пятью тестировщиками ? Когда юнит тесты с полным покрытием — все заняты, пишут тесты, движуха неимоверная, и даже такого количества людей не хватает.
Re[6]: Подделка юнит тестов, пригорело
От: Poopy Joe Бельгия  
Дата: 02.07.21 09:17
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>Удаление и видоизменение юнитов не может не приводить к инвалидации юнит-тестов.


Тогда зачем они нужны?
Re[3]: Подделка юнит тестов, пригорело
От: Poopy Joe Бельгия  
Дата: 02.07.21 09:21
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Высококвалифицированный хирург поможет плохому танцору!


Чем?
https://diletant.media/articles/44218039/
Re[5]: Подделка юнит тестов, пригорело
От: Ночной Смотрящий Россия  
Дата: 06.07.21 15:40
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Рефакторинг в идеале есть изменение структуры кода без изменения функционала.


Все так. Собака зарыта в уровнях. Рефакторинг может быть на уровень выше тестов, и на своем уровне он функционал не ломает. А вот тесты уровнем ниже ломаются.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[10]: Подделка юнит тестов, пригорело
От: Ночной Смотрящий Россия  
Дата: 06.07.21 15:40
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>О каком публичном API идет речь? Если это REST, или GRPC какой-нибудь, то юнит-тесты бесполезны, тут надо только настоящий веб-сервер запускать


Совсем необязательно.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[11]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 06.07.21 16:11
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Совсем необязательно.


Это мало чем отличается от подъема сервера и уж точно не тянет на юнит-тесты
лэт ми спик фром май харт
Re[29]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 06.07.21 16:16
Оценка:
Здравствуйте, landerhigh, Вы писали:

L>Он нигде не подразумевался и нигде не был описан.

L>Он сформировался постфактум и неявно, когда клиенты наблюдаемое поведение посчитале зафиксированным в контракте. Клиент, конечно, не прав в том, что полагался на поведение, никем не гарантированное, но удачи объяснить ему, что ему нужно теперь перепрошить ПЗУ в 100500 девайсах по всему миру.

Все верно, важно, что "он сформировался", а как и при каких обстоятельствах, уже не важно

L>Ошибки в спецификациях неизбежны.


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

L>Ну то есть, если юнит-тест вдруг выявил проблему интеграционного уровня, то это забитый молотком шуруп?


Нет, если юнит-тест выловил ошибку, которую ты ошибочно называешь интеграционной, то это гвоздь, забитый молотком, который ошибочно был назван микроскопом.
лэт ми спик фром май харт
Re[11]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 06.07.21 16:17
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Совсем необязательно.


В твоей ссылке черным по белому написано:

Factory for bootstrapping an application in memory for functional end to end tests.

лэт ми спик фром май харт
Re[12]: Подделка юнит тестов, пригорело
От: Ночной Смотрящий Россия  
Дата: 06.07.21 16:36
Оценка:
Здравствуйте, mrTwister, Вы писали:

НС>>Совсем необязательно.

T>Это мало чем отличается от подъема сервера

С чего ты взял?

T> и уж точно не тянет на юнит-тесты


Вопрос трактовки термина. А термин тот очень размытый.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[12]: Подделка юнит тестов, пригорело
От: Ночной Смотрящий Россия  
Дата: 06.07.21 16:36
Оценка:
Здравствуйте, mrTwister, Вы писали:

T>В твоей ссылке черным по белому написано:

T>

Factory for bootstrapping an application in memory for functional end to end tests.


Функциональное и модульное тестирование — не взаимоисключающие понятия.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[13]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 06.07.21 16:44
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:
T>>

Factory for bootstrapping an application in memory for functional end to end tests.

НС>Функциональное и модульное тестирование — не взаимоисключающие понятия.

Ты "end-to-end" пропустил
лэт ми спик фром май харт
Re[13]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 06.07.21 16:47
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>С чего ты взял?

В того, что оно с точки зрения интеграции модулей друг с другом ничем не отличается. От того, что там где-то глубоко в кишках отсутствуют сокеты (их же нет, я правильно понял?), мало на что влияет.
лэт ми спик фром май харт
Re[14]: Подделка юнит тестов, пригорело
От: Ночной Смотрящий Россия  
Дата: 06.07.21 16:50
Оценка:
Здравствуйте, mrTwister, Вы писали:

НС>>С чего ты взял?

T>В того, что оно с точки зрения интеграции модулей друг с другом ничем не отличается.

Каких таких модулей? Почему вдруг asp.net приложение это не модуль?
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[15]: Подделка юнит тестов, пригорело
От: mrTwister Россия  
Дата: 06.07.21 16:58
Оценка:
Здравствуйте, Ночной Смотрящий, Вы писали:

НС>Каких таких модулей? Почему вдруг asp.net приложение это не модуль?


Не, ну если так натягивать сову, то конечно, юнит-тестами можно протестировать вообще всё. Типа "а почему 100500 взаимодействующих сервисов — это не модуль"?
лэт ми спик фром май харт
Re[30]: Подделка юнит тестов, пригорело
От: landerhigh Пират  
Дата: 07.07.21 07:55
Оценка:
Здравствуйте, mrTwister, Вы писали:

L>>Ну то есть, если юнит-тест вдруг выявил проблему интеграционного уровня, то это забитый молотком шуруп?

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

Да вот насрать.
У меня достаточно серьезный опыт в данном вопросе, чтобы утверждать, что в компаниях (командах), замороченных на словоблудии "вот это функциональный, вот это интеграционный, а это — юнит тест", в итоге нет ни первых, ни вторых, ни третьих.
Именно в подобных случая мне доводилось наблюдать забивание шурупов шляпкой вперед электронными сканирующими микроскопами.
www.blinnov.com
Отредактировано 07.07.2021 8:41 landerhigh . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.