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

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

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

базу данных тестировать - нужно отельный класс рисовать - а если я хочу сразу на вход теста положить джейсон а на выходе достать запись из бд- такого нет нифига -есть

воообщем и целом как я и говорил - проще руками проверить чем вот тратить время на эти велосипеды,так как внятного инструмента я не нашел чтобы такое осуществить


То что вы описываете больше похоже на end2end тест.
например кафку вообще никак не затестить - https://www.testcontainers.org/modules/kafka/
Там же можно и бд развернуть
Но это в любом случае уже не unit-тест.

контейенры та же синтетика
я пробовал - но с реальными конфигами ничего не работает- чтобы с реального топика получить сабж и в бд его записать

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


То что вы описываете больше похоже на end2end тест.
например кафку вообще никак не затестить - https://www.testcontainers.org/modules/kafka/
Там же можно и бд развернуть
Но это в любом случае уже не unit-тест.

контейенры та же синтетика
я пробовал - но с реальными конфигами ничего не работает- чтобы с реального топика получить сабж и в бд его записать

такого нет пока -нужно писать такую либу - ибо будет востребована

Без примера я могу в ответ написать только "пробовал, все работает, либа не нужна"
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079443
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
asv79
НУ вот у меня сейчас есть план протестировать рест+ кафку+дб

Не надо.

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

Так а в чем проблема сделать такой тест? просто это не unit-тест, а что-то выше в пирамиде тестирования.

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


ту лелоч- давай друг вместо балабольства реальный пример такого теста
для вводных данных обычный рест апи- кафка- постргрес
давай покажи нам класс - получи с реста объект ,прокинь его через кафку и положи в бд - и потом покажи тест как ты на вход отдаешь такой то джейсон и он ассертится с тем что ты в бд закинул-
сможешь это = я тебе памятник поставлю)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079447
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но я отвечу за тебя,чтоб ты не мучался - ты не сможешь этого сделать
для начала тебе нужен рест темплейт- чтобы отостлать сабж своему приложению
далее начинается проблема - чтобы твое приложение приняло запос - нужно использвать сприг бут тест ,который не совместим с тестом базы и скорей всего и кафкой
ты начнешь клепать моки - и я скажу тебе давай до свиданья!)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079448
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тестировать рест+ кафку+дб - это означает выполнять работу профильных админов и
девопсов (в крупном предприятии). Можешь протестировать свою дев-конфигурацию.
Отправь 1 месседж. И всё. Только сделать это 1 раз для самоконтроля и тест потом - отключить
чтоб не мешал основному циклу тестирования бизнес-функций.
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079450
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
моя задумка была как авто тест- чтобы в проекте хранился образцец джейсон ,который мы нам должны прислать по кафке
я хотел что сделать
из джейсона сделать объект - послать его через продюсер в топик - далее в работу должно было включиться приложение- @KafkaListener увидев сообщение и положить его в бд
и далее в тесте ассертнтуть ожидаемое с тем что в бд легло

1.пункт я сделал- из джейсона в файле я делаю объект и кидаю его в топик
а далее тишина листенер приложения молчит - хотя в топике есть меседж-
моя мысл была такова - записать то что пришло из кафки в бд - чекнуть на соотвествтие и удалить после теста- понятно что база была бы боевая
собственно по сути все норм кроме того,что непонятно как послушать реальный топик в тесте,а не синтетичское дерьмо
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079451
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Тестировать рест+ кафку+дб - это означает выполнять работу профильных админов и
девопсов (в крупном предприятии). Можешь протестировать свою дев-конфигурацию.
Отправь 1 месседж. И всё. Только сделать это 1 раз для самоконтроля и тест потом - отключить
чтоб не мешал основному циклу тестирования бизнес-функций.

для ручного тестрования я запилил функционал - ну который типо с запроса берет джейсон кладет его в продюсер и отсылает в наш топики далее руками ты можешь посмотреть что объект лег корректно
я так понимаю что в авто режиме такое будет очень дорого стоить
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079452
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
mayton
Тестировать рест+ кафку+дб - это означает выполнять работу профильных админов и
девопсов (в крупном предприятии). Можешь протестировать свою дев-конфигурацию.
Отправь 1 месседж. И всё. Только сделать это 1 раз для самоконтроля и тест потом - отключить
чтоб не мешал основному циклу тестирования бизнес-функций.

для ручного тестрования я запилил функционал - ну который типо с запроса берет джейсон кладет его в продюсер и отсылает в наш топики далее руками ты можешь посмотреть что объект лег корректно
я так понимаю что в авто режиме такое будет очень дорого стоить

У тебя Junit-5 ? Заведи себе тег интеграции. Помаркируй этим тегом те тесты которые будут такими экзотическими.

Код: java
1.
2.
3.
4.
@Tag("kafka-db-integration")
class KafkaDbIntegration { 
   ...
}



И запускай их maven-ом отдельно. В доке по junit-5 есть описалово как это делать.

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

для ручного тестрования я запилил функционал - ну который типо с запроса берет джейсон кладет его в продюсер и отсылает в наш топики далее руками ты можешь посмотреть что объект лег корректно
я так понимаю что в авто режиме такое будет очень дорого стоить

У тебя Junit-5 ? Заведи себе тег интеграции. Помаркируй этим тегом те тесты которые будут такими экзотическими.

Код: java
1.
2.
3.
4.
@Tag("kafka-db-integration")
class KafkaDbIntegration { 
   ...
}



И запускай их maven-ом отдельно. В доке по junit-5 есть описалово как это делать.

Обычные тесты - без тегов.

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

если бы все лежало не в контейнере - я бы просто создал тест базу - в пакете теста создал конфиг для этой базы
поднял бы контекст @SpringBootTest и скорей всего бы получил желаемое(не уверен на счет кафки) все таки ей нужен или полноценный инстанст приложения или я хз что
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079454
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для gradle - тоже параметры передаются.

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

1) Собираешь контейнер со своим приложением
2) Через docker compose поднимаешь приложение и необходимое окружение
3) Выполняешь тесты
Вот тут есть что-то похожее на пример для maven + testcontainers: https://bsideup.github.io/posts/spring_boot_in_container/
Для Gradle есть пример прямо от Ричардсона (выполняются примерно те шаги, что я описал выше): https://github.com/microservices-patterns/ftgo-application
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079457
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Для gradle - тоже параметры передаются.

Ну если все так сложно - то забей. Никто тебя не похвалит за поднятие докеров. Я так думаю.
Особенно когда речь касается рабочих станций девелоперов. Забей короче. Не нужен тебе
тест такой ценой. Пользы мало. А конфигурационных проблем масса.

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

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

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

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

теперь давайте посчитаем финансы 10 минут времени QA раз в год или все таки разработка теста + акутализация раз в год
я думаю даже Петро сможет увидеть разницу)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079459
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch
asv79
Но я отвечу за тебя,чтоб ты не мучался - ты не сможешь этого сделать
для начала тебе нужен рест темплейт- чтобы отостлать сабж своему приложению
далее начинается проблема - чтобы твое приложение приняло запос - нужно использвать сприг бут тест ,который не совместим с тестом базы и скорей всего и кафкой
ты начнешь клепать моки - и я скажу тебе давай до свиданья!)

1) Собираешь контейнер со своим приложением
2) Через docker compose поднимаешь приложение и необходимое окружение
3) Выполняешь тесты
Вот тут есть что-то похожее на пример для maven + testcontainers: https://bsideup.github.io/posts/spring_boot_in_container/
Для Gradle есть пример прямо от Ричардсона (выполняются примерно те шаги, что я описал выше): https://github.com/microservices-patterns/ftgo-application

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

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


Вообще - нет
Тест может сломать:
1) Изменение DTO
2) Изменение контроллера
3) Изменение настроек (например, поменяли context path)
4) Любое изменение бизнес-логики (например, сообщение должно долетать до БД не на каждый запрос)
5) Изменение структуры БД
6) Изменение сообщений, передаваемых через брокер
7) etc

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

1) Собираешь контейнер со своим приложением
2) Через docker compose поднимаешь приложение и необходимое окружение
3) Выполняешь тесты
Вот тут есть что-то похожее на пример для maven + testcontainers: https://bsideup.github.io/posts/spring_boot_in_container/
Для Gradle есть пример прямо от Ричардсона (выполняются примерно те шаги, что я описал выше): https://github.com/microservices-patterns/ftgo-application

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


Хорошо, вы оплачиваете мое время из расчета 2к/час и я предоставляю вам такой код, идет?)
Простите, бесплатно писать то, что вы сами можете собрать по ссылкам я что-то не хочу)
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079462
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Lelouch#22338863]
asv79
пропущено...


Вообще - нет
Тест может сломать:
1) Изменение DTO
2) Изменение контроллера
3) Изменение настроек (например, поменяли context path)
4) Любое изменение бизнес-логики (например, сообщение должно долетать до БД не на каждый запрос)
5) Изменение структуры БД
6) Изменение сообщений, передаваемых через брокер
7) etc

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

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

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

5 минут времени QA * 100 критических тесткейсов - это внезапно 2 человеко-дня тестирования. (обшибся в первый раз)
Если это необходимо выполнять при каждом выпуске версии, то экономия очевидна
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079465
Фотография asv79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelouch

Хорошо, вы оплачиваете мое время из расчета 2к/час и я предоставляю вам такой код, идет?)
Простите, бесплатно писать то, что вы сами можете собрать по ссылкам я что-то не хочу)

а зачем вы пишите тут что то бесплатно уже 2й час? кто вам оплатит 4 тысячи? я точно не буду)
я так понимаю если вы вошли в тему то нужно что то показать,ссылки это хорошо,но где рабочий пример
простейший круд с кафкой и его тест - генерация минут 10 через спринг.io с 1 контроллером 1 сущностью 1 репой 1 кафкой
ну и далее ваш тест который получит в рест объект - пошлет его по кафке- вы его в тесте получите - запишите в базу и проверите что туда положили- звучит просто
...
Рейтинг: 0 / 0
Тестирование private методов
    #40079468
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asv79
Lelouch

Хорошо, вы оплачиваете мое время из расчета 2к/час и я предоставляю вам такой код, идет?)
Простите, бесплатно писать то, что вы сами можете собрать по ссылкам я что-то не хочу)

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

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

5 минут времени QA * 100 критических тесткейсов - это внезапно 2 человеко-дня тестирования. (обшибся в первый раз)
Если это необходимо выполнять при каждом выпуске версии, то экономия очевидна

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

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

Ссылки покидать можно и бесплатно) Бесплатно писать код - я лучше issue в каком-нибудь открытом проекте поправлю)

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

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

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

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

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

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

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

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

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


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