|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Вот что по сути нужно,это коменнты на коде - ты тут нагадил - а потом после тебя люди приходят и гадают ,а что это такое и что он хотел- доходит до такого ,что никто не в состоянии понять для чего вот это поле в классе и какой в нем смысл) По поводу каментов в коде. Мой опыт показывает что их не актуализируют. Тоесть грубо говоря ты написал тонну текста. Потом зашел другой разраб. Код поменял а камент проигнорил. Далее - ситуация усугубляется. Есть код и есть текст которые друг другу противоречат. И если контроль над кодом идет через тестирование то контроля над каментами нет вообще никакого. Дай бох его прочитают во время код-ревью и дадут по шапке. Но я готов спорить на виски (и выигрывать) что нечитают и не актуализируют. Или нужно иметь на проекте отдельного человека (теч-райтера) который будет буквально отвечать за документацию в Doxia, JavaDoc, Confluence e.t.c. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 15:12 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79, тыж в банке верно? Значит в разработке есть своя цена ошибки. Это как страховка. Ты платишь по чуть-чуть чтобы для прод-релиза иметь больше гарантий что ты ничего не сломал внося изменения. То что ты говоришь про тестовые стенды - это другая часть работы. Это наверное отвественность QA. Но QA не тестирует нефункциональное минорное и техническое. Всякие там NPE и прочее. Они конешно могут это найти случайно. Но репутация сектора разработки тоже страдает. Выж не должны выкатывать забагованный по самую крышу рализ-кандидат. Надо как-то проявить аккуратность. Репутационный вопрос вобщемто. в банке - и вот честно скажу за 2 года работы я ни разу не видел такого момента,чтобы эти тесты что то там отловили,кроме того,что при любых изменениях приходится еще и тесты актуализировать - по факту двойная работа. Я могу тебе сказать как произсходит приемка релиза,сначала все это тестируют QА,потом это выкатывается все на препрод ,где уже проходит ПСИ ,далее прод с двух недельным гарантийным обязательством- далее этот релиз уходит из нашей зоны ответственности тоесть понятно что баги могут вылезти и они вылазят вне зависимости от тестов по факту при сборке в ста случаях из ста за мою практику когда падает тест- ты идешь и правишь тест)вот и вся цена этим тестам ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 17:13 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Странная практика, странная статистика Юнит тесты они еще и как регрессивные тесты работают. Если при серьезном модификации кода, тесты ни разу ни одной ошибки не нашли то: 1. или программисты святые и ошибок не допускают 2. или серьезной модификации кода не делали 3. или тесты - ..... IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 17:24 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 Вот что по сути нужно,это коменнты на коде - ты тут нагадил - а потом после тебя люди приходят и гадают ,а что это такое и что он хотел- доходит до такого ,что никто не в состоянии понять для чего вот это поле в классе и какой в нем смысл) По поводу каментов в коде. Мой опыт показывает что их не актуализируют. Тоесть грубо говоря ты написал тонну текста. Потом зашел другой разраб. Код поменял а камент проигнорил. Далее - ситуация усугубляется. Есть код и есть текст которые друг другу противоречат. И если контроль над кодом идет через тестирование то контроля над каментами нет вообще никакого. Дай бох его прочитают во время код-ревью и дадут по шапке. Но я готов спорить на виски (и выигрывать) что нечитают и не актуализируют. Или нужно иметь на проекте отдельного человека (теч-райтера) который будет буквально отвечать за документацию в Doxia, JavaDoc, Confluence e.t.c. да к сожалению это так и есть. Не тесты конечно есть и полезные- например те,которые чекают время запроса,выполенния метода,записи там в бд и тд где по SLA мы видим вкатываемся мы в нормы ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 17:26 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 в банке - и вот честно скажу за 2 года работы я ни разу не видел такого момента,чтобы эти тесты что то там отловили,кроме того,что при любых изменениях приходится еще и тесты актуализировать - по факту двойная работа. Я могу тебе сказать как произсходит приемка релиза,сначала все это тестируют QА,потом это выкатывается все на препрод ,где уже проходит ПСИ ,далее прод с двух недельным гарантийным обязательством- далее этот релиз уходит из нашей зоны ответственности тоесть понятно что баги могут вылезти и они вылазят вне зависимости от тестов по факту при сборке в ста случаях из ста за мою практику когда падает тест- ты идешь и правишь тест)вот и вся цена этим тестам Посмотри Code-coverage. Sonar показывает или Jacoco плагин. Возможно у тебя нужный и полезный код просто не покрыт. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 17:34 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Не тесты конечно есть и полезные- например те,которые чекают время запроса,выполенния метода,записи там в бд и тд где по SLA мы видим вкатываемся мы в нормы SLA/Performance - это немножко другое. Это не про correctness а это фактически проверка того что изменения не просадили перформанс. И эти тесты не закрепляют бизнес-логику. Обычно такая задача перед ними не стоит. Они утверждают например что скорость канала месседжей например не меньше чем 100 штук в секунду. Понятное дело что такие тесты не будут ловить логические баги. А они скорее закрепляют собой инфра-структурные метрики. Сеть там... сервисы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 17:47 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 в банке - и вот честно скажу за 2 года работы я ни разу не видел такого момента,чтобы эти тесты что то там отловили,кроме того,что при любых изменениях приходится еще и тесты актуализировать - по факту двойная работа. Я могу тебе сказать как произсходит приемка релиза,сначала все это тестируют QА,потом это выкатывается все на препрод ,где уже проходит ПСИ ,далее прод с двух недельным гарантийным обязательством- далее этот релиз уходит из нашей зоны ответственности тоесть понятно что баги могут вылезти и они вылазят вне зависимости от тестов по факту при сборке в ста случаях из ста за мою практику когда падает тест- ты идешь и правишь тест)вот и вся цена этим тестам Посмотри Code-coverage. Sonar показывает или Jacoco плагин. Возможно у тебя нужный и полезный код просто не покрыт. у нас покрыто все - сам понимаешь зона отвественности- хотя как я уже говорил - толку просто ноль а вот slшки - как раз очень часто помогают,так как сам понимаешь на хайлоад системах очень важны такие моменты ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 18:53 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 mayton пропущено... Посмотри Code-coverage. Sonar показывает или Jacoco плагин. Возможно у тебя нужный и полезный код просто не покрыт. у нас покрыто все - сам понимаешь зона отвественности- хотя как я уже говорил - толку просто ноль а вот slшки - как раз очень часто помогают,так как сам понимаешь на хайлоад системах очень важны такие моменты Ты выше пишешь про "двойную работу". Тесты должны писаться так чтобы их поддержка не занимала столько-же времени сколько и написание основного кода. Если у вас тесты настолько сложны и трудозатратны - то проанализируйте ГДЕ сложно и просто выкиньте это из покрытия. Перепишите проще. Выкиньте @SpringBoorTest. Напишите обычные без фреймворка. Если бизнес функция не позволяет - выделите функцию в чистый (pure) java class. Обычно мне это всегда удавалось. И жить будет проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 19:00 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Ты выше пишешь про "двойную работу". Тесты должны писаться так чтобы их поддержка не занимала столько-же времени сколько и написание основного кода. Если у вас тесты настолько сложны и трудозатратны - то проанализируйте ГДЕ сложно и просто выкиньте это из покрытия. Перепишите проще. Выкиньте @SpringBoorTest. Напишите обычные без фреймворка. Если бизнес функция не позволяет - выделите функцию в чистый (pure) java class. Обычно мне это всегда удавалось. И жить будет проще.[/quot] любая поддержка это уже поддержка,будь то самые простые юнит тесты или интеграционные - их нужно постоянно актуализировать когда много кода,тестов тоже много,зачастую при даже не самом большом рефакторинге приходится делать сопоставимый объем работы и в тестах-это супер накладно ,нулевое бизнес велью ,около нулевое девелопер велью ну может ток тестировшики тебе спасибо скажут ,что один раз в тысячу лет ты что то там тестами этими не пропустил) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 23:50 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev Странная практика, странная статистика Юнит тесты они еще и как регрессивные тесты работают. Если при серьезном модификации кода, тесты ни разу ни одной ошибки не нашли то: 1. или программисты святые и ошибок не допускают 2. или серьезной модификации кода не делали 3. или тесты - ..... IMHO при серьезной модификации кода тесты ломаются и это очевидно что их приходится актуализировать- что может там поймать поломанный тест? программисты не святые,но есть жеское код ревью - я знаю ,что во многих конторах на эту часть разработки почему то кладут болт,а потом у них тесты краснеют - что не удивительно) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 23:52 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, слышал про PBT? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2021, 12:03 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Ты выше пишешь про "двойную работу". Тесты должны писаться так чтобы их поддержка не занимала столько-же времени сколько и написание основного кода. Если у вас тесты настолько сложны и трудозатратны - то проанализируйте ГДЕ сложно и просто выкиньте это из покрытия. Перепишите проще. Выкиньте @SpringBoorTest. Напишите обычные без фреймворка. Если бизнес функция не позволяет - выделите функцию в чистый (pure) java class. Обычно мне это всегда удавалось. И жить будет проще. Ну ты сказал! Может ещё "Чистый код" посоветуешь почитать?! Какое еще single responsibility! Тут таску надо закрывать, а не тесты писать! <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 09:12 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
При чем тут чистый код? Чувак неделю пишет user story. Потом еще неделю - тесты по ней. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 11:01 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton При чем тут чистый код? Чувак неделю пишет user story. Потом еще неделю - тесты по ней. При том, что тестируемость, ходит где-то рядом с чистым кодом и принципом single responsibility :-) Когда принцип single responsibility нарушается, то сразу возникает вопрос как тестировать private-методы :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 12:07 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul Когда принцип single responsibility нарушается, то сразу возникает вопрос как тестировать private-методы :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 13:18 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul mayton При чем тут чистый код? Чувак неделю пишет user story. Потом еще неделю - тесты по ней. При том, что тестируемость, ходит где-то рядом с чистым кодом и принципом single responsibility :-) Когда принцип single responsibility нарушается, то сразу возникает вопрос как тестировать private-методы :-) Я к похожему умозаключению пришел, один из заказчиков потребовал 100 процентное покрытие. Если закрыть тяжело все кейсы приватного метода закрыть через публичный то значит скорее всего приватный метод не должен быть приватным, и нужно выносить в отдельный класс ибо слишком много он делает. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 15:11 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 ... при серьезной модификации кода тесты ломаются и это очевидно что их приходится актуализировать- что может там поймать поломанный тест? 1. модификация бывает не только с изменением функциональности. Например: 1.1. перформанс 1.2. рефакторинг 1.3. переход на новые библиотеки/принципы взаимодействия (например я мигрировал большой проект с tcp/ip socket на nio) и так далее и так далее 2. даже если и новые добавочные требования к функциональности, то обычно они НЕполностью заменяют старые, а лишь в какой-то части. И самое сложное, убедится, что "мелкое" исправление не поломало старый функционал и так далее и так далее И так вроде очевидно, для чего нужно regression test'ы. Нормые unit test'ы, обычно regression вполне заменяют и проблемы реально находят и помогают их решать. AFAIK. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 16:30 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Некоторые - вкладываются в страховку. Некоторые - нет. Скорее от проекта зависит. Я видел некоторые UI проекты в которых вообще ни одного авто-теста нет. Там - полностью полагаются на мануальное тестирование. Поэтому тестировать или нет - это договорённость в команде. Самому продакт-овнеру вобщем-то все равно пишем мы тесты или нет. А так - по топику вообще-то ответ всем очевиден. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2021, 18:21 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton некоторые UI проекты в которых вообще ни одного авто-теста нет. Там - полностью полагаются на мануальное тестирование ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 13:19 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
am_sasa mayton некоторые UI проекты в которых вообще ни одного авто-теста нет. Там - полностью полагаются на мануальное тестирование Вот js - нужно постоянно тестировать. :-) А SQL просто сложно тестировать, т.к. инструменты для тестирования около нуля. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 15:56 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Поскольку SQL является декларативным языком то он изначально декларирует свой результат. Хотя я согласен что текст SQL может быть длинными и содержащим вложенные SQL и функции. Но есть качественная разница между SQL и императивным языком. Это примерно как разница между maven и gradle. Кроме того инструмент тестирования должен быть проще объекта тестирования. Иначе возникает другой парадокс о правильности самого инструмента и его statement. Или надо писать тест на тест. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:17 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Поскольку SQL является декларативным языком то он изначально декларирует свой результат. Хотя я согласен что текст SQL может быть длинными и содержащим вложенные SQL и функции. Но есть качественная разница между SQL и императивным языком. Это примерно как разница между maven и gradle. maytonКроме того инструмент тестирования должен быть проще объекта тестирования. Иначе возникает другой парадокс о правильности самого инструмента и его statement. Или надо писать тест на тест.Не знаю откуда такие требования взялись. Как инструмент для тестирования, так и сами тесты могут быть значительно сложней основного кода. И сил нужно будет потратить на тестирование намного больше чем на написание прод кода. Все зависит от того сколько гарантий мы хотим получить, насколько важно чтоб код работал верно. Если мы пишем какое-то второстепенное ПО для банка - народ переживет даже если оно совсем работать не будет. А если это софт для управления самолетами, ракетами, АЭС - то тут же совсем другой разговор. Тут и PBT, и MBT, и чего только не прийдется использовать. И конечно же сами инструменты для тестирования должны быть протестированы. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:31 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Какая разница декларативен он или нет? Я в SQL много багов встречаю как минимум потому что мы не все про данные знаем/помним, какие-то моменты забываются и опа - миграция свалилась. Или того хуже - прошла, но неверно. Плюс бывает не по той ветке join'ов пошли и собрали не те данные. А можно пример такого бага? И мне также интересно как вы подготавливаете данные для подобного тестирования? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:37 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Не знаю откуда такие требования взялись. Как инструмент для тестирования, так и сами тесты могут быть значительно сложней основного кода. И сил нужно будет потратить на тестирование намного больше чем на написание прод кода. Хотел бы я на это посмотреть. Если вы доказываете теорему Пифагора - вы можете привлекать рассуждения более простого порядка чем сама теорема. Можете брать аксиомы. Но вы не можете доказать теорему Пифагора через Теорему Косинусов. Это абсурд. Никто не примет такое доказательство. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 16:39 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Stanislav Bashkyrtsev Какая разница декларативен он или нет? Я в SQL много багов встречаю как минимум потому что мы не все про данные знаем/помним, какие-то моменты забываются и опа - миграция свалилась. Или того хуже - прошла, но неверно. Плюс бывает не по той ветке join'ов пошли и собрали не те данные. А можно пример такого бага? 1. Решили для упрощения бизнес логики явно писать в БД имеет ли пользователь доступ к объекту или нет (вместо того чтоб вычислять на лету). Написали миграцию, которая проставляет флаг=true если пользователю >18. Но оказалось, что есть исключение - страна, в которой доступ можно разрешать только с 16. И админам (у которых возраст может быть не указан) тоже разрешать. 2. Добавляем новую колонку, знаем что она not null. Сразу же проставили constraint (а след строкой заполняем данными), хотя в таблице есть строки. 3. ... и т.д. maytonИ мне также интересно как вы подготавливаете данные для подобного тестирования?Мы редко пишем на это тесты. Но если пишем - ну заполняем данными, затем запускаем миграцию, затем проверяем результат. Это больше для background миграций, которые идут длительное время. Для таких приложение должно поддерживать и старые, и новые данные. А так.. как правило у нас есть дамп с прода - на нем куа тестируют вручную. Проходятся по своей тестовой документации, вспоминают что могли упустить, анализируют результат. maytonНо вы не можете доказать теорему Пифагора через Теорему Косинусов. Это абсурд. Никто не примет такое доказательство.Во-первых, в математике бывает что доказывают/высчитывают что-то более простое какими-то более сложными (я счас не говорю про цикличность) абстракциями. Типа посчитать площадь четырехугольника с помощью cross product'a двух векторов. А во-вторых, мы про доказательства (где цикличность нежелательна) ничего не говорили - мы говорим про протестировать . А тут уж крути-верти как хочешь, твоя задача просто написать два куска кода результат которых будет совпадать. Ну и возьмем что-то наглядное.. Вот к примеру вынесли зачем-то операцию умножения в функцию и хотим протестировать. Реализовать такое легко, а написать PBT тесты, да еще и не заглядывая в википедию - эт уже не каждый сможет. Другой пример (более реалистичный) - test oracle. Хотим какую-то структуру данных реализовать. Более простую чем что-то существующее в Java SDK, с меньшим функционалом, но быстрей. Как мы ее будем тестировать? Можем написать MBT с использованием стандартной реализации в качестве модели. И получается тестируем более простой код более сложным. Третий пример (еще реалистичней) - написали какую-то concurrent структуру данных. И вот тут попробуй еще написать тесты которые бы выявили многопоточные проблемы.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 17:12 |
|
|
start [/forum/topic.php?fid=59&startmsg=40075703&tid=2120410]: |
0ms |
get settings: |
18ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
422ms |
get tp. blocked users: |
1ms |
others: | 371ms |
total: | 894ms |
0 / 0 |