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

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

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

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

Тё>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: Подделка юнит тестов, пригорело
От: blacktea  
Дата: 22.06.21 11:33
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

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


А почему это не было поймано на этапе code review?
Re[2]: Подделка юнит тестов, пригорело
От: viellsky  
Дата: 22.06.21 20:24
Оценка: +2
Здравствуйте, blacktea, Вы писали:

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

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

Здесь первичным должно быть четкое распределение личной ответственности и последствия за грубые нарушения в работе.
Тот, кто пишет тесты — должен понимать, что его работа имеет четкие критерии качества. А именно — если в следующий этап тестирования или еще хуже в продакшн пролезет ошибка, которую закрывали этим тестом, да еще пролезла в результате подделки юнит-теста — то будут финансовые последствия (лишение премии например, а повторное — до увольнения).
Это основной каркас в обеспечении качества. А коде-ревью — такое специфичное субъективное действо...
Re: Подделка юнит тестов, пригорело
От: AmSpb  
Дата: 22.06.21 21:45
Оценка:
Здравствуйте, Тёмчик, Вы писали:

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

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

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

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


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

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

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


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

Фикс — удалить тест.
http://files.rsdn.org/43395/hr-kyle-theisen-04.png
Re: Подделка юнит тестов, пригорело
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 28.06.21 08:03
Оценка: +1 -3
Здравствуйте, Тёмчик, Вы писали:

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

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

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

Это всё так. Но какая альтернатива?
Все буде Урина!
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 Пират http://www.blinnov.com
Дата: 28.06.21 09:34
Оценка: +2
Здравствуйте, gandjustas, Вы писали:

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


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

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


Да, нередко встречаются полицейские, которые вместо ловли преступников непонятно чем занимаются.
www.blinnov.com
Re[2]: Подделка юнит тестов, пригорело
От: Je suis Mamut  
Дата: 28.06.21 12:33
Оценка:
G>Юнит тесты не нужны.

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

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


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

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


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


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