ar
Feedback
LikeaDuck🦆

LikeaDuck🦆

الذهاب إلى القناة على Telegram

Дима Тучс (https://t.me/dtuchs). QA директор в DODO, спикер и программный комиттёр на конфах, создатель авторского курса QA.GURU Advanced. Здесь будет об IT, QA, менеджменте и немного обо мне.

إظهار المزيد
1 450
المشتركون
لا توجد بيانات24 ساعات
لا توجد بيانات7 أيام
-830 أيام
أرشيف المشاركات
Мой друг и бывший коллега, Владимир Быков, UI/UX эксперт и, при этом, любитель попрограммировать, сделал крутую вещь. Я про IOS приложение Weather - how you feel Это просто красиво, на мой взгляд, в этом маленьком приложении есть тот самый уже подзабытый "вау". А ещё, вы можете прочитать подробный рассказ от самого Владимира об истории его создания на medium. Давайте поможем моему другу с багрепортами?😁

Полноценному курсу по Android (Kotlin native) + Kaspresso - быть🔥 Интересно, приобрели бы?
Полноценному курсу по Android (Kotlin native) + Kaspresso - быть🔥 Интересно, приобрели бы?

Упал у меня, значит, билд. Пошел запускать тест локально. Вопрос под вечер знатокам: что тут могло пойти не так? Накидываем в
Упал у меня, значит, билд. Пошел запускать тест локально. Вопрос под вечер знатокам: что тут могло пойти не так? Накидываем варианты ⬇️

#пятничное Вижу сообщение в рабочем мессенджере в одном из каналов, посвященных разработке нашего IOS приложения Drinkit. Автор сообщения - наш Senior QA, Денис. Прочитав это сообщение, я понял, что это прекрасная иллюстрация той мысли, которую я стараюсь нести в этот мир: Лучший QA - тот, что глубоко разбирается в своем продукте (его коде, инфре и так далее). Приведу его полностью, а вас спрошу - нравятся вам такие баг-репорты? Погружаетесь ли вы так же глубоко в проблему, когда ее видите? Стремитесь ли вы к такому, если нет?
Я писал тест на активацию публичной акции неавторизованным пользователем через меню по кнопке "Войти и применить" Так вот, там после авторизации происходит чехарда, которая приводит к разным последствиям: Акция не применится и ничего плохого не произойдет и её можно будет применить (хотя должны были применить) Акция применится, но через какое-то время произойдет краш - {link} Он же, но с прода: {link} Если я всё правильно понимаю, то проблема тут в
private func handleAuthorizationCompleted(with promotion: Promotion) {
    if authSession.isAuthorized == false {
      return
    }

    Task {
      do {
        try await self.promotionsRepository.refresh()

        Task { @MainActor in
          self.proceedWithPromoApplying(promotion, sender: .menu)
        }
      } catch {
        Task { @MainActor in
          self.bannerPresenter.showBanner(for: .genericError())
        }
      }
    }
  }
Здесь promotionsRepository рефрешится асинхронно, поэтому таска следующая за ним может выполнится как до, так и после применения акции. И видимо можно поймать момент, когда мы применим акцию, но потом зарефрешим репозиторий и что-то ломается. Ну или не такая последовательность, но в любом случае, как-будто здесь есть место гонке, которая может всё сломать

#qaguru #javaadvanced #отзыв Хочу рассказать о курсе Java Advanced от Дмитрия Тучса, который попадает в категорию КУРСОВ, Олимп self-help образования. ⛰️ 1️⃣ Почему вписался изначально? За последние несколько лет редко работал с Java и успел забыть то, что раньше знал. На новом проекте надо было строить автоматизацию вокруг монолита на Джаве, поэтому принялся искать курс «для продолжающих», чтобы быстро вкатиться и начать применять знания на боевом проекте. 2️⃣ Первые впечатления Курс сложный. Он не объёмный, он огромный — готовьтесь тратить пару десятков часов еженедельно, чтобы успевать с потоком. Какие-то темы были понятны сразу, какие-то приходилось пересматривать. Если попытаться обобщать, курс строится вокруг границ применения JUnit Extensions для E2E тестов, чтобы код тестов оставался поддерживаемым и понятным. JUnit Extensions — недооценённый алмаз 💎, который требует кропотливой огранки. Дмитрий Тучс овладел ремеслом огранки лучше всех в русскоязычном сегменте, поэтому научитесь вы многому. Как учил Дэвид Линч «Понимание переоценено», поэтому не пытайтесь сходу въехать во все технические детали. Почему так, а не иначе. С практикой и выполнением домашек понимание начнёт догонять. А когда догонит, вы поймёте, что инструмент мощный и позволяет делать крутые штуки без оверхеда. По ходу курса Дмитрий объясняет не только как писать тесты, но и многие вещи из мира разработки бэкенд сервисов. А ссылок на материалы и доклады хватит еще на месяц самообразования. 3️⃣ Для кого? Если вы готовы инвестировать в себя, как в специалиста в QA и автоматизации, этот курс для вас. Думаю, после прохождения результат можно назвать левел-апом с несколькими уровнями. По моему скромному мнению этот курс экономит годы времени в промышленном тестировании. Я был бы счастлив, чтобы соискатели на Senior позиции были на 50% знакомы с темами курса. К сожалению, на рынке обычно все намного печальнее. 4️⃣ Пожелания Было бы круто добавить пару уроков про Testcontainers, как библиотеку для в помощь при написании интеграционных тестов. Курс помог мне переделать запуск интеграционных тестов с параллельным запуском контейнеров, у нас теперь эти тесты бегут в шесть потоков, и каждый класс запускает свой набор контейнеров независимо.

А это просто отзыв, написанный по доброте душевной моим студентом. Такое всегда мотивирует делать интересные штуки🚀
А это просто отзыв, написанный по доброте душевной моим студентом. Такое всегда мотивирует делать интересные штуки🚀

Друзья, привет! Пара апдейтов о том где я, что я - Скоро я запущу стримы по online опенсорс-контрибушену ✅ - Активно готовлю программу Codefest 15, выступлю на квартирнике по нагрузочному с Head of QA VK Мишей Шваркуновым (конечно же, ссылка туда 😁) - Готовлю OKR QA функции в DODO на Q2, помогаю растить крутой (процессно и технически) QA-процесс в нашем втором по размеру, но не по значимости бизнесе - Drinkit ☕️; - Вместе с ребятами же в DODO двигаем автоматизацию кучи рутины - и я не про тесты: Self-service по работе с нагрузочными тестами, автоматизация сбора тестового покрытия по PageObject-ам (ноу-хау, между прочим 🚀), автоматические карантины тестов и многое другое; - Готовим вместе с Ирой Стяжкиной шок-контент - Android приложение niffler, и отдельный курс по всему, что с этим связано 🔥🔥🔥 - И все еще продолжаю вести самый крутой по наполнению программы (готов поставить деньги на это утверждение) курс по Java тестированию "Java Advanced 2.0"! ⬇️⬇️⬇️ Прямо завтра жду вас на открытом занятии в рамках моего авторского курса - Познакомимся с программой курса и учебным проектом; - Расскажу, что такое JUnit Extensions и как они помогают писать декларативные тесты; - Вместе с вами в режиме онлайн напишем первый автотест, использующий JUnit extensions — покажу все шаги и объясню (почти) каждую деталь. Остальные детали - на курсе ); - На занятии отвечу на ваши вопросы, причем любые. Хоть про Page-Object-ы в DODO 😁 До 2 апреля на курс действует моя персональная скидка 13%. Скидка только для участников вот этого канала likeaduck. 🔗 Cкидку по этой ссылке. Актуальная до 2 апреля. До встречи завтра в 20:00 (МСК) онлайн 🙌

#Java #qaguru Скриншотные тесты - неизбежная необходимость во многих проектах, особенно где есть всякие красивые графики и диаграммы в canvas. Проверяется это только скриншотными тестами, и если мы используем Selenide, то понадобиться еще какая-нибудь библиотека-сравнивалка. Самая известная из них - ashot от Яндекса. Тогда наш код может выглядеть примерно так:
assertFalse(
   new ImageDiffer().makeDiff(
       expectedImage,
       ImageIO.read(requireNonNull($("canvas[role='img']").screenshot()))
   ).hasDiff()
);
где ImageDiffer - класс из ashot, expectedImage - ожидаемое изображение, которое у вас где-то в ресурсах, завернутое в BufferedImage. Этот код всем неплох (и даже прекрасно прячется внутрь PageObject), но у меня к нему есть вопросы: 1) В случае падения именно этого ассерта, нам нужен совершенно специфичный формат Allure Attachment:
Allure.addAttachment(
   "Screenshot diff",
   "application/vnd.allure.image.diff",
   objectMapper.writeValueAsString(screenDif)
);
2) Нам надо иметь возможность перезаписать expected изображения запустив тест со специальным флагом (например, у нас новый браузер и в нем canvas выглядит слегка по другому). 3) Задачи 1 и 2 хотелось бы делать где-то под капотом, что бы наш код тестов вообще ничего не знал об этих особенностях. Все эти пункты можно изящно решить с помощью JUnit Extensions, и это один из практических примеров, которые я рассказываю на своем авторском курсе для java автоматизаторов, который стартует буквально на следующей неделе. Наши скриншотные тесты будут простыми, а все, что сложнее ассерта - будет жить в Extension. Приходите послушать меня и Мишу Рубанова в 54 сериях, я гарантирую, что это будет интересно 🚀

Breaking News 🚀 Вы могли и не знать, но я уже почти 4 года состою в программном комитете Новосибирской конфы CodeFest🙂 Помогаю делать программу, отбирать доклады и собирать эту, по моему искреннему мнению, крутейшую IT-конференцию. Сейчас идет набор спикеров. Количество заявок растёт, и чем ближе дедлайн, тем сложнее попасть в программу – конкуренция высокая. Если есть тема, которой хочется поделиться – подавайте заявку сейчас. Буду рад видеть вас на сцене, а от себя обещаю выгрузить свой опыт в вашу подготовку доклада. 🍺 И, конечно же, обещаю выпить с вами пиво на after party 🍺 CodeFest в этом году имеет #15 - юбилейный! пройдет 31 мая — 1 июня 2025 в Новосибирске. Я там обязательно буду.

Подозреваю, что среди моих подписчиков много QA. И хочется спросить у вас (да-да, у тебя, мой дорогой читатель 🫵): Чем, на ваш взгляд, занимается ваш QA Director, он же QA Head, в общем, самый большой начальник с буквами QA в должности? Понимаете ли вы эту роль, приносит ли лично вам пользу ваш хэд, а может быть, у вас есть мнение чем стоило бы заниматься хорошему хэду? Спрашиваю, потому что интересно, насколько далеко или близко от вас ваши менеджеры, насколько они шарят за технические вопросы и насколько могут вам помочь в каждодневной работе? А может быть, вы даже не знаете, как выглядит и как зовут вашего хэда? 😁

Интересно смотреть online стримы по ковырянию java кода в реальных opensource проектах ?
Anonymous voting

Возникла идея 💡 У меня давно есть мысль: написать немного кода в Allure (переписать свой же PR по gRPC), и в Retrofit - создать SOAP Converter. Без подготовки, с нуля, с дебагом, запусками перезапусками, с юниттетстами и вот этим всем. Ниже будет опрос, интересно ли вам было бы посмотреть на такое в прямом эфире? Послушать что я делаю, как мыслю, как дебажу, как тестами покрываю? Может быть, вы даже не против немного донатить на такие трансляции?

Го в google meet

Итак, в 17.00 по Москве начнем в прямом эфире розыгрыш экскурсии и пива для коняг 😈

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

А тем временем, у нас открыта вакансия Senior Backend QA 🚀- в самый высоконагруженный и важный для бизнеса сервис - MAPI (бэкенд нашего мобильного приложения Dodo Pizza). MAPI написан на C#, и тесты там на нем же. Там много, много интеграционных тестов на эндпойнты и бизнес-сценарии (пишут их, в основном, разработчики), полноценное и точное по профилю покрытие нагрузочными тестами (пишут и поддерживают их ребята из команды Performance QA), и ранее в MAPI никогда не было выделенной роли QA инженера. Что хотим? Внедрить и бдить процесс canary релизов, плотнее интегрировать имеющиеся тесты в релизный цикл мобильного приложения, следить за изменениями, контрактами, кволити гейтами. В общем, нужно иметь не только технические скиллы, но и понимать процессы, быть в известной мере самостоятельным бойцом. Рассматриваем хороших инженеров и без опыта в C#, но готовых получить этот опыт у нас. Если интересно и есть вопросы - пишите в тред или в ЛС.

Итак, определить справеделивого победителя предыдущего соревнования не удалось (а на кону - экскурсия в офис ДОДО в Мск / Спб
Итак, определить справеделивого победителя предыдущего соревнования не удалось (а на кону - экскурсия в офис ДОДО в Мск / Спб / Алматы и пиво за мой счет после этого в баре), поэтому, я написал класс Konyagi. Там все, кто отметился в комментариях. Завтра в 15-00 по московскому времени будем разыгрывать в прямом эфире 🚀

Предлагаю угадать целиком заголовок слайда с одного из online занятий Дмитрия. Или тему занятия. В качестве приза - экскурсия
Предлагаю угадать целиком заголовок слайда с одного из online занятий Дмитрия. Или тему занятия. В качестве приза - экскурсия по офису Додо (Алматы, Москва или Питер, о дате и времени договоримся) и пиво за мой счет 🍺

Ребята, всем привет! Появилось желание создать курс по мобильной автоматизации, и хочется собрать информацию о том, что сейчас наиболее востребовано. Для этого я подготовил небольшой опросник, чтобы понять, на какую тему сделать курс: нативная мобильная автоматизация, кроссплатформенная или всё вместе. Мне нужна ваша помощь, чтобы собрать актуальные данные. Результатами опроса поделюсь в следующем посте. Если вам тоже интересно, что сейчас происходит на рынке мобильной автоматизации, поддержите инициативу — делайте репост! Спасибо всем! 🚀

Ребят, если есть пара минут, пройдите, пожалуйста, опрос от нашего ДОДО-шного QA Mobile лида, на предмет - интересно ли вам что-то поизучать по специфике Mobile тестирования, быть может, сделаем что-то крутое по итогу 🙌