LikeaDuck🦆
1.45K subscribers
65 photos
3 videos
97 links
Дима Тучс (https://t.iss.one/dtuchs). QA директор в DODO, спикер и программный комиттёр на конфах, создатель авторского курса QA.GURU Advanced. Здесь будет об IT, QA, менеджменте и немного обо мне.
Download Telegram
#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
Вот так выглядит JavaDoc в одном из классов Spring Data. А ведь я решил его почитать именно ради того, чтоб понять что это за IntFunction<? extends ScrollPosition> positionFunction. Так что вот она - возможность стать контрибьютором Спринга для всех желающих 😁
🔥6😁5🤔3
Тихо и почти буднично мы вчера поставили рекорды по выручке и числу заказов в минуту.

Рекорд заказов в минуту - 735
Это Dodo Pizza России. Dodo Brands Worldwide: 835 в минуту (Здесь, кстати, на конкретном соотношении цифр видно, как важна наша цель стать пиццерией #1 в Турции и Дубае, масштабировать бизнес на зарубежных рынках).

Выручка в России за 1 день 534 млн рублей🔥В Евразии - 776 млн рублей 📈

Трудно переоценить роль QA функции в том, что рекордный по нагрузке день прошел без сучка и задоринки в техническом плане 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥207🍾6
#java #frameworks

Selenide - крутой.

Я думаю, что большинство из вас в этом и так не сильно сомневается (список пользователей говорит сам за себя), но вот пару дней назад произошло маленькое событие, которое могло бы вообще пройти незамеченным для меня, но не прошло: я обновил в одном из своих проектов Selenide c 6.х до последней версии 7.2.1. И у меня перестал компилироваться код🙂 Казалось бы, первая мысль поругаться, но я, наоборот, пишу пост похвалы.

А дело все в том, что разработчики Selenide радикально упростили жизнь всем, кто писал или планирует написать свои кастомные CollectionCondition. Если раньше надо было переопределять 3 метода:
            @Override
public void fail(CollectionSource collection, List<WebElement> elements, Exception lastError, long timeoutMs)

@Override
public boolean missingElementSatisfiesCondition()

@Override
public boolean test(List<WebElement> elements)

Причем, что делает второй и для чего он нужен технически я даже не понимал и просто писал return false;🥲
А еще, надо было писать свои классы исключений: public class SpendsMismatch extends UIAssertionError

А теперь все стало радикально просто, надо переопределить один метод :
            @Override
public CheckResult check(Driver driver, List<WebElement> elements)

Назначение и сигнатура которого понятны даже если вообще в первый раз слышать про CollectionCondition.

Респект всем библиотекам и фреймворкам, которые упрощают свои API и делают их чистыми для понимания и написания кода. Selenide с каждым релизом, обрастая все новым функционалом, становится проще для понимания и расширения. И это хорошо.
Selenide - крутой.
🔥44🥰8👍1
Второй день работаю 22 часа из 24-х. А все потому, что
😢25🙏6🫡62🔥1😁1💯1
The art of JUnit extensions 2 - быть!
Есть ощущение, что я делаю важную вещь для кого-то, кто только начинает свой путь в AQA.

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

А я буду этому рад.
🔥53👍1311
Media is too big
VIEW IN TELEGRAM
Об одной из главных проблем автоматизации тестирования с одной из моих лекций QA.GURU Advanced.
👍30💯105🔥1🤩1😎1
Еще из приколов моего любимого Gradle: Кто сходу увидит здесь ошибку? Я пропустил двоеточие в одной из зависимостей, и на мой взгляд - это делает "адрес" зависимости невалидным, и было бы здорово, если бы Gradle сказал мне "could not resolve dependencies, bro". Но Gradle совершенно ничего не говорит в таком случае по нажатию кнопки "Reload gradle project" (та самая "обновить"). И я сижу и не понимаю - ну почему у меня не импортируются классы из этой библиотеки? Сижу смотрю граф зависимостей, действительно не нахожу там нужную мне spring-data-commons и недоумеваю. Я пошел дальше и написал testImplementation "org.springframework.data:spring-data-commonsываывавыdsfvsfd:${springDataCommonsVersion}" и даже тут не увидел ошибки. Хотя может быть во всем виновата IDEA со своей кнопкой, а Gradle не при чем. Но кто-то точно не прав 🙂
😁13👍7🤔4
Скоро я выступаю на конференции Heisenbug 2024 Spring с очередным воркшопом про JUnit Extensions, который будет продолжением первой части. Буду рассказывать, внезапно, про JUnit)) А если серьезно, я надеюсь что получившийся проект пригодится очень многим новичкам в Java AQA для построения действительно изящной тестовой инфры. Будет интересно!

Приходите на конфу, там найдется много интересного помимо меня😀

Конференция пройдет 16.04 и 22-23.04 сначала в online, а потом и в offline формате.

Думаю, многим из вас билет оплатит компания. Но, если не срастется, а послушать доклады и задать вопросы все равно хочется, приходите в личку — постараюсь помочь со скидкой на билет. Не только лишь постараюсь, но и помогу😂
🔥2713👍4❤‍🔥3
Сегодня иду записывать подкаст на тему ... а сложно сказать, на какую тему🙂. Поговорим о QA, безо всяких JUnit-ов и прочих автоматизаций. Кстати, это уже не первый мой опыт с подкастом, ранее был чуть более хардкорный и технический - Тесты и Пицца от Ufostation. Лайк, шер, предложения тем для будущих подкастов в комменты🙌
🔥3411😍4👍2