|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev mayton пропущено... А можно пример такого бага? 1. Решили для упрощения бизнес логики явно писать в БД имеет ли пользователь доступ к объекту или нет (вместо того чтоб вычислять на лету). Написали миграцию, которая проставляет флаг=true если пользователю >18. Но оказалось, что есть исключение - страна, в которой доступ можно разрешать только с 16. И админам (у которых возраст может быть не указан) тоже разрешать. 2. Добавляем новую колонку, знаем что она not null. Сразу же проставили constraint (а след строкой заполняем данными), хотя в таблице есть строки. 3. ... и т.д. Задачи миграции. Апгрейда версий. Или просто одноразовые скрипты - это штучный товар. Они делаются 1 раз в жизни и исполняются один раз. И тестирование для них нужно особое. Я-б даже сказал это не периодическое тестирование а эксклюзивное. Можно договариваться заранее с админами БД Oracle например о подготовке flashback сразу после неудачной миграции. Вобщем все это напоминает полёт на луну. Неформализовываемое. И бесконечно сложное по комплексности. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 18:09 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Мы редко пишем на это тесты. Но если пишем - ну заполняем данными, затем запускаем миграцию, затем проверяем результат. Это больше для background миграций, которые идут длительное время. Для таких приложение должно поддерживать и старые, и новые данные. А так.. как правило у нас есть дамп с прода - на нем куа тестируют вручную. Проходятся по своей тестовой документации, вспоминают что могли упустить, анализируют результат. Вот это самое интересное. Обычный разработчик софта оперирует кодом. Данные для него либо - синтетические. Которые он создает сам. В этом случае он должен фактически выполнить работу по наполнению БД насколько чтобы покрыть максимум краевых кейсов своего запроса. Насколько сложна эта работа? Я думаю - соизмерима с разработкой основной user-story. Либо данные - продуктовые. Дамп с прода - тоже интересная задача. Во многих организациях ИБ его просто не позволит сделать. Прод - слишком ценен. Для этого придумывают невообразимые трансформации данных (отбеливание) с целью убить любую sensitive инфу и обезличить данные кастомера. Это эпика. Мдя. Тут можно отдельный программный продукт создавать. Отбеливатель. Со своими настройками. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2021, 18:16 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Поскольку SQL является декларативным языком то он изначально декларирует свой результат. Хотя я согласен что текст SQL может быть длинными и содержащим вложенные SQL и функции. Но есть качественная разница между SQL и императивным языком. Это примерно как разница между maven и gradle. "Бойся своих желаний они могут исполнится" :-) Так же и с SQL. Ты получаешь то что запрашиваешь. Но может оказаться, что запрос не правильный. И возвращает не то что нужно. Хотя страшнее когда он возвращает не только то что нужно и/или не всё что только нужно. :-) mayton Кроме того инструмент тестирования должен быть проще объекта тестирования. Иначе возникает другой парадокс о правильности самого инструмента и его statement. Или надо писать тест на тест. Вот поэтому и "двигают в народ" unit-test. Т.к. проще написать такой тест, проще протестировать. Да и инструментарий очень простой. Другое дело интеграционные тесты. Там как раз вылазит NP-полная задача (с комбинаторным взрывом) тестирования всех веток БЛ. Поэтому интеграционные тесты не могут быть простыми. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 09:30 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev Третий пример (еще реалистичней) - написали какую-то concurrent структуру данных. И вот тут попробуй еще написать тесты которые бы выявили многопоточные проблемы.. Это - еще сложнее. Я не знаю тестов которые доказывают что мультипоточный код не содержит к примеру дедлоков. Была теория (кажется на базе сетей Петри) что подобные вещи доказывают делая преобразования матриц переходов (transition matrix) для сети которая моделирует проблему. Но эта теория осталась в универах и я никогда не видел чтобы хоть один разработчик ею пользовался. Зачастую только PROD-эксплуатация показывает что в мультипоточном коде есть проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 11:17 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Stanislav Bashkyrtsev Третий пример (еще реалистичней) - написали какую-то concurrent структуру данных. И вот тут попробуй еще написать тесты которые бы выявили многопоточные проблемы.. Это - еще сложнее. Я не знаю тестов которые доказывают что мультипоточный код не содержит к примеру дедлоков. Была теория (кажется на базе сетей Петри) что подобные вещи доказывают делая преобразования матриц переходов (transition matrix) для сети которая моделирует проблему. Но эта теория осталась в универах и я никогда не видел чтобы хоть один разработчик ею пользовался. Зачастую только PROD-эксплуатация показывает что в мультипоточном коде есть проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2021, 11:44 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
а знаете ли вы, что концепции unit-test более чем 40 лет? (первые публикации по теме были в конце 70-ых прошлого века) и как-то никто особо и не пользовался... а почему так? IMHO, потому что @asv79 во многом прав: unit-test - не серебряная пуля. 1. это очень дорого: хорошие unit-test-ы и хорошее покрытие = +50% к бюджету проекта как минимум 2. и даже покрытие в 100% не избавляет совершенно от других видов тестирования; не говоря о том, что есть целые классы задач для которых unit-test-ы бесполезны или очень слабо полезны (как и обсуждалось выше) далёкий от IT бизнес, по сей день, не понимает зачем это надо (сталкиваюсь постоянно) я подозреваю, что первый реальный пропагандист: Kent Beck. он написал о них в своей мега популярной книге( и он же, к слову, создатель JUnit) оно и понятно: в контексте Agile unit-test-ы гораздо более ценны, потому что предполагается постоянный рефакторинг, а рефакторинг это как раз тот случай где unit-test-ы реально полезны. но что прикольно: даже среди Agile евангелистов не все разделяют восторженное отношение к unit-test-ам (Dave Thomas : ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 16:24 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
gmugar1. это очень дорого: хорошие unit-test-ы и хорошее покрытие = +50% к бюджету проекта как минимумЯ пока не встречал проектов в которых модульные тесты замедляли их.. Они оттягивают перевод конкретной задачи в тестирование, но не сроки сдачи самого проекта. Я правда возможно по-другому пониманию "хорошим покрытием". gmugarдалёкий от IT бизнес, по сей день, не понимает зачем это надо (сталкиваюсь постоянно)Никогда этого не понимал.. Откуда бизнес вообще узнает про тесты. Это подноготная программиста, о них никому говорить явно не надо. gmugarоно и понятно: в контексте Agile unit-test-ы гораздо более ценны, потому что предполагается постоянный рефакторинг, а рефакторинг это как раз тот случай где unit-test-ы реально полезны.Рефакторинг есть везде, не только в Agile. И сломать только что работающий функционал тоже можно везде. Не знаю почему бы модульные тесты были как-то связаны с Agile.. gmugarнесмотря на то, что лично я большой поклонник unit-test-ов, я признаю, что они нужны и оправданы очень не всегда(в особенности с 100% coverage) Про 100% покрытие не спорю (речь же про line/branch coverage?). Но интересно когда модульные тесты будут не оправданы? Ну, кроме каких-то прототипов. Я на своей памяти не могу припомнить такой ситуации.. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 18:00 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
gmugar 1. это очень дорого: хорошие unit-test-ы и хорошее покрытие = +50% к бюджету проекта как минимум Никто не ставит таких задач. Ни на одном проекте нам (к примеру) не заказывали процентовку покрытия. Это глупо. Код - не одинаковый. Есть 20% особо важного кода, который представляет собой костяк логики. Его и надо покрыть обязательно. Можное не 20. Можно 15 или 25 не суть важно. Главное что меньшая часть кода обладает большим влиянием на качество продукта. Как по Паретто. А оставшиеся 80% это различного рода интеграции, конфигурации, DSL языки и формальные процедуры оставшиеся от фреймворков. Их покрывать не нужно. Покрытие особо ничего не даст а лишь усложнит поддержку тестов при эволюции. Еще к пользе тестов я-бы добавил что они являют самую актуальную (!) документацию по использованию. Реально! Актуальнее некуда. Никакой JavaDoc и Confluence не сравнится в точности. Читаем как книгу тесты (сверху вниз) и озвучиваем что на наших глазах происходит. Если применять Scala или JBehave(Java) или Spock(Groovy) то некоторые стейтменты можно писать на таком DSL что будет выглядеть как английски текст. Бизнес-аналитики такое любят. Наглядно. И реально работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2021, 19:56 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul mayton Поскольку SQL является декларативным языком то он изначально декларирует свой результат. Хотя я согласен что текст SQL может быть длинными и содержащим вложенные SQL и функции. Но есть качественная разница между SQL и императивным языком. Это примерно как разница между maven и gradle. "Бойся своих желаний они могут исполнится" :-) Так же и с SQL. Ты получаешь то что запрашиваешь. Но может оказаться, что запрос не правильный. И возвращает не то что нужно. Хотя страшнее когда он возвращает не только то что нужно и/или не всё что только нужно. :-) mayton Кроме того инструмент тестирования должен быть проще объекта тестирования. Иначе возникает другой парадокс о правильности самого инструмента и его statement. Или надо писать тест на тест. Вот поэтому и "двигают в народ" unit-test. Т.к. проще написать такой тест, проще протестировать. Да и инструментарий очень простой. Другое дело интеграционные тесты. Там как раз вылазит NP-полная задача (с комбинаторным взрывом) тестирования всех веток БЛ. Поэтому интеграционные тесты не могут быть простыми. интеграционные тесты как по мне полная куйня- какая та ситнтетика ,обвешаная моками лучшие тесты как я уже выяснил это адекватно настроеный пайплайн ,наличие тест стенда и пары хороших макак на должности QA ,умеющих тыкать в постман а все вот это джава тестирование ну оно вроде бы кто то сказал что нужно - а зачем уже давно забыли,как по мне просто юзлес хрень- у нас весь код в тестах ,coverage 90% и в реальности - разрабы только тратят время на актуализацию,а тестировщики потом находят все баги поэтому как только я где то стану лидом) я тут же выпилю все тесты ,разгружу разрабов от поддержки и написания этой куйни ,а на высвободившиеся деньги найму пару QA макак их пту) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 20:20 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Еще к пользе тестов я-бы добавил что они являют самую актуальную (!) документацию по использованию. Реально! Актуальнее некуда. Никакой JavaDoc и Confluence не сравнится в точности. Читаем как книгу тесты (сверху вниз) и озвучиваем что на наших глазах происходит.. Полнейшая хрень- никогда по тестам ты реально не поймешь что в коде происходит,ибо как ты выше заметил тесты обычно покрывают 20-30% Давно уже надо признать ,что тесты это ярмо- которое тянет на себе разраб,а вот зачем - большой вопрос Мой ответ - ну типо так принято,мы так привыкли,а вдруг на проде что то вылезет))ну какие то вообще не состоятельные пруфы,а бизнес за это платит Ни какие тесты никогда не исключат багов в вашем апе,по большому счету поддержка и написание этих тестов выливается в очень большие суммы с нулевым бизнес велью к сожалению ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 20:25 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, вот с 2 последними постами- на 100500% согласен. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 20:29 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79поэтому как только я где то стану лидом)Я надеюсь что это случится не раньше чем лет через 10 (хотя в наше время в общем-то и младших разработчиков назначают от безысходности). А к тому времени, если повезет, еще многое в голове поменяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 20:34 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, сам автор кода и не подозревает, сколько может быть вариантов не учтённых им комбинаций, которые может ввести хороший юзер.... да и тестирование какого-то куска кода не гарантирует, что прошедший тесты код, в системе будет работать нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 20:40 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
вадя asv79, вот с 2 последними постами- на 100500% согласен. это моя боль и борьба с лидом - который упорно не понимает,что тратит ресурсы разрабов вникуда требуя покрытия и актуализации по факту что сейчас мы имеем - какой то распухший пак с тестами,в который никто никогда не ходит,но при любом изменении там что то краснеет и ты идешь туда и начинаешь под свой код подкручивать эти тесты - вопрос ну и нах они нужны? Я как выше говорил воспринимаю нормально только SLA тесты,где видна хоть какая то польза - типо да не проходим по откклику и тд а когда я на входе подал 3+3 и ожидаю 6 ,причем эта 6ка где то замокана в мок репе ну и нахой оно?какой то непонятный секс в извращенной форме ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 20:41 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev asv79поэтому как только я где то стану лидом) Я не хотел говорить,но это уже случилось) Вся тест помойка скоро будет выпелена,так как я вижу что 20% уходит на актуализацию,при нулевом бизнес велью) Чего и вам советую- включайте голову и задавайте сами себе вопросы - когда в последний раз тесты принесли вам не актуализацию очередную в виде выделенного на целый спринт разраба/20% времени команды ,а какую то реальную - ощутимую пользу если чо я не бизнес) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 21:33 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79а когда я на входе подал 3+3 и ожидаю 6 ,причем эта 6ка где то замокана в мок репеЕсли у вас в тестировании активно используются моки, то да, это проблема. Но не проблема тестирования, а именно того как вы пишете тесты (и скорей всего - прод код тоже). В том виде как описано выше тестирование и правда большого смысла не имеет. asv79Я не хотел говорить,но это уже случилось)Соболезную.. Но в целом на сегодняшний день это частая проблема.asv79когда в последний раз тесты принесли вам не актуализацию очередную в виде выделенного на целый спринт разраба/20% времени команды ,а какую то реальную - ощутимую пользуНу в моем проекте это каждый день, но у меня очень уж сложная бизнес логика. На проектах по-проще это происходит реже, но все равно достаточно часто. Опять же - сильно зависит от их качества. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 23:22 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev asv79а когда я на входе подал 3+3 и ожидаю 6 ,причем эта 6ка где то замокана в мок репе asv79Я не хотел говорить,но это уже случилось)Соболезную.. Но в целом на сегодняшний день это частая проблема.asv79когда в последний раз тесты принесли вам не актуализацию очередную в виде выделенного на целый спринт разраба/20% времени команды ,а какую то реальную - ощутимую пользуНу в моем проекте это каждый день, но у меня очень уж сложная бизнес логика. На проектах по-проще это происходит реже, но все равно достаточно часто. Опять же - сильно зависит от их качества. сложная бизнес логика это несколько маперов после кафка листенера?) братишь у нас гораздо серьезней логика - просто поверь мне на слово- и все эти тесты себя не оправдывают- так как их поддержка стоит существенных денег- не знаю про ваш вариант,может у вас бесплатно люди работают или просто нихуа не делают ,а судя по тому,что ты на форуме 24/7 то так и есть ) то тогда да,но в любой серьезной конторе так не получится к сожалению и твои доводы становятся несущественными.Хотя я оговорюсь тесты у нас есть - но их бизнес велью стремится к абсолютному нулю,и дело тут не в написании тестов и не в логике ,а в самой системе тестов- ибо тесты тестируют уже написанное - а что новое - оно сразу ломается отсюда простой вывод нах.. они?если сами тесты тупо подгоняются под код ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 23:35 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79братишь у нас гораздо серьезней логика - просто поверь мне на словоЕсли бы я не видел твоих вопросов на этом форуме, может ты бы смог обмануть, ну или хотя бы заставить усомниться.. Но нет :) Излишняя самоуверенность будет сильно замедлять тебя в развитии (речь про годы ).. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2021, 23:52 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev asv79братишь у нас гораздо серьезней логика - просто поверь мне на слово опять же ты кидаешь камень сам в себя,так как не способен к анализу- ведь вполне возможно,что я могу пилить свой собственный проект,который не имеет к моей текущей работе никакого отношения- тоесть твои утверждения заведомо ложны ибо ты должен их проверить,но так как ты плохой программист ,а судя по темам где ты учавствуешь- это так и есть,то тебе простительно. Но между нами есть одно большое НО - я в теме два года и уже лид,а ты скорей всего кратно больше и до сих пор жуешь тут сопли) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 00:13 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79ведь вполне возможно,что я могу пилить свой собственный проект,который не имеет к моей текущей работе никакого отношенияКакая разница, я ж не про тематику вопросов, а про уровень их сложности. asv79я в теме два годаЭто очень заметно, я как раз про два года и думал, хех.. Именно к двум годам чаще всего появляется гонор (у тех у кого он появляется). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 01:08 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Это как в статистике автоводителей. В первые пол года вождения учащаются аварии. Чайники начинают думать что они профи))) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 08:12 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Stanislav Bashkyrtsev, Без обид,вчера я немного пошутил,так что не воспримай всерьез.До лида мне еще далеко. Ну по тестам- на данном этапе и из своего кругозора я вижу ,что они замедляют ,а толку от них нет. Типичный тест- из кафки получаем сообщение и преобразуем его в нужные нам представления,другими словами маппер И вот есть тест,который этот мапер покрывает.Ну вот и для чего он?Если из кафки придет не валидный меседж он не сможет дересеризоваться в объект того класса,который ты ожидаешь в листенере,если на твоей стороне поменялись представления,то у тебя падает тест и ты что идешь делать? правильно править тест,который подгоняется под новые свойства представления и все. Тоесть ситуация когда этот тест реально покраснеет и нужно будет править не сам тест,а код- ну я таких ситуаций вообще не помню,зато на каждом дейли - ой ребята там тесты упали- актуализируйте) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 09:55 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, если интересно - заведи отдельную тему на это. Только распиши чуть подробней. А то я не понял кто генерирует сообщение и почему тест падает: 1. Если это внешняя система, то это круто что тест падает - он показывает что формат двух систем разошелся 2. Если это наши же тесты генерят, то не понятно почему они могут сгенерировать невалидное сообщение.. Или сообщение где-то захардкожено, и его забывают обновлять когда обновляется формат? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2021, 12:35 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Тоесть ситуация когда этот тест реально покраснеет и нужно будет править не сам тест,а код- ну я таких ситуаций вообще не помню,зато на каждом дейли - ой ребята там тесты упали- актуализируйте) Во-о-от для этого тесты и пишут! Человек не может помнить всё. И лучше пусть упадут тесты, чем упадет прод. При актуализации тестов, может оказаться, что нужно будет поменять не только тесты. Кроме того тесты это ещё один источник правды, после самого кода. Ещё раз. unit-test это инструменты разработчика для разработки. Никому кроме разработчика они особо не нужны. Пользу для бизнеса они приносят только в том смысле, что на дальней дистанции, разработчику легче работать с кодом. На короткой дистанции это не так. Нужно время для написания кода тестов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2021, 07:33 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 mayton Еще к пользе тестов я-бы добавил что они являют самую актуальную (!) документацию по использованию. Реально! Актуальнее некуда. Никакой JavaDoc и Confluence не сравнится в точности. Читаем как книгу тесты (сверху вниз) и озвучиваем что на наших глазах происходит.. Полнейшая хрень- никогда по тестам ты реально не поймешь что в коде происходит,ибо как ты выше заметил тесты обычно покрывают 20-30% Давно уже надо признать ,что тесты это ярмо- которое тянет на себе разраб,а вот зачем - большой вопрос Мой ответ - ну типо так принято,мы так привыкли,а вдруг на проде что то вылезет))ну какие то вообще не состоятельные пруфы,а бизнес за это платит Я не знаю как построена система взаимоотноешний у вас на проекте. Но у вас должно быть пристальное и внимательное отношение к ошибкам на проде. Возможно ты - на зарплате и тебе безразлично, терпит убытки владелец ПО или нет. Но очень хорошим карьерным трамплином будет - приближение тебя самого к задачам и проблемам бизнеса. Если ты - чутко реагируешь на эти проблемы - то значит достоин повышения. Если тебе - безразлично то твоё повышение может быть по возрасту лет или там по внутренней аттестации я не знаю. В любом случае понимание рисков бизнеса и - страхование от них это признак seniority. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2021, 11:20 |
|
|
start [/forum/topic.php?fid=59&msg=40077373&tid=2120410]: |
0ms |
get settings: |
27ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
529ms |
get tp. blocked users: |
2ms |
others: | 392ms |
total: | 1029ms |
0 / 0 |