|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Lelouch asv79 НУ вот у меня сейчас есть план протестировать рест+ кафку+дб тоесть на вход я должен скормить джейсон -отправить его на наш рест - отуда послать в топик кафки - из топика достать ,записать в бд и проверить что я записал то,что я отправил в джейсон такого просто нет . везде будет одна синтетика- например кафку вообще никак не затестить - нужно юзать Embded а там уже не те настройки совершенно----------другие смысл тогда ее тестировать? если по факту будет тест не твоей кафки ,а какой то искуственной херни,которую ты ток что в тесте и создал и будешь ее же тестировать лол базу данных тестировать - нужно отельный класс рисовать - а если я хочу сразу на вход теста положить джейсон а на выходе достать запись из бд- такого нет нифига -есть воообщем и целом как я и говорил - проще руками проверить чем вот тратить время на эти велосипеды,так как внятного инструмента я не нашел чтобы такое осуществить То что вы описываете больше похоже на end2end тест. например кафку вообще никак не затестить - https://www.testcontainers.org/modules/kafka/ Там же можно и бд развернуть Но это в любом случае уже не unit-тест. контейенры та же синтетика я пробовал - но с реальными конфигами ничего не работает- чтобы с реального топика получить сабж и в бд его записать такого нет пока -нужно писать такую либу - ибо будет востребована ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:28 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Lelouch пропущено... То что вы описываете больше похоже на end2end тест. например кафку вообще никак не затестить - https://www.testcontainers.org/modules/kafka/ Там же можно и бд развернуть Но это в любом случае уже не unit-тест. контейенры та же синтетика я пробовал - но с реальными конфигами ничего не работает- чтобы с реального топика получить сабж и в бд его записать такого нет пока -нужно писать такую либу - ибо будет востребована Без примера я могу в ответ написать только "пробовал, все работает, либа не нужна" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:29 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 НУ вот у меня сейчас есть план протестировать рест+ кафку+дб Не надо. да я тоже так думаю ,слишком много там подводных камней- например у нас все что нужно для работы приложения разворачивается в докер контейнере я тут попробовал туда же тест базу прописать чтобы при выполнении тестов использовалась тест база ,но не смог) я знаю что так можно- я так делал без докера - кстати удобная фича вместо эмбдед шляпы- которая может не поддерживать половину вашего функционала ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:31 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Lelouch asv79 нормальный тест был бы такой запускается локально инстанс приложения с докер контейнером зависимостей там инстанцируются БД,кафка и прочие нужности и далее тест шлет на локал хост /енд поинт некий джейсон ,этот джейсон собирается в объект и отсылается в кафка топик далее листенер видит саюж->пишщет его в базу Так а в чем проблема сделать такой тест? просто это не unit-тест, а что-то выше в пирамиде тестирования. я не представляю как написать такой тест и чтобы он не был синтетикой,там сразу кафка скажет вам привет вы будете не свой топик тетсить а синтетик шляпу на тест конфиге ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:32 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
и собственно к чему я это веду- разработка такого теста займет очень много времени и будет стоить достаточно много денег ,проверка птушником http реквест ->запрос в бд стремится к нулю по себестоимости ) вот вам и ценность ваших тестов а если что то не дай бог поменяется - вам придется этот ,я думаю очень сложный тест ,актуализировать -а это сможет далеко не каждый сотрудник ту лелоч- давай друг вместо балабольства реальный пример такого теста для вводных данных обычный рест апи- кафка- постргрес давай покажи нам класс - получи с реста объект ,прокинь его через кафку и положи в бд - и потом покажи тест как ты на вход отдаешь такой то джейсон и он ассертится с тем что ты в бд закинул- сможешь это = я тебе памятник поставлю) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:39 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Но я отвечу за тебя,чтоб ты не мучался - ты не сможешь этого сделать для начала тебе нужен рест темплейт- чтобы отостлать сабж своему приложению далее начинается проблема - чтобы твое приложение приняло запос - нужно использвать сприг бут тест ,который не совместим с тестом базы и скорей всего и кафкой ты начнешь клепать моки - и я скажу тебе давай до свиданья!) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:43 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Тестировать рест+ кафку+дб - это означает выполнять работу профильных админов и девопсов (в крупном предприятии). Можешь протестировать свою дев-конфигурацию. Отправь 1 месседж. И всё. Только сделать это 1 раз для самоконтроля и тест потом - отключить чтоб не мешал основному циклу тестирования бизнес-функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 19:48 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton, моя задумка была как авто тест- чтобы в проекте хранился образцец джейсон ,который мы нам должны прислать по кафке я хотел что сделать из джейсона сделать объект - послать его через продюсер в топик - далее в работу должно было включиться приложение- @KafkaListener увидев сообщение и положить его в бд и далее в тесте ассертнтуть ожидаемое с тем что в бд легло 1.пункт я сделал- из джейсона в файле я делаю объект и кидаю его в топик а далее тишина листенер приложения молчит - хотя в топике есть меседж- моя мысл была такова - записать то что пришло из кафки в бд - чекнуть на соотвествтие и удалить после теста- понятно что база была бы боевая собственно по сути все норм кроме того,что непонятно как послушать реальный топик в тесте,а не синтетичское дерьмо ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:11 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Тестировать рест+ кафку+дб - это означает выполнять работу профильных админов и девопсов (в крупном предприятии). Можешь протестировать свою дев-конфигурацию. Отправь 1 месседж. И всё. Только сделать это 1 раз для самоконтроля и тест потом - отключить чтоб не мешал основному циклу тестирования бизнес-функций. для ручного тестрования я запилил функционал - ну который типо с запроса берет джейсон кладет его в продюсер и отсылает в наш топики далее руками ты можешь посмотреть что объект лег корректно я так понимаю что в авто режиме такое будет очень дорого стоить ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:14 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 mayton Тестировать рест+ кафку+дб - это означает выполнять работу профильных админов и девопсов (в крупном предприятии). Можешь протестировать свою дев-конфигурацию. Отправь 1 месседж. И всё. Только сделать это 1 раз для самоконтроля и тест потом - отключить чтоб не мешал основному циклу тестирования бизнес-функций. для ручного тестрования я запилил функционал - ну который типо с запроса берет джейсон кладет его в продюсер и отсылает в наш топики далее руками ты можешь посмотреть что объект лег корректно я так понимаю что в авто режиме такое будет очень дорого стоить У тебя Junit-5 ? Заведи себе тег интеграции. Помаркируй этим тегом те тесты которые будут такими экзотическими. Код: java 1. 2. 3. 4.
И запускай их maven-ом отдельно. В доке по junit-5 есть описалово как это делать. Обычные тесты - без тегов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:20 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton asv79 пропущено... для ручного тестрования я запилил функционал - ну который типо с запроса берет джейсон кладет его в продюсер и отсылает в наш топики далее руками ты можешь посмотреть что объект лег корректно я так понимаю что в авто режиме такое будет очень дорого стоить У тебя Junit-5 ? Заведи себе тег интеграции. Помаркируй этим тегом те тесты которые будут такими экзотическими. Код: java 1. 2. 3. 4.
И запускай их maven-ом отдельно. В доке по junit-5 есть описалово как это делать. Обычные тесты - без тегов. у нас градл ,во вторых как я тебе выше писал все зависимостие подымаются в докер котнейнере тоесть чтобы что то добавить туда нужен будет хороший девопс у меня даже тест базу не получислось создать ,так какой то особый девопс секс если бы все лежало не в контейнере - я бы просто создал тест базу - в пакете теста создал конфиг для этой базы поднял бы контекст @SpringBootTest и скорей всего бы получил желаемое(не уверен на счет кафки) все таки ей нужен или полноценный инстанст приложения или я хз что ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:26 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Для gradle - тоже параметры передаются. Ну если все так сложно - то забей. Никто тебя не похвалит за поднятие докеров. Я так думаю. Особенно когда речь касается рабочих станций девелоперов. Забей короче. Не нужен тебе тест такой ценой. Пользы мало. А конфигурационных проблем масса. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:34 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:36 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
mayton Для gradle - тоже параметры передаются. Ну если все так сложно - то забей. Никто тебя не похвалит за поднятие докеров. Я так думаю. Особенно когда речь касается рабочих станций девелоперов. Забей короче. Не нужен тебе тест такой ценой. Пользы мало. А конфигурационных проблем масса. Так вот я эту мысль и хотел озвучить - идея теста просто прекрасна- мы по сути отестим целое направление сервиса плюсы= никаких - так как при любом измененнии как на стороне продюсера так и на стороне консумера - вы будете править не код,а сам тест минусы- достаточно сложная разработка с участием девопса по поднятию тестовой базы на другой стороне весов есть некий Петро,который умеет пользваться постманом и pg4admin он должен взять джейсон из корня проекта,положить его в тело запроса и послать запрос зайти в базу и посмотреть на эту запись на все про все 3 минуты ,если особо тупой QA то 10 минут как часто нужно проводить такой тест- с той же частой ,с которой меняется дто - которым вы обмениваетесь с внешним ресурсом- тоесть в теории это один раз в год теперь давайте посчитаем финансы 10 минут времени QA раз в год или все таки разработка теста + акутализация раз в год я думаю даже Петро сможет увидеть разницу) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:44 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
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 так не пойдет нужен рабочий пример с простейшим круд приложением - я думаю если вы начнете его делать - то мы про вас на неделю забудем) собрать контейнер со своим приложением - уже звучит очень весело) у нас там на кафку одну безопасности всякой столько что устанешь печатать ... вообщем лелуч - ждем от вас рабочий пример обычнго рест апи круд приложения - с тестированием слова это все легко и вот тут все есть - не принимаются ,ибо все мы знаем что такое конфигурация ) Я тебе сразу говорю что в рамках одного теста это не получится Ты говоришь получится- покажи код ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:48 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
[quot asv79#22338856] mayton как часто нужно проводить такой тест- с той же частой ,с которой меняется дто - которым вы обмениваетесь с внешним ресурсом- тоесть в теории это один раз в год Вообще - нет Тест может сломать: 1) Изменение DTO 2) Изменение контроллера 3) Изменение настроек (например, поменяли context path) 4) Любое изменение бизнес-логики (например, сообщение должно долетать до БД не на каждый запрос) 5) Изменение структуры БД 6) Изменение сообщений, передаваемых через брокер 7) etc По факту, если этот сценарий для бизнеса критичен - то этот тест вообще будет входить в каждый регресс при релизе версии ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:50 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
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к/час и я предоставляю вам такой код, идет?) Простите, бесплатно писать то, что вы сами можете собрать по ссылкам я что-то не хочу) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:52 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
[quot Lelouch#22338863] asv79 пропущено... Вообще - нет Тест может сломать: 1) Изменение DTO 2) Изменение контроллера 3) Изменение настроек (например, поменяли context path) 4) Любое изменение бизнес-логики (например, сообщение должно долетать до БД не на каждый запрос) 5) Изменение структуры БД 6) Изменение сообщений, передаваемых через брокер 7) etc По факту, если этот сценарий для бизнеса критичен - то этот тест вообще будет входить в каждый регресс при релизе версии тут ты не прав первый вопрос зачем контроллер? это кафка вообщето( контролер нужен лишь для теста послать самому себе сообщение) второй ворпос по всех озвученных вами пунктах что вы будете делать? менять код теста и менять код консумера- насколько это дороже ,чем 5 минут времени QA ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:54 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Lelouch пропущено... тут ты не прав первый вопрос зачем контроллер? это кафка вообщето( контролер нужен лишь для теста послать самому себе сообщение) второй ворпос по всех озвученных вами пунктах что вы будете делать? менять код теста и менять код консумера- насколько это дороже ,чем 5 минут времени QA 5 минут времени QA * 100 критических тесткейсов - это внезапно 2 человеко-дня тестирования. (обшибся в первый раз) Если это необходимо выполнять при каждом выпуске версии, то экономия очевидна ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:57 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Lelouch Хорошо, вы оплачиваете мое время из расчета 2к/час и я предоставляю вам такой код, идет?) Простите, бесплатно писать то, что вы сами можете собрать по ссылкам я что-то не хочу) а зачем вы пишите тут что то бесплатно уже 2й час? кто вам оплатит 4 тысячи? я точно не буду) я так понимаю если вы вошли в тему то нужно что то показать,ссылки это хорошо,но где рабочий пример простейший круд с кафкой и его тест - генерация минут 10 через спринг.io с 1 контроллером 1 сущностью 1 репой 1 кафкой ну и далее ваш тест который получит в рест объект - пошлет его по кафке- вы его в тесте получите - запишите в базу и проверите что туда положили- звучит просто ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 20:59 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Lelouch Хорошо, вы оплачиваете мое время из расчета 2к/час и я предоставляю вам такой код, идет?) Простите, бесплатно писать то, что вы сами можете собрать по ссылкам я что-то не хочу) а зачем вы пишите тут что то бесплатно уже 2й час? кто вам оплатит 4 тысячи? я точно не буду) я так понимаю если вы вошли в тему то нужно что то показать,ссылки это хорошо,но где рабочий пример простейший круд с кафкой и его тест - генерация минут 10 через спринг.io с 1 контроллером 1 сущностью 1 репой 1 кафкой ну и далее ваш тест который получит в рест объект - пошлет его по кафке- вы его в тесте получите - запишите в базу и проверите что туда положили- звучит просто Ссылки покидать можно и бесплатно) Бесплатно писать код - я лучше issue в каком-нибудь открытом проекте поправлю) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 21:01 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Lelouch asv79 пропущено... 5 минут времени QA * 100 критических тесткейсов - это внезапно 2 человеко-дня тестирования. (обшибся в первый раз) Если это необходимо выполнять при каждом выпуске версии, то экономия очевидна откуда взялись 100 тест кейсов ? как мы с вами выснили ранее такие кейсы возникают лишь при смене дто,все остальное от лукавого если логика меняется - причем тут ДТО - меняйте сколько хотите - наш тест должен показат что то что мы положили в контроллер придет через кафку и ляжет в бд в том же виде тоесть юзкейс тут только один- изменение ДТО - и как я выше писал это в лучшем случае 1 раз в год,по факту никогда теперь давайте еще раз посчтиаем финансы ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 21:03 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
Lelouch asv79 пропущено... а зачем вы пишите тут что то бесплатно уже 2й час? кто вам оплатит 4 тысячи? я точно не буду) я так понимаю если вы вошли в тему то нужно что то показать,ссылки это хорошо,но где рабочий пример простейший круд с кафкой и его тест - генерация минут 10 через спринг.io с 1 контроллером 1 сущностью 1 репой 1 кафкой ну и далее ваш тест который получит в рест объект - пошлет его по кафке- вы его в тесте получите - запишите в базу и проверите что туда положили- звучит просто Ссылки покидать можно и бесплатно) Бесплатно писать код - я лучше issue в каком-нибудь открытом проекте поправлю) ты только что написал что твое время стоит 2 к/час- при этом ты уже 2й час тут пишешь ни о чем и самое интересное - врядли тебе за это кто то заплати- получается некий дисонанс) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 21:05 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
я собственно не имею к тебе претензий лелуч) мое хотение чтобы это топик прочитали лиды и может быть почесали голову - а может и правда дешевле QA чем разрабов насиловать вот таким вот ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 21:07 |
|
Тестирование private методов
|
|||
---|---|---|---|
#18+
asv79 Так вот я эту мысль и хотел озвучить - идея теста просто прекрасна- мы по сути отестим целое направление сервиса плюсы= никаких - так как при любом измененнии как на стороне продюсера так и на стороне консумера - вы будете править не код,а сам тест минусы- достаточно сложная разработка с участием девопса по поднятию тестовой базы на другой стороне весов есть некий Петро,который умеет пользваться постманом и pg4admin он должен взять джейсон из корня проекта,положить его в тело запроса и послать запрос зайти в базу и посмотреть на эту запись на все про все 3 минуты ,если особо тупой QA то 10 минут Мне сложно обсуждать цифры. 3 минуты или 10 минут или раз в год. Но мой опыт подсказывает что ты занят ерундой. Я думаю что у тебя на проекте есть тонна другой полезной работы кода надо применить свои знания. Если ты занимаешся этим просто изучая докер (resume-driven-development) - то я одобрительно промолчу. Делай. Изучай. Но не стоит это преподносить как панацею. Скорее просто тебе так хочется. Самый лучший судья тебе в этом - это code-review тоих коллег. Скорее всего они будут тебя бить за такое нововведение. Первый-же авто-тест со стороны QA мнгновенно проверить всю твою интеграцию и даже лучше и шире во все стороны. А твой докер - будет лишним балластом и скорее всего и его выкинут из проекта. Это вобщем моё IMHO. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2021, 21:10 |
|
|
start [/forum/topic.php?fid=59&msg=40079453&tid=2120410]: |
0ms |
get settings: |
18ms |
get forum list: |
5ms |
check forum access: |
1ms |
check topic access: |
1ms |
track hit: |
35ms |
get topic data: |
3ms |
get forum data: |
1ms |
get page messages: |
441ms |
get tp. blocked users: |
0ms |
others: | 7ms |
total: | 512ms |
0 / 0 |