LikeaDuck🦆
1.45K subscribers
65 photos
3 videos
97 links
Дима Тучс (https://t.iss.one/dtuchs). QA директор в DODO, спикер и программный комиттёр на конфах, создатель авторского курса QA.GURU Advanced. Здесь будет об IT, QA, менеджменте и немного обо мне.
Download Telegram
Вышел из отпуска :harold-the-pain:
Провел собеседование (неудачно), узнал, что сегодня дедлайн по OKR на 1 квартал (они-то уже есть, но были не внесены в нужную эксельку). Узнал что у нас прямо сейчас все хотят открыть 5 QA вакансий:
- Mobile QA
- Team Lead QA
- Performance QA
- Web QA
- Железячный QA 🙂

Пообсуждали архитектуру большого проекта Kotlin тестов и наметили, куда ее рефакторить.

А еще пропустил обсуждение важного вопроса в слаке*:
Куда бежать в случае землетрясения в Алматинском офисе

Теперь надеюсь, что эти знания не пригодятся 🙂
11🆒3👍2
#Java #Spring

Об обновлении зависимостей.

Обновил тут в одном из своих Spring пет-проектов одну зависимость.
Было 1.1.2, стало - 1.2.1. Поменял местами 2 цифры так сказать, что могло бы пойти не так?

У меня напрочь отвалился Oauth 2.0 code flow.

Запрос /oauth2/token? отдает 400 BAD REQUEST. И говорит вот такое понятное сообщение об ошибке - UNSUPPORTED_GRANT_TYPE. Как же так, спрашиваю сам себя? Ведь я не менял grant_type=authorization_code в своем запросе;
В коде спрингового сервиса даже в DEBUG логгировании нет никаких ошибок и стэктрейсов, потому что эта ошибка и не логгируется при выбрасывании.

Что делать?

Смотреть гит блэйм, кто же и что же поменял в этом OAuth2TokenEndpointFilter, чудес же не бывает? А изменения кроются, на самом деле, внутри OAuth2AuthorizationCodeAuthenticationConverter.

Метод OAuth2EndpointUtils.getFormParameters раньше доставал из запроса и GET-параметры, и URL-encoded параметры, а теперь - только URL-encoded параметры. Как же так, почему раньше-то можно было? Иду в RFC Oauth 2.0 и вот ответ -

The client makes a request to the token endpoint by sending the
following parameters using the "application/x-www-form-urlencoded"


То есть, еще месяц назад реализация OAUTH 2.0 в spring-authorization-server не соответсвовала RFC, принимая GET параметры! Так же ей не соответсвовал и мой код, отправляя GET параметры. Начав бомбить о том "да как так одна циферка зависимости ломает мой прекрасный код!" закончил философским "ошибаются все, и не боги горшки спринговые обжигают".

Тут есть и еще один вопрос, а почему я вообще изначально не прочитал нормально RFC и отправлял GET-параметры?

Потому, что до получения странной ошибки я просто думал, что мне будет достаточно посмотреть воркшоп автора книги Spring Security in Action - и в нем тоже показана отправка простых GET параметров. А значит, ошибаются не только контрибьюторы Spring, но и даже авторы книг о Spring.

Мои выводы
- ошибайтесь на здоровье;
- но, любите дебаг;
- и гитблэймы;
- и чтение спецификаций и RFC
🔥24👏4👍1😁1
Гемба в Додо

В конце декабря мы провели самую масштабную гембу за всю историю Dodo Brands.

170 сотрудников офисов в разных странах (и я в том числе😁) перед Новым годом работали в пиццериях, делали кофе и развозили заказы нашим клиентам.

Как это было, что такое гемба и зачем мы используем подобные практики? Обо всём этом в новой статье на VC 🍕
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥174
Подал заявку на продолжение воркшопа The art of JUnit extensions. Если честно - не планировал, но меня очень мотивировал отзыв одного из слушателей первой части:

Если не смотрел выступление Дмитрия, то крайне советую глянуть когда запись появится, там показывали пример целого механизма, одним винтиком из которого является контекст холдер)
Когда смотрел, не знал даже чего такое эти экстеншены и оно для меня прям взрывом мозга было, целый новый мир открылся моему взору
🔥258👍1
Кстати, любопытный факт. В моей карьере был ровно 1 (один) отказ в выступлении на каком-то QA_ивенте: от чуваков из Казахского KOLESA GROUP.

Казахское айти круче всех Гейзенбагов и Кодфестов с Девклубами вместе взятых, получается 🙂
😁36🤪6
This media is not supported in your browser
VIEW IN TELEGRAM
24🔥15🎉6🦄5👏2😁2🤝1
#job #вакансия #додо

Итак, о моих вакансиях с подробностями. Первая - железячный QA. Мы ищем QA инженера в Москве или в Сыктывкаре, с опытом тестирования чего-то железного. То есть, мы пишем софт для касс, киосков самообслуживания, драйверы для них и т.д. Мы тестируем новое оборудование и софт для него. И если вы знаете такого QA - или вы вдруг сами такой - мы точно договоримся о приятных условиях работы. Важно - Т.к. работа с железками, а железки в офисе в Москве и в Сыктывкаре, то надо быть там или хотеть туда (в Москву, конечно 🥲) переехать. Пишите плиз мне напрямую - @dtuchs
🔥17
Media is too big
VIEW IN TELEGRAM
#job #вакансия #додо

Вторая, и не менее важная - QA в команду Маркетплейса. Что такое наш маркетплейс - смотрите в видео. Основная особенность этой вакансии - работа с API, выстраивание процессов и, пожалуй, главное - частое переключение контекстов между разными небольшими приложениями, которые это API будут использовать. Вакансия точно будет интересна тем, кто не хочет месяцами и годами тестировать одно и то же. Опять таки - пишите мне, @dtuchs
🔥184
#job #вакансия #додо

Третья вакансия - Performance QA. Нужно желание ковыряться в инфре (у нас все в k8s), понимать что такое микросервисная архитектура, как работать с БД и для чего нужна Кафка. Мочь писать какой-нибудь код на Java (сложнее, чем Selenide + RestAssured) - тоже мастхэв. Вакансия на 146% инженерно техническая, но мы осознанно ищем мидла, а не сеньера, которому интересно ковыряться, решать проблемы и расти. Контакты те же (я🙂)
👍12🤔3🔥2🥴1
#job #вакансия #додо

Наконец, поделюсь жемчужиной моих вакансий - QA Mobile Team Lead. Это - единственная вакансия, на которую не будет ссылок на формальное описание, все напишу здесь. Мы полностью переделываем наше мобильное приложение Dodo Pizza. Этим занимаются, в основном, 4 команды, в каждой из которых есть QA Mobile Engineer. Эти 4 команды объедены в юнит, на уровне которого есть главный Product Lead, отвечающий за все в нашем мобильном приложении, есть техлиды разработки, отвечающие за общий технический вижн всех 4 команд, и наконец, мы хотим что бы там же был QA Lead, отвечающий за процесс, метрики и результаты тестирования на уровне всего юнита.

Что это означает на практике? Что придется ходить в разные команды (те самые 4 фичатимы в рамках юнита), очень плотно взаимодействовать с QA инженерами в этих командах, лидировать общие точки в тестировании - мы хотели бы иметь общий бэклог багов, общую статистику по юниту в целом, а не по отдельным командам, хотели бы чаще общаться с саппортом. Конечно, где-то придется показывать не словом, а своим примером, но у нас все лидеры на это способны: так, я весь 2023 год активно контрибьютил в нагрузочные тесты на Java и занимался manual тестированием Drinkit, когда было некому. И все же, тебе не придется каждое утро на дэйли говорить "я вчера занимался...", но мы будем обсуждать с тобой конкретные метрики, цифры, удовлетворенность качеством приложения и вот это все. Это настоящая лидерская позиция, слово "Lead" тут не для галочки.

🙌 Пожалуйста, отзовитесь (мне в личку) 🙌, если вы разбираетесь в мобильном тестировании, прочитали какую-нибудь книжку по менеджменту и если вас на работе оценивают не по тому, как вы поработали руками (сколько багов нашли или кейсов написали), а по тому, как поработала ваша команда и какие на выходе получились результаты у команды. Это очень, очень важная разница в майндсете. По технике у нас Kotlin + Kaspresso, Swift + XCUITest, GHA, AllureTestops, запускаем тесты на эмуляторах, тестируем на реальных устройствах + иногда на эмуляторах.
👍14🔥81
#job #вакансия #додо

И еще одна вакансия 🥲. Сегодня это - Mobile QA. Это линейная вакансия в команду внутри того самого юнита, о котором я писал в предыдущем посте ⬆️. Стэк тот же, есть ручная работа, и автоматизаторство очень, очень приветствуется. Без него, если честно, не получится, т.к. команда будет непосредственно участвовать в полной переделке приложения Dodo Pizza, и наши сотни тестов неизбежно начнут быть неактуальными. Но мы рассматриваем тех, кто уже писал какой-то код на каком-то ЯП, а не строго имеет опыт с Kotlin/Swift. Этому, если что, научим.
👍112
Я вчера заболел, температура, слабость, вот это все🙄 Пара человек ждут моего ответа по вакансиям, но я вчера был тотально оффлайн и сегодня, скорее всего, не смогу ещё ни с кем созвониться - буду лежать. Но я обо всех помню🙂

А что бы пост не был бесполезен, предлагаю устроить сессию вопрос ответ в комментариях - готов ответить на любые вопросы о работе в Dodo Engineering (ну, кроме "сколько ты получаешь"🥲). Спрашивайте, буду в течение дня отвечать
💊37🔥32
Ну и немного хороших новостей в этот невеселый день - опубликована первая часть моего воркшопа The art of JUnit extensions. А на ближайшем HB должна быть и вторая🚀
5👍1
#видеозаписи

Когда Дмитрий Тучс рассказывал о работе с расширениями JUnit 5, код в кадре появился уже на третьей минуте.

В рубрике #ТестоваяСреда публикуем это выступление, где максимум практики и конкретики.
🔥306👍1
Что вы думаете о небольшом лайфкодинге на собеседовании QA Automation? Допустимо ли не вспомнить, как пишется цикл for (int i = 0..) "из-за нервов", когда ты Senior вот с этим вот языком программирования в резюме? Предлагаю подискутировать, хочется услышать мнения и тех кто против лайфкодинга, и тех, кто за
👍4
И второй внезапный вопрос - а много у меня читателей из Алматы? Хочется сделать какой-то небольшой уютный offline полумитап, полупивапопить, пообсуждать QA, тесты, о Додо могу порассказывать, да на вопросы поотвечать. Пишите в комменты, если бы пришли на такое мероприятие 🙌
🔥11🤩1
#Management #Собеседование

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

Но вот на одном из собеседований я рассказываю про нас, какие у нас цели, какие рынки приоритетные, какие вызовы перед айтишечкой, чем они обусловлены... А мой визави в это время просто... продолжает работать. Это всегда видно со стороны, когда человек тебя слушает, или занят своими делами, не так ли?

Обидно как-то стало, да и грустно.

Рынок действительно таков, что у каждого соискателя паровозик собеседований, конвейер. Типа, "ну вот получу N офферов и выберу". А я бы хотел работать с теми, кто бы хотел работать со мной. Кто хотя бы меня слушает 🙂. Возможно, это наглость с моей стороны, как вы считаете?
37👍9💯7🔥2
#java #opensource

Сегодня я решил переписать allure-grpc.
Это маленькая библиотечка за моим авторством, которая создаёт красивый отчетик для gRPC тестов.

Но она изначально, как говорится, by design, не заточена под bidirectional streaming и на client-streaming - тоже. Стоит признать, что и в реальных проектах это самые редко используемые виды стриминга в gRPC. Она не то что бы совсем с ними не работает, но, если клиент отправляет несколько message, то в отчёте будет несколько steps - для каждого message. Не-кра-си-во.

Пришло время сделать так, чтоб работала одинаково хорошо с любым видом gRPC. Ну и заодно смахнуть пыль с ачивки open source контрибьютора😁

А вы создаете pullrequest-ы в opensource? Делитесь своим опытом🤟
🔥37
#java #opensource

Если вам интересно, что же получилось с Allure-grpc, а там есть, на что посмотреть (потоки, CountDownLatch-и вот это вот все 🥲 А еще unit-тесты!), то, короче говоря, вот PR. Я надеюсь, что это будет полезно всем QA, кто тестирует streaming gRPC.
Это же так радостно, когда есть проблема, и есть библиотека, которая ее решает, не правда ли?
👍95🔥2🏆2
Впервые действительно почувствовал землетрясение. Причем в качалке, где вокруг куча тренажеров, грифов и блинов, и все это как затряслось...

Напоминаю, что в DODO Engineering можно работать из любой точки мира😀
😱28😁11💯3👍1🔥1
Любопытный факт к 8 Марта:

в Dodo Engineering больше всего девушек именно в QA. А меньше всего - внезапно - среди frontend разработчиков - ноль🥺. Получается, мне очень повезло - работать со многими прекрасными девушками бок о бок ❤️ А еще учить многих прекрасных девушек в QA.GURU❤️ С праздником вас🌹

UPDATE: Походу, забыл про дизайнеров, пальма первенства утеряна 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
56🥰10😁4🤔2