|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 Так вот я эту мысль и хотел озвучить - идея теста просто прекрасна- мы по сути отестим целое направление сервиса плюсы= никаких - так как при любом измененнии как на стороне продюсера так и на стороне консумера - вы будете править не код,а сам тест минусы- достаточно сложная разработка с участием девопса по поднятию тестовой базы на другой стороне весов есть некий Петро,который умеет пользваться постманом и pg4admin он должен взять джейсон из корня проекта,положить его в тело запроса и послать запрос зайти в базу и посмотреть на эту запись на все про все 3 минуты ,если особо тупой QA то 10 минут Мне сложно обсуждать цифры. 3 минуты или 10 минут или раз в год. Но мой опыт подсказывает что ты занят ерундой. Я думаю что у тебя на проекте есть тонна другой полезной работы кода надо применить свои знания. Если ты занимаешся этим просто изучая докер (resume-driven-development) - то я одобрительно промолчу. Делай. Изучай. Но не стоит это преподносить как панацею. Скорее просто тебе так хочется. Самый лучший судья тебе в этом - это code-review тоих коллег. Скорее всего они будут тебя бить за такое нововведение. Первый-же авто-тест со стороны QA мнгновенно проверить всю твою интеграцию и даже лучше и шире во все стороны. А твой докер - будет лишним балластом и скорее всего и его выкинут из проекта. Это вобщем моё IMHO. в реальности у меня на спринте задача проверить работу нашей интеграции через кафку с внешним сервисом и я решил тут это дело автоматизировать и понял насколько это будет трудоемко ,ну и фактически все равно это будет синтетика ( в случае с кафкой- она по другому тестрированию не поддается) ну и тут отписался еще раз на всякий случай о том ,насколько беспомощна нынешняя система тестирования тот кто выпустит фреймворк который позволит на вход давать а и получать ее на выходе -выйграет) сейчас такое тестирование сродни построению какой то мкс- так как приложение имеет тонны завимостей,часть из которых в докере ,часть в облаке и тд поэтому конечно пока QA) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 21:20 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, Ладно, вот какой-то (не очень хороший, например захардкодил имя образа) пример с testcontainers. Примерно за 1 час и сделал (основная проблема была не в докере, я с запросом ошибся XD) Запуск с тестами - mvn verify P.S. мне честно лень делать пример с docker compose + Maven, по идее можно начинать копать с вот этого плагина: https://dmp.fabric8.io. Ну или например: https://github.com/daggerok/docker-compose-maven-plugin-example ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 23:15 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 в реальности у меня на спринте задача проверить работу нашей интеграции через кафку с внешним сервисом и я решил тут это дело автоматизировать и понял насколько это будет трудоемко ,ну и фактически все равно это будет синтетика ( в случае с кафкой- она по другому тестрированию не поддается) ну и тут отписался еще раз на всякий случай о том ,насколько беспомощна нынешняя система тестирования тот кто выпустит фреймворк который позволит на вход давать а и получать ее на выходе -выйграет) сейчас такое тестирование сродни построению какой то мкс- так как приложение имеет тонны завимостей,часть из которых в докере ,часть в облаке и тд поэтому конечно пока QA) Ну дык правильно любой интеграционный тест, это сложно. А уж тестирование интеграции, это сложно в кубе. И кафка тут не при чем. Самый простой способ, это подготовить тестовые кейсы. Т.е. на вход подаем такие данные, на выходе получаем вот такие данные. Для начала подготовить необходимый минимум. Т.е. правильный вход - правильный результат. Много данных не надо, только то что действительно нужно. А далее по мере эксплуатации добавлять тесты с данными, на которых возникали ошибки. При этом должны быть "тестовая" среда. Имхо, можно напрячь девопсов, чтобы они для прогона тестов поднимали, в кубере например, нужные докер образы (типа моков). А в тестируемое приложение передавались параметры, что где лежит. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.06.2021, 07:38 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Lelouch asv79, Ладно, вот какой-то (не очень хороший, например захардкодил имя образа) пример с testcontainers. Примерно за 1 час и сделал (основная проблема была не в докере, я с запросом ошибся XD) Запуск с тестами - mvn verify P.S. мне честно лень делать пример с docker compose + Maven, по идее можно начинать копать с вот этого плагина: https://dmp.fabric8.io. Ну или например: https://github.com/daggerok/docker-compose-maven-plugin-example то что вы сделали делается одной анотацией @DataJpaTest за одну минуту вопрос был как затетист цепочку из реста+ кафка+ репа ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 10:37 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 то что вы сделали делается одной анотацией @DataJpaTest за одну минуту вопрос был как затетист цепочку из реста+ кафка+ репа Хм... зачем в этой цепочке кафка? А так реста + кафка, можно тестировать через embedded kafka Аналогично можно протестировать кафка + репа. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 11:50 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul asv79 то что вы сделали делается одной анотацией @DataJpaTest за одну минуту вопрос был как затетист цепочку из реста+ кафка+ репа Хм... зачем в этой цепочке кафка? А так реста + кафка, можно тестировать через embedded kafka Аналогично можно протестировать кафка + репа. <:o) а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету? мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?)) это что то сродни - давай я протестирую секс с негритянкой - ну на тебе шоколадный пирог )) я про что и говорю нет инструментов то то для тестирования нормальных. вот если бы можно было поднять в тест контейнере реплику вашего приложения со всеми зависимостями и получить некий апи- чтобы я мог перед деплоем автомтически послалатьна тестовый рест себе некий джейсон и потом силами этого чудо фремворка посмотреть что легло в базу вот что я хочу ,а вся эта тест чехарда с эмбдед базами и кафками- анонизм - не несущий ничего кроме денег на ветер) единственно что хочу отметить - очень неплохая либа по тестированию дата слоя zonki,очень крутой инструмент которой реплицируют вашу бд из миграциионных скриптов,использует ваши интерфейсы и по сути является почти тем ,что я хочу ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 12:27 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 mad_nazgul пропущено... Хм... зачем в этой цепочке кафка? А так реста + кафка, можно тестировать через embedded kafka Аналогично можно протестировать кафка + репа. <:o) а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету? мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?)) С моей точки зрения тестировать кафку - это все равно что тестировать tcp-проткол. Что ты протестируешь? Что месседж ходит по ней? Или что пароль подошёл. В этой схеме ты тестируешь буквально настройки на соответсвие. А это вынуждает тебя хранить в тестах полную копию настроек что само по себе ОООЧЕНЬ странно. Другие разрабы подумают что ты нашел очень забористый кальян. Покурил его и вдруг... придумал тестить настройки протокола. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 13:29 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету? мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?)) С моей точки зрения тестировать кафку - это все равно что тестировать tcp-проткол. Что ты протестируешь? Что месседж ходит по ней? Или что пароль подошёл. В этой схеме ты тестируешь буквально настройки на соответсвие. А это вынуждает тебя хранить в тестах полную копию настроек что само по себе ОООЧЕНЬ странно. Другие разрабы подумают что ты нашел очень забористый кальян. Покурил его и вдруг... придумал тестить настройки протокола. я думаю это дело времени - когда напишут такую либу для даты уже есть зонки- которое на вход берет твои рабочие конфиги( ничего не надо нигдк проиписывать сам все найдет) и генерирует в докере инстанс твоей бд- это очень круто,ребята прям молодцы тоже самое бы и для приложения целиком - некая либа генерирует в докере инстанст твоего приложения и дает тебе апи для написания удобных тестов- например sendT0Controoler("/fdf",Object o) и этот метод шлет твоему приложению этот объект ,оно его обрабатывает и ты его можешь например посмотреть в бд- каким то методом типо getFromDb( "tableName",...) вот это бы уже было похоже на что то полезное - и ведь я думаю что для ребят ,которые такие фрймворки пишут - задача то прям не сильно чтобы сложная ) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 15:44 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету? мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?)) Потому что kafka тестировать не надо. Тестировать настройки... Может быть вы ещё тестируете подключение jdbc-драйверов к БД?! ИМХО в большинстве случаев для работы с kafka, нужно указать аннотацию @KafkaListener (с нужными параметрами) для получения данных. И использовать kafkaTemplate для передачи данных. Embedded Kafka позволяет протестировать прием и передачу данных. Как бы хозяин-барин. Я просто предложил рассмотреть такое решение. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 16:17 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Просто господа ушли от конкретной темы тестирования приватного метода в бла бла ни о чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 17:44 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul asv79 а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету? мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?)) Потому что kafka тестировать не надо. Тестировать настройки... Может быть вы ещё тестируете подключение jdbc-драйверов к БД?! ИМХО в большинстве случаев для работы с kafka, нужно указать аннотацию @KafkaListener (с нужными параметрами) для получения данных. И использовать kafkaTemplate для передачи данных. Embedded Kafka позволяет протестировать прием и передачу данных. Как бы хозяин-барин. Я просто предложил рассмотреть такое решение. <:o) а зачем мне тестировать то,что у меня на проекте не будет в работе? параметры как раз таки важны - там столько настоект безопасности и прочего что видя эту ямл портянку становится худо) @Embded kaffku я знаю,не понимаю просто для чего она - если я хочу тестировать боинг а мне посовывают жигули с аргументами - а шо боенг тестировать он и в африке боинг ,бери жигули - поедут если ,значит и боенг поедет)))ну вот щас это как то так выглядит) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:00 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 а зачем мне тестировать то,что у меня на проекте не будет в работе? параметры как раз таки важны - там столько настоект безопасности и прочего что видя эту ямл портянку становится худо) @Embded kaffku я знаю,не понимаю просто для чего она - если я хочу тестировать боинг а мне посовывают жигули с аргументами - а шо боенг тестировать он и в африке боинг ,бери жигули - поедут если ,значит и боенг поедет)))ну вот щас это как то так выглядит) Тестировать боинг на живую дорого. Вам предлагают аэродинамическую трубу, в которой можно протестировать макет боинга. А вы говорите, что на макете нельзя протестировать обивку салона. <:o) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 18:30 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul Тестировать боинг на живую дорого. Вам предлагают аэродинамическую трубу, в которой можно протестировать макет боинга. А вы говорите, что на макете нельзя протестировать обивку салона. <:o) а также нельзя протестировать взлет и посадку- а лишь получить динамический коэф сопротивления))) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:18 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mad_nazgul Тестировать боинг на живую дорого. вот наконец то до истины добрались ) тестирование в трубе дешево - но не даст ни каких результатов- в трубе нельзя взлететь или посадить самолет,испытать шасси и управление) зато это дешево ,а мой вопрос тогда зачем вообще что то тестироовать ? если фактически сейчас все тесты это голимая синтетика = считай твоя труба- причем и это далеко не дешево и эти тесты не отражают толком ничего ,кроме человеко часов ,которые были потрачены впустую разработчиками так еще все это надо поддерживать лучший тест боинга - это летчик испытатель лучший тест вашего приложения это тестиовщик все остальное - называемое тестами- это такое себе ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:24 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79, Долой экзамены в школах. Это тесты! Че за бред какой то) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 19:45 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Тема интересная. Позвольте мне тоже тогда позадавать пару вопросов: 1. Есть у нас маппер. На входе у него объект, полученный из xml - все уровни вложенности исходной xml в объекте сохранены, на выходе - плоская entity для базы. У входного объекта около 50-60 полей (так сложилось). Поля перекладываются со всякими разными обработками - много if'ов (если это и это поле заполнены, то заполни поле так-то), каких-то обработок строк, дат и т.д. Для удобства навигации по классу все обработки разбиты на методы согласно вложенности xml (ну, в разумных пределах). И эти методы приватные. С одной стороны понятно, что можно тестировать через public метод маппера, но тогда проверка правильности обработки какого-нибудь глубоко вложенного поля весьма затратно по времени (надо ведь до этого поля еще по всем условиям добраться) С другой стороны, если написать тесты на каждый метод отдельно (например с использованием библиотечки WhiteBox), то это позволяет проверить маппинг конкретных полей быстрее и проще Вот как лучше все же поступать? (Хотя вы тут 8 страниц обсуждали, что тестить private методы - это фуфу =) ) 2. Упоминалось, что наличие mock'ов и PowerMock - это плохой тон. Можно ли чуть подробнее, почему? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.06.2021, 21:46 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein, Надо убрать из маппинга БЛ и тестировать будет нечего. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 07:13 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp Timein, Надо убрать из маппинга БЛ и тестировать будет нечего. а куда ее убрать-то? Где-то все равно эти обработки должны быть ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:16 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein PetroNotC Sharp Timein, Надо убрать из маппинга БЛ и тестировать будет нечего. а куда ее убрать-то? Где-то все равно эти обработки должны быть Вы опишите что там у вас сложного ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:28 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein, Или например маппинг входа - усложнили что xml а не json - усложнили что 60 полей - усложнили что "куча if" А теперь спрашиваете как тестировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:31 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein PetroNotC Sharp Timein, Надо убрать из маппинга БЛ и тестировать будет нечего. а куда ее убрать-то? Где-то все равно эти обработки должны быть Я думаю что он прав. Если разделить эту логику на два слоя. 1) Слой мапперов (XML -> StructuredJavaObject -> PlainJavaObject) 2) Слой всяких там if-else После этого тестирование упрощается. Да ... и когда мы тестим вход с 7-15 dimensions то лучше писать модульные тесты которые покроют основные кейсы. И PBT-tests что-б покрыть 100500 миллиардов прочих технических кейсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:49 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton, Согласен. Вообще сам рест придуман чтобы стандартно передавать один объект без связей чем один боооольшой большой бизнес Обь ект. Сам тренд счас в делении (микросервисы) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 10:56 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton, Я могу путаться в терминологии. Я правильно понимаю, что предполагается: 1) поля StructuredJavaObject впрямую переложить в PlainJavaObject1 (как есть, один к одному) 2) Из PlainJavaObject1 переложить с обработкой в PlainJavaObject2 (так как состав полей может не совпадать) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:17 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Timein, Если не бъет состав полей, то это ерунда. Решаетя маппингом аннотациями. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:25 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, а можно немного подробнее каким образом? К примеру, в первом объекте у меня два поля - число и строка, а во втором пять - число и пять строк. Строка из первого объекта парсится по определенным условиям и полученные значения раскладываются по пяти полям. Как аннотацией и какой это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.06.2021, 11:45 |
|
|
start [/forum/topic.php?fid=59&msg=40079484&tid=2120410]: |
0ms |
get settings: |
23ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
514ms |
get tp. blocked users: |
2ms |
others: | 380ms |
total: | 1002ms |
0 / 0 |