powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование private методов
25 сообщений из 215, страница 8 из 9
Тестирование private методов
    #40079475
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79

Так вот я эту мысль и хотел озвучить - идея теста просто прекрасна- мы по сути отестим целое направление сервиса
плюсы= никаких - так как при любом измененнии как на стороне продюсера так и на стороне консумера - вы будете править не код,а сам тест
минусы- достаточно сложная разработка с участием девопса по поднятию тестовой базы

на другой стороне весов есть некий Петро,который умеет пользваться постманом и pg4admin
он должен взять джейсон из корня проекта,положить его в тело запроса и послать запрос
зайти в базу и посмотреть на эту запись

на все про все 3 минуты ,если особо тупой QA то 10 минут

Мне сложно обсуждать цифры. 3 минуты или 10 минут или раз в год. Но мой опыт подсказывает
что ты занят ерундой. Я думаю что у тебя на проекте есть тонна другой полезной работы кода надо применить свои
знания.

Если ты занимаешся этим просто изучая докер (resume-driven-development) - то я одобрительно промолчу. Делай.
Изучай. Но не стоит это преподносить как панацею. Скорее просто тебе так хочется.

Самый лучший судья тебе в этом - это code-review тоих коллег. Скорее всего они будут тебя бить за такое нововведение.

Первый-же авто-тест со стороны QA мнгновенно проверить всю твою интеграцию и даже лучше и шире во все
стороны. А твой докер - будет лишним балластом и скорее всего и его выкинут из проекта.

Это вобщем моё IMHO.

в реальности у меня на спринте задача проверить работу нашей интеграции через кафку с внешним сервисом и
я решил тут это дело автоматизировать и понял насколько это будет трудоемко ,ну и фактически все равно это будет синтетика
( в случае с кафкой- она по другому тестрированию не поддается)
ну и тут отписался еще раз на всякий случай о том ,насколько беспомощна нынешняя система тестирования
тот кто выпустит фреймворк который позволит на вход давать а и получать ее на выходе -выйграет)
сейчас такое тестирование сродни построению какой то мкс- так как приложение имеет тонны завимостей,часть из которых в докере ,часть в облаке и тд
поэтому конечно пока QA)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079484
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
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079497
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79

в реальности у меня на спринте задача проверить работу нашей интеграции через кафку с внешним сервисом и
я решил тут это дело автоматизировать и понял насколько это будет трудоемко ,ну и фактически все равно это будет синтетика
( в случае с кафкой- она по другому тестрированию не поддается)
ну и тут отписался еще раз на всякий случай о том ,насколько беспомощна нынешняя система тестирования
тот кто выпустит фреймворк который позволит на вход давать а и получать ее на выходе -выйграет)
сейчас такое тестирование сродни построению какой то мкс- так как приложение имеет тонны завимостей,часть из которых в докере ,часть в облаке и тд
поэтому конечно пока QA)


Ну дык правильно любой интеграционный тест, это сложно.
А уж тестирование интеграции, это сложно в кубе.
И кафка тут не при чем.
Самый простой способ, это подготовить тестовые кейсы.
Т.е. на вход подаем такие данные, на выходе получаем вот такие данные.
Для начала подготовить необходимый минимум.
Т.е. правильный вход - правильный результат. Много данных не надо, только то что действительно нужно.
А далее по мере эксплуатации добавлять тесты с данными, на которых возникали ошибки.
При этом должны быть "тестовая" среда.

Имхо, можно напрячь девопсов, чтобы они для прогона тестов поднимали, в кубере например, нужные докер образы (типа моков).
А в тестируемое приложение передавались параметры, что где лежит.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079757
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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 за одну минуту
вопрос был как затетист цепочку из реста+ кафка+ репа
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079788
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79

то что вы сделали делается одной анотацией @DataJpaTest за одну минуту
вопрос был как затетист цепочку из реста+ кафка+ репа


Хм... зачем в этой цепочке кафка?

А так реста + кафка, можно тестировать через embedded kafka
Аналогично можно протестировать кафка + репа.

<:o)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079801
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
asv79

то что вы сделали делается одной анотацией @DataJpaTest за одну минуту
вопрос был как затетист цепочку из реста+ кафка+ репа


Хм... зачем в этой цепочке кафка?

А так реста + кафка, можно тестировать через embedded kafka
Аналогично можно протестировать кафка + репа.

<:o)

а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету?
мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?))

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

единственно что хочу отметить - очень неплохая либа по тестированию дата слоя zonki,очень крутой инструмент которой реплицируют вашу бд из миграциионных скриптов,использует ваши интерфейсы и по сути является почти тем ,что я хочу
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079829
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mad_nazgul
пропущено...


Хм... зачем в этой цепочке кафка?

А так реста + кафка, можно тестировать через embedded kafka
Аналогично можно протестировать кафка + репа.

<:o)

а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету?
мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?))

С моей точки зрения тестировать кафку - это все равно что тестировать tcp-проткол.
Что ты протестируешь? Что месседж ходит по ней? Или что пароль подошёл.
В этой схеме ты тестируешь буквально настройки на соответсвие. А это вынуждает
тебя хранить в тестах полную копию настроек что само по себе ОООЧЕНЬ странно.

Другие разрабы подумают что ты нашел очень забористый кальян. Покурил его и вдруг... придумал
тестить настройки протокола.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079882
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79
пропущено...

а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету?
мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?))

С моей точки зрения тестировать кафку - это все равно что тестировать tcp-проткол.
Что ты протестируешь? Что месседж ходит по ней? Или что пароль подошёл.
В этой схеме ты тестируешь буквально настройки на соответсвие. А это вынуждает
тебя хранить в тестах полную копию настроек что само по себе ОООЧЕНЬ странно.

Другие разрабы подумают что ты нашел очень забористый кальян. Покурил его и вдруг... придумал
тестить настройки протокола.

я думаю это дело времени - когда напишут такую либу

для даты уже есть зонки- которое на вход берет твои рабочие конфиги( ничего не надо нигдк проиписывать сам все найдет) и генерирует в докере инстанс твоей бд- это очень круто,ребята прям молодцы
тоже самое бы и для приложения целиком - некая либа генерирует в докере инстанст твоего приложения и дает тебе апи для написания удобных тестов- например sendT0Controoler("/fdf",Object o) и этот метод шлет твоему приложению этот объект ,оно его обрабатывает и ты его можешь например посмотреть в бд- каким то методом типо getFromDb( "tableName",...)

вот это бы уже было похоже на что то полезное - и ведь я думаю что для ребят ,которые такие фрймворки пишут - задача то прям не сильно чтобы сложная )
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079887
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79

а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету?
мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?))


Потому что kafka тестировать не надо.
Тестировать настройки...
Может быть вы ещё тестируете подключение jdbc-драйверов к БД?!

ИМХО в большинстве случаев для работы с kafka, нужно указать аннотацию @KafkaListener (с нужными параметрами) для получения данных.
И использовать kafkaTemplate для передачи данных.

Embedded Kafka позволяет протестировать прием и передачу данных.

Как бы хозяин-барин.
Я просто предложил рассмотреть такое решение.
<:o)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079912
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто господа ушли от конкретной темы тестирования приватного метода в бла бла ни о чем.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079915
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
asv79

а зачем мне тестиовать эмдбдед кафка,которая к моей кафке имеет такое же отношение как я к балету?
мне нужно тестировать мою кафку с моими настройками,а зачем мне настроить эмбдед кафку и ее же тестировать?))


Потому что kafka тестировать не надо.
Тестировать настройки...
Может быть вы ещё тестируете подключение jdbc-драйверов к БД?!

ИМХО в большинстве случаев для работы с kafka, нужно указать аннотацию @KafkaListener (с нужными параметрами) для получения данных.
И использовать kafkaTemplate для передачи данных.

Embedded Kafka позволяет протестировать прием и передачу данных.

Как бы хозяин-барин.
Я просто предложил рассмотреть такое решение.
<:o)

а зачем мне тестировать то,что у меня на проекте не будет в работе? параметры как раз таки важны - там столько настоект безопасности и прочего что видя эту ямл портянку становится худо)
@Embded kaffku я знаю,не понимаю просто для чего она - если я хочу тестировать боинг а мне посовывают жигули с аргументами - а шо боенг тестировать он и в африке боинг ,бери жигули - поедут если ,значит и боенг поедет)))ну вот щас это как то так выглядит)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079926
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79

а зачем мне тестировать то,что у меня на проекте не будет в работе? параметры как раз таки важны - там столько настоект безопасности и прочего что видя эту ямл портянку становится худо)
@Embded kaffku я знаю,не понимаю просто для чего она - если я хочу тестировать боинг а мне посовывают жигули с аргументами - а шо боенг тестировать он и в африке боинг ,бери жигули - поедут если ,значит и боенг поедет)))ну вот щас это как то так выглядит)


Тестировать боинг на живую дорого.
Вам предлагают аэродинамическую трубу, в которой можно протестировать макет боинга.
А вы говорите, что на макете нельзя протестировать обивку салона.
<:o)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079953
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul


Тестировать боинг на живую дорого.
Вам предлагают аэродинамическую трубу, в которой можно протестировать макет боинга.
А вы говорите, что на макете нельзя протестировать обивку салона.
<:o)

а также нельзя протестировать взлет и посадку- а лишь получить динамический коэф сопротивления)))
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079957
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul


Тестировать боинг на живую дорого.


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

лучший тест боинга - это летчик испытатель
лучший тест вашего приложения это тестиовщик
все остальное - называемое тестами- это такое себе
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079967
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79,
Долой экзамены в школах. Это тесты!
Че за бред какой то)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079985
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тема интересная. Позвольте мне тоже тогда позадавать пару вопросов:
1. Есть у нас маппер. На входе у него объект, полученный из xml - все уровни вложенности исходной xml в объекте сохранены, на выходе - плоская entity для базы. У входного объекта около 50-60 полей (так сложилось).
Поля перекладываются со всякими разными обработками - много if'ов (если это и это поле заполнены, то заполни поле так-то), каких-то обработок строк, дат и т.д.
Для удобства навигации по классу все обработки разбиты на методы согласно вложенности xml (ну, в разумных пределах). И эти методы приватные.
С одной стороны понятно, что можно тестировать через public метод маппера, но тогда проверка правильности обработки какого-нибудь глубоко вложенного поля весьма затратно по времени (надо ведь до этого поля еще по всем условиям добраться)
С другой стороны, если написать тесты на каждый метод отдельно (например с использованием библиотечки WhiteBox), то это позволяет проверить маппинг конкретных полей быстрее и проще
Вот как лучше все же поступать? (Хотя вы тут 8 страниц обсуждали, что тестить private методы - это фуфу =) )

2. Упоминалось, что наличие mock'ов и PowerMock - это плохой тон. Можно ли чуть подробнее, почему?
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080014
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timein,

Надо убрать из маппинга БЛ и тестировать будет нечего.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080042
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
Timein,

Надо убрать из маппинга БЛ и тестировать будет нечего.

а куда ее убрать-то? Где-то все равно эти обработки должны быть
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080047
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timein
PetroNotC Sharp
Timein,

Надо убрать из маппинга БЛ и тестировать будет нечего.

а куда ее убрать-то? Где-то все равно эти обработки должны быть
по теории БЛ в сервисном слое. Маппинг после него на выходе и это простая техническая операция передачи по сети клсса user без методов и поведения.
Вы опишите что там у вас сложного
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080048
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timein,
Или например маппинг входа
- усложнили что xml а не json
- усложнили что 60 полей
- усложнили что "куча if"
А теперь спрашиваете как тестировать.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080052
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timein
PetroNotC Sharp
Timein,

Надо убрать из маппинга БЛ и тестировать будет нечего.

а куда ее убрать-то? Где-то все равно эти обработки должны быть

Я думаю что он прав. Если разделить эту логику на два слоя.

1) Слой мапперов (XML -> StructuredJavaObject -> PlainJavaObject)
2) Слой всяких там if-else

После этого тестирование упрощается. Да ... и когда мы тестим вход с 7-15 dimensions то лучше писать модульные
тесты которые покроют основные кейсы. И PBT-tests что-б покрыть 100500 миллиардов прочих технических кейсов.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080058
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Согласен.
Вообще сам рест придуман чтобы стандартно передавать один объект без связей чем один боооольшой большой бизнес Обь ект.
Сам тренд счас в делении (микросервисы)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080069
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Я могу путаться в терминологии.
Я правильно понимаю, что предполагается:
1) поля StructuredJavaObject впрямую переложить в PlainJavaObject1 (как есть, один к одному)
2) Из PlainJavaObject1 переложить с обработкой в PlainJavaObject2 (так как состав полей может не совпадать)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080073
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timein,
Если не бъет состав полей, то это ерунда. Решаетя маппингом аннотациями.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40080081
Timein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,

а можно немного подробнее каким образом? К примеру, в первом объекте у меня два поля - число и строка, а во втором пять - число и пять строк. Строка из первого объекта парсится по определенным условиям и полученные значения раскладываются по пяти полям. Как аннотацией и какой это можно сделать?
...
Рейтинг: 0 / 0
25 сообщений из 215, страница 8 из 9
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование private методов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]