Size: a a a

2020 September 08

V

V in pro.elixir
Vyacheslav Konovalov
хз как можно не уметь тесты писать и что это значит вообще, логично ведь что с ними лучше
другое дело когда те грят писать бесполезные тесты на код с очевидной логикой в то время как целый проект рядом вообще без тестов
умение писать тесты - не врождённое тащемта
источник

VK

Vyacheslav Konovalov in pro.elixir
V
умение писать тесты - не врождённое тащемта
эт понятно, после того как уже пишешь код как можно не уметь писать его проверку
источник

V

V in pro.elixir
Vyacheslav Konovalov
эт понятно, после того как уже пишешь код как можно не уметь писать его проверку
Потому что научиться писать тесты - это не выучить пару операторов, это paradigm shift.
источник

V

V in pro.elixir
Как я написал выше, фокус не в "когда уже написал код - написать его проверку", а в "писать код и его проверку _одновременно_" (вначале в уме, потом набираешь)
источник

VK

Vyacheslav Konovalov in pro.elixir
согласен конечно
источник

V

V in pro.elixir
Единицей программы должен стать не код, а комплиментарная пара код+тест.
источник

T

Tharin in pro.elixir
V
Как я написал выше, фокус не в "когда уже написал код - написать его проверку", а в "писать код и его проверку _одновременно_" (вначале в уме, потом набираешь)
Всё равно что-то одно напишешь раньше
источник

VK

Vyacheslav Konovalov in pro.elixir
V вот как раз у тебя и надо было сразу спрашивать))
> Потому что непонятно можно ли его изменить, не сломав изначально заложенную функциональность.

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

V

V in pro.elixir
Vyacheslav Konovalov
V вот как раз у тебя и надо было сразу спрашивать))
> Потому что непонятно можно ли его изменить, не сломав изначально заложенную функциональность.

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

VK

Vyacheslav Konovalov in pro.elixir
V
Конкретно в том случае основные проблемы были
- из-за неясной структуры входных аргументов - массив, массив массивов, какие ключи, какие допустимые значения и т.д. и из-за неясного поведения при невалидных входных значениях - исключение, нулевой возврат, ничего
- из-за недокументированных аргументов api - там тоже передавались сложные структуры
ок, все очень сложно)
основые моменты валидации протестированы, типа как 5 required полей и 5 необязательных, проверяем что ошибка при отсутсвии обязательного и все ок если без необязательного
отличающиеся структуры на входе, валидация по каждой ветке в тестах
зачем каждое поле проверять?
источник

V

V in pro.elixir
Vyacheslav Konovalov
ок, все очень сложно)
основые моменты валидации протестированы, типа как 5 required полей и 5 необязательных, проверяем что ошибка при отсутсвии обязательного и все ок если без необязательного
отличающиеся структуры на входе, валидация по каждой ветке в тестах
зачем каждое поле проверять?
it depends. иногда нужно, иногда нет
источник

VK

Vyacheslav Konovalov in pro.elixir
V
it depends. иногда нужно, иногда нет
допустим сказано, что нужно, но ты думаешь что бесполезно
зависит ли от того кем сказано?
источник

VK

Vyacheslav Konovalov in pro.elixir
бтв, умный человек не может быть злым, иначе давно бы понял что мотивы решают
источник

S

Sergey in pro.elixir
Мне нравится правило «если код неудобно тестировать, значит он хреновый».

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

AL

Anton Lapshin in pro.elixir
о, я всё обсуждение пропустил
источник

AL

Anton Lapshin in pro.elixir
добавлю кратенько своего ИМХО. если коротко - без тестов невозможно рефакторить код вообще никак. плюс, в случае какого-нибудь руби, ты ещё и не застрахован от очепяток. у меня на прошлой работе проект жил без единого теста где-то года два - это был трэш. мы тогда были совсем зелёные, а наш тогдашний тимлид не делал ровным счётом ничего - ни ревью, ни заставлял тесты писать, да и вообще хз что делал (его, конечно, потом на мороз выкинули, но уже спустя прилично времени). как следствие - куча багов в каждом релизе (а релиз согласовывался с заказчиком), невозможно что-либо переписать, целая толпа QA, которые денно и нощно это всё протыкивали адово (бедняги). как следствие уже этого - вечно недовольные заказчики, подгоняющие сроки, недовольный ПМ, который не выделял времени на рефакторинг (да и какой тут рефакторинг?), и в целом очень тухлый и угнетающий проект. в моём понимании, если бы тогда тимлид был нормальный и заставлял хотя бы на новый функционал писать тесты, проект уже был бы не таким изматывающим. всё ещё тухлым, но чуточку лучше.
сейчас я пишу тесты вообще на весь новый функционал, разве что это не какой-то интерфейс, который можно руками потыкать, или какой-нибудь скрипт выгрузки там или чего-то подобного, что можно один раз отладить и после не трогать лишний раз до нужды. соглашусь с последним высказыванием: хороший код - это тот, который легко тестировать. но если прям сильно горят сроки, лучше написать так себе код, но покрыть его тестами, пусть даже с кучей моков-стабов-заглушек-костылей. просто чтобы ты потом мог к нему чуть позже вернуться и сделать нормально, не потеряв понимания контекста.
так что я всеми конечностями за тесты, не пишут тесты только аутсорсеры, которые на маленькой зп сидят на субподряде, да всякие стартаперы, которым всё горит 😁а потом ты такой на подобный проект приходишь, офигеваешь и уходишь
источник

IK

Ihor Katkov in pro.elixir
Anton Lapshin
добавлю кратенько своего ИМХО. если коротко - без тестов невозможно рефакторить код вообще никак. плюс, в случае какого-нибудь руби, ты ещё и не застрахован от очепяток. у меня на прошлой работе проект жил без единого теста где-то года два - это был трэш. мы тогда были совсем зелёные, а наш тогдашний тимлид не делал ровным счётом ничего - ни ревью, ни заставлял тесты писать, да и вообще хз что делал (его, конечно, потом на мороз выкинули, но уже спустя прилично времени). как следствие - куча багов в каждом релизе (а релиз согласовывался с заказчиком), невозможно что-либо переписать, целая толпа QA, которые денно и нощно это всё протыкивали адово (бедняги). как следствие уже этого - вечно недовольные заказчики, подгоняющие сроки, недовольный ПМ, который не выделял времени на рефакторинг (да и какой тут рефакторинг?), и в целом очень тухлый и угнетающий проект. в моём понимании, если бы тогда тимлид был нормальный и заставлял хотя бы на новый функционал писать тесты, проект уже был бы не таким изматывающим. всё ещё тухлым, но чуточку лучше.
сейчас я пишу тесты вообще на весь новый функционал, разве что это не какой-то интерфейс, который можно руками потыкать, или какой-нибудь скрипт выгрузки там или чего-то подобного, что можно один раз отладить и после не трогать лишний раз до нужды. соглашусь с последним высказыванием: хороший код - это тот, который легко тестировать. но если прям сильно горят сроки, лучше написать так себе код, но покрыть его тестами, пусть даже с кучей моков-стабов-заглушек-костылей. просто чтобы ты потом мог к нему чуть позже вернуться и сделать нормально, не потеряв понимания контекста.
так что я всеми конечностями за тесты, не пишут тесты только аутсорсеры, которые на маленькой зп сидят на субподряде, да всякие стартаперы, которым всё горит 😁а потом ты такой на подобный проект приходишь, офигеваешь и уходишь
Кратенько 😂
источник

AL

Anton Lapshin in pro.elixir
"да у нас тут были тесты, но мы проект тут сильно порефакторили, они теперь не работают", а в это время ещё хаотично кто-то сидит и заливает каждым коммитом по 50-100 файлов с изменениями
источник

AL

Anton Lapshin in pro.elixir
Ihor Katkov
Кратенько 😂
есть у меня такой косяк 😢
источник

IK

Ihor Katkov in pro.elixir
честно говоря, странно читать в 2020 о необходимости тестов/юнит-тестов
источник