Media is too big
VIEW IN TELEGRAM
#job #вакансия #додо
Вторая, и не менее важная - QA в команду Маркетплейса. Что такое наш маркетплейс - смотрите в видео. Основная особенность этой вакансии - работа с API, выстраивание процессов и, пожалуй, главное - частое переключение контекстов между разными небольшими приложениями, которые это API будут использовать. Вакансия точно будет интересна тем, кто не хочет месяцами и годами тестировать одно и то же. Опять таки - пишите мне, @dtuchs
Вторая, и не менее важная - QA в команду Маркетплейса. Что такое наш маркетплейс - смотрите в видео. Основная особенность этой вакансии - работа с API, выстраивание процессов и, пожалуй, главное - частое переключение контекстов между разными небольшими приложениями, которые это API будут использовать. Вакансия точно будет интересна тем, кто не хочет месяцами и годами тестировать одно и то же. Опять таки - пишите мне, @dtuchs
🔥18❤4
#job #вакансия #додо
Третья вакансия - Performance QA. Нужно желание ковыряться в инфре (у нас все в k8s), понимать что такое микросервисная архитектура, как работать с БД и для чего нужна Кафка. Мочь писать какой-нибудь код на Java (сложнее, чем Selenide + RestAssured) - тоже мастхэв. Вакансия на 146% инженерно техническая, но мы осознанно ищем мидла, а не сеньера, которому интересно ковыряться, решать проблемы и расти. Контакты те же (я🙂)
Третья вакансия - 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, запускаем тесты на эмуляторах, тестируем на реальных устройствах + иногда на эмуляторах.
Наконец, поделюсь жемчужиной моих вакансий - 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, запускаем тесты на эмуляторах, тестируем на реальных устройствах + иногда на эмуляторах.
Telegram
Dmitrii Tuchs
Head of QA @ DODO Engineering | Teacher @ QA.GURU | Program Committee @ Codefest. My channel: https://t.iss.one/likeaduck
👍14🔥8❤1
#job #вакансия #додо
И еще одна вакансия 🥲. Сегодня это - Mobile QA. Это линейная вакансия в команду внутри того самого юнита, о котором я писал в предыдущем посте ⬆️. Стэк тот же, есть ручная работа, и автоматизаторство очень, очень приветствуется. Без него, если честно, не получится, т.к. команда будет непосредственно участвовать в полной переделке приложения Dodo Pizza, и наши сотни тестов неизбежно начнут быть неактуальными. Но мы рассматриваем тех, кто уже писал какой-то код на каком-то ЯП, а не строго имеет опыт с Kotlin/Swift. Этому, если что, научим.
И еще одна вакансия 🥲. Сегодня это - Mobile QA. Это линейная вакансия в команду внутри того самого юнита, о котором я писал в предыдущем посте ⬆️. Стэк тот же, есть ручная работа, и автоматизаторство очень, очень приветствуется. Без него, если честно, не получится, т.к. команда будет непосредственно участвовать в полной переделке приложения Dodo Pizza, и наши сотни тестов неизбежно начнут быть неактуальными. Но мы рассматриваем тех, кто уже писал какой-то код на каком-то ЯП, а не строго имеет опыт с Kotlin/Swift. Этому, если что, научим.
👍11❤2
Я вчера заболел, температура, слабость, вот это все🙄 Пара человек ждут моего ответа по вакансиям, но я вчера был тотально оффлайн и сегодня, скорее всего, не смогу ещё ни с кем созвониться - буду лежать. Но я обо всех помню🙂
А что бы пост не был бесполезен, предлагаю устроить сессию вопрос ответ в комментариях - готов ответить на любые вопросы о работе в Dodo Engineering (ну, кроме "сколько ты получаешь"🥲). Спрашивайте, буду в течение дня отвечать
А что бы пост не был бесполезен, предлагаю устроить сессию вопрос ответ в комментариях - готов ответить на любые вопросы о работе в Dodo Engineering (ну, кроме "сколько ты получаешь"🥲). Спрашивайте, буду в течение дня отвечать
💊37🔥3❤2
Ну и немного хороших новостей в этот невеселый день - опубликована первая часть моего воркшопа The art of JUnit extensions. А на ближайшем HB должна быть и вторая🚀
❤5👍1
Forwarded from Heisenbug — канал конференции
#видеозаписи
Когда Дмитрий Тучс рассказывал о работе с расширениями JUnit 5, код в кадре появился уже на третьей минуте.
В рубрике #ТестоваяСреда публикуем это выступление, где максимум практики и конкретики.
Когда Дмитрий Тучс рассказывал о работе с расширениями JUnit 5, код в кадре появился уже на третьей минуте.
В рубрике #ТестоваяСреда публикуем это выступление, где максимум практики и конкретики.
🔥30❤6👍1
Что вы думаете о небольшом лайфкодинге на собеседовании QA Automation? Допустимо ли не вспомнить, как пишется цикл
for (int i = 0..) "из-за нервов", когда ты Senior вот с этим вот языком программирования в резюме? Предлагаю подискутировать, хочется услышать мнения и тех кто против лайфкодинга, и тех, кто за👍4
И второй внезапный вопрос - а много у меня читателей из Алматы? Хочется сделать какой-то небольшой уютный offline полумитап, полупивапопить, пообсуждать QA, тесты, о Додо могу порассказывать, да на вопросы поотвечать. Пишите в комменты, если бы пришли на такое мероприятие 🙌
🔥11🤩1
#Management #Собеседование
Я думаю, что желание работать друг с другом должно быть обоюдовзаимным. Поэтому и собеседование не должно быть допросом или экзаменом, а должно выстраиваться "мы продаем себя, вы - себя". Исходя из этого, хорошим собеседованием я считаю то, где мы (я и тот, кто пришел ко мне на интервью) говорим примерно поровну, и к концу оба понимаем, что нам по пути.
Но вот на одном из собеседований я рассказываю про нас, какие у нас цели, какие рынки приоритетные, какие вызовы перед айтишечкой, чем они обусловлены... А мой визави в это время просто... продолжает работать. Это всегда видно со стороны, когда человек тебя слушает, или занят своими делами, не так ли?
Обидно как-то стало, да и грустно.
Рынок действительно таков, что у каждого соискателя паровозик собеседований, конвейер. Типа, "ну вот получу N офферов и выберу". А я бы хотел работать с теми, кто бы хотел работать со мной. Кто хотя бы меня слушает 🙂. Возможно, это наглость с моей стороны, как вы считаете?
Я думаю, что желание работать друг с другом должно быть обоюдовзаимным. Поэтому и собеседование не должно быть допросом или экзаменом, а должно выстраиваться "мы продаем себя, вы - себя". Исходя из этого, хорошим собеседованием я считаю то, где мы (я и тот, кто пришел ко мне на интервью) говорим примерно поровну, и к концу оба понимаем, что нам по пути.
Но вот на одном из собеседований я рассказываю про нас, какие у нас цели, какие рынки приоритетные, какие вызовы перед айтишечкой, чем они обусловлены... А мой визави в это время просто... продолжает работать. Это всегда видно со стороны, когда человек тебя слушает, или занят своими делами, не так ли?
Обидно как-то стало, да и грустно.
Рынок действительно таков, что у каждого соискателя паровозик собеседований, конвейер. Типа, "ну вот получу 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? Делитесь своим опытом🤟
Сегодня я решил переписать allure-grpc.
Это маленькая библиотечка за моим авторством, которая создаёт красивый отчетик для gRPC тестов.
Но она изначально, как говорится, by design, не заточена под bidirectional streaming и на client-streaming - тоже. Стоит признать, что и в реальных проектах это самые редко используемые виды стриминга в gRPC. Она не то что бы совсем с ними не работает, но, если клиент отправляет несколько message, то в отчёте будет несколько steps - для каждого message. Не-кра-си-во.
Пришло время сделать так, чтоб работала одинаково хорошо с любым видом gRPC. Ну и заодно смахнуть пыль с ачивки open source контрибьютора😁
А вы создаете pullrequest-ы в opensource? Делитесь своим опытом🤟
GitHub
allure-java/allure-grpc at main · allure-framework/allure-java
Allure integrations for Java test frameworks. Contribute to allure-framework/allure-java development by creating an account on GitHub.
🔥37
#java #opensource
Если вам интересно, что же получилось с Allure-grpc, а там есть, на что посмотреть (потоки, CountDownLatch-и вот это вот все 🥲 А еще unit-тесты!), то, короче говоря, вот PR. Я надеюсь, что это будет полезно всем QA, кто тестирует streaming gRPC.
Это же так радостно, когда есть проблема, и есть библиотека, которая ее решает, не правда ли?
Если вам интересно, что же получилось с Allure-grpc, а там есть, на что посмотреть (потоки, CountDownLatch-и вот это вот все 🥲 А еще unit-тесты!), то, короче говоря, вот PR. Я надеюсь, что это будет полезно всем QA, кто тестирует streaming gRPC.
Это же так радостно, когда есть проблема, и есть библиотека, которая ее решает, не правда ли?
GitHub
Improve AllureGrpc integartion for support non-blocking (streaming) stubs by dtuchs · Pull Request #1015 · allure-framework/allure…
Context
In gRPC, client streaming and bidirectional streaming require to use a non-blocking (async) Stubs. These stubs uses different threads for handling sendMessage(T message) and onClose(status,...
In gRPC, client streaming and bidirectional streaming require to use a non-blocking (async) Stubs. These stubs uses different threads for handling sendMessage(T message) and onClose(status,...
👍9❤5🔥2🏆2
Любопытный факт к 8 Марта:
в Dodo Engineering больше всего девушек именно в QA. А меньше всего - внезапно - среди frontend разработчиков - ноль🥺. Получается, мне очень повезло - работать со многими прекрасными девушками бок о бок ❤️ А еще учить многих прекрасных девушек в QA.GURU❤️ С праздником вас🌹
UPDATE: Походу, забыл про дизайнеров, пальма первенства утеряна 🙂
в Dodo Engineering больше всего девушек именно в QA. А меньше всего - внезапно - среди frontend разработчиков - ноль🥺. Получается, мне очень повезло - работать со многими прекрасными девушками бок о бок ❤️ А еще учить многих прекрасных девушек в QA.GURU❤️ С праздником вас
UPDATE: Походу, забыл про дизайнеров, пальма первенства утеряна 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
❤56🥰10😁4🤔2
Тихо и почти буднично мы вчера поставили рекорды по выручке и числу заказов в минуту.
Рекорд заказов в минуту - 735
Это Dodo Pizza России. Dodo Brands Worldwide: 835 в минуту (Здесь, кстати, на конкретном соотношении цифр видно, как важна наша цель стать пиццерией #1 в Турции и Дубае, масштабировать бизнес на зарубежных рынках).
Выручка в России за 1 день 534 млн рублей🔥В Евразии - 776 млн рублей📈
Трудно переоценить роль QA функции в том, что рекордный по нагрузке день прошел без сучка и задоринки в техническом плане💻
Рекорд заказов в минуту - 735
Это Dodo Pizza России. Dodo Brands Worldwide: 835 в минуту (Здесь, кстати, на конкретном соотношении цифр видно, как важна наша цель стать пиццерией #1 в Турции и Дубае, масштабировать бизнес на зарубежных рынках).
Выручка в России за 1 день 534 млн рублей🔥В Евразии - 776 млн рублей
Трудно переоценить роль QA функции в том, что рекордный по нагрузке день прошел без сучка и задоринки в техническом плане
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥20❤7🍾6
#java #frameworks
Selenide - крутой.
Я думаю, что большинство из вас в этом и так не сильно сомневается (список пользователей говорит сам за себя), но вот пару дней назад произошло маленькое событие, которое могло бы вообще пройти незамеченным для меня, но не прошло: я обновил в одном из своих проектов Selenide c 6.х до последней версии 7.2.1. И у меня перестал компилироваться код🙂 Казалось бы, первая мысль поругаться, но я, наоборот, пишу пост похвалы.
А дело все в том, что разработчики Selenide радикально упростили жизнь всем, кто писал или планирует написать свои кастомные CollectionCondition. Если раньше надо было переопределять 3 метода:
Причем, что делает второй и для чего он нужен технически я даже не понимал и просто писал
А еще, надо было писать свои классы исключений:
А теперь все стало радикально просто, надо переопределить один метод :
Назначение и сигнатура которого понятны даже если вообще в первый раз слышать про
Респект всем библиотекам и фреймворкам, которые упрощают свои API и делают их чистыми для понимания и написания кода. Selenide с каждым релизом, обрастая все новым функционалом, становится проще для понимания и расширения. И это хорошо.
Selenide - крутой.
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 - крутой.
selenide.org
Selenide users
🔥44🥰8👍1
The art of JUnit extensions 2 - быть!
Есть ощущение, что я делаю важную вещь для кого-то, кто только начинает свой путь в AQA.
Кажется, что после просмотра обеих частей хотя бы кто-то решит построить свой "фреймворк" (тьфу три раза) на красивых экстеншенах, а не на портянке статических методов и классов на 500 строк.
А я буду этому рад.
Есть ощущение, что я делаю важную вещь для кого-то, кто только начинает свой путь в AQA.
Кажется, что после просмотра обеих частей хотя бы кто-то решит построить свой "фреймворк" (тьфу три раза) на красивых экстеншенах, а не на портянке статических методов и классов на 500 строк.
А я буду этому рад.
Heisenbug 2024 Spring. Конференция по тестированию не только для тестировщиков
The art of JUnit extensions 2 | Доклад на Heisenbug 2024 Spring
Продолжение воркшопа The art of JUnit extensions с Heisenbug 2023 Autumn.
🔥53👍13❤11
Media is too big
VIEW IN TELEGRAM
Об одной из главных проблем автоматизации тестирования с одной из моих лекций QA.GURU Advanced.
👍30💯10❤5🔥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