#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
Скоро я выступаю на конференции Heisenbug 2024 Spring с очередным воркшопом про JUnit Extensions, который будет продолжением первой части. Буду рассказывать, внезапно, про JUnit)) А если серьезно, я надеюсь что получившийся проект пригодится очень многим новичкам в Java AQA для построения действительно изящной тестовой инфры. Будет интересно!
Приходите на конфу, там найдется много интересного помимо меня😀
Конференция пройдет 16.04 и 22-23.04 сначала в online, а потом и в offline формате.
Думаю, многим из вас билет оплатит компания. Но, если не срастется, а послушать доклады и задать вопросы все равно хочется, приходите в личку — постараюсь помочь со скидкой на билет. Не только лишь постараюсь, но и помогу😂
Приходите на конфу, там найдется много интересного помимо меня😀
Конференция пройдет 16.04 и 22-23.04 сначала в online, а потом и в offline формате.
Думаю, многим из вас билет оплатит компания. Но, если не срастется, а послушать доклады и задать вопросы все равно хочется, приходите в личку — постараюсь помочь со скидкой на билет. Не только лишь постараюсь, но и помогу😂
YouTube
Дмитрий Тучс — The art of JUnit extensions
Ближайшая конференция — Heisenbug 2025 Autumn, 19—20 октября, Санкт-Петербург + online. Подробности и билеты: https://jrg.su/D6uGC9
— —
В режиме онлайн берем микросервисный проект (Spring Authorization Server, Spring OAuth 2.0 Resource Server) и строим полноценную…
— —
В режиме онлайн берем микросервисный проект (Spring Authorization Server, Spring OAuth 2.0 Resource Server) и строим полноценную…
🔥27❤13👍4❤🔥3
Сегодня иду записывать подкаст на тему ... а сложно сказать, на какую тему🙂. Поговорим о QA, безо всяких JUnit-ов и прочих автоматизаций. Кстати, это уже не первый мой опыт с подкастом, ранее был чуть более хардкорный и технический - Тесты и Пицца от Ufostation. Лайк, шер, предложения тем для будущих подкастов в комменты🙌
Podcast.ru
s02e05 - Тесты и пицца 🍕 – UfoStation podcast – Podcast.ru
Гость выпуска — Дмитрий Тучс (https://t.iss.one/dtuchs), Head of QA at Dodo Engineering; один из преподавателей в https://qa.guru
🔥34❤11😍4👍2
The art of JUnit Extension 2 сегодня состоялся! Спасибо всем, кто смотрел вживую, а код, который мы сегодня писали, будет завтра в репо
И да, мы, наконец, полностью решили проблему параметризации тестов с разными allureId с помощью Extension, будет что разобрать в свои проекты 💯
И да, мы, наконец, полностью решили проблему параметризации тестов с разными allureId с помощью Extension, будет что разобрать в свои проекты 💯
Heisenbug 2024 Spring. Conference on testing not just for testers
The art of JUnit Extensions 2 | Talk at Heisenbug 2024 Spring
Continuation of The art of JUnit extensions workshop from Heisenbug 2023 Autumn.
🔥30❤8👍2
О чем врут тестировщикам.
И тестировщики?
Свой взгляд на большие проблемы в образе мыслей QA инженеров будет в моем offline докладе на Codefest. Приходите, если вы в Новосибирске 🙂
И тестировщики?
Свой взгляд на большие проблемы в образе мыслей QA инженеров будет в моем offline докладе на Codefest. Приходите, если вы в Новосибирске 🙂
🔥14❤13👍2
#java #обучение #qaguru
Вчера провел первое занятие уже 5-го потока своего авторского курса Java Advanced в QA.GURU. Как и все предыдущие, курс будет глубоко погружать в разработку и тестирование вокруг Java.
Если вдруг кто-то из вас желает залететь в уходящий поезд 5-го потока, можете воспользоваться моим персональным промокодом DTUCHS10, который даст вам скидку 10% до 25 апреля включительно. Для активации промокода напишите в QA.GURU-SALES.
Вчера провел первое занятие уже 5-го потока своего авторского курса Java Advanced в QA.GURU. Как и все предыдущие, курс будет глубоко погружать в разработку и тестирование вокруг Java.
Если вдруг кто-то из вас желает залететь в уходящий поезд 5-го потока, можете воспользоваться моим персональным промокодом DTUCHS10, который даст вам скидку 10% до 25 апреля включительно. Для активации промокода напишите в QA.GURU-SALES.
qa.guru
Автоматизированное тестирование на Java для продвинутых | Онлайн-курс по написанию автотестов | QA.GURU
Продвинутый курс по автоматизации тестирования на Java. Курсы повышения квалификации на Java для тестировщиков уровня Middle и выше.
❤10
#gradle
О моем любимом Gradle.
Имеем мы, значит, официальный туториал Spring о том, как настроить генерацию JAXB. Идем по нему, вставляем в наш build.gradle строки из туториала и - все работает 🙂. Строки такие:
И все бы ничего, но
Что может быть проще загуглить на что предлагают заменить
И есть даже пример кода:
было:
стало:
Ну, все просто, но кажется
Собираем проект, и ошибка:
`No such property: layout for class: org.gradle.api.Project
Possible solutions: layout`
ОКЕЙ, пробуем по-другому
и классы генерятся в
Идем дальше
- ну вот это-то должно нам дать строку с путем к папке?
результат опять с таким путем:
КОРОЧЕ ВОПРОС. Кто знает как это прописать чтоб работала
О моем любимом Gradle.
Имеем мы, значит, официальный туториал Spring о том, как настроить генерацию JAXB. Идем по нему, вставляем в наш build.gradle строки из туториала и - все работает 🙂. Строки такие:
task genJaxb {
ext.sourcesDir = "${buildDir}/generated-sources/jaxb"
ext.schema = "src/main/resources/countries.xsd"
...И все бы ничего, но
${buildDir} самим Gradle объявлена deprecated, и здравствуй вечный WARNING при сборке проекта, а в будущем - и невозможность перейти на какой-нибудь Gradle 9 или 10. Сейчас я на 8.6. Что может быть проще загуглить на что предлагают заменить
${buildDir} сами разработчики gradle? И есть официальный док, который дает нам ответы на этот вопрос:Deprecations
Deprecated Project.buildDir is to be replaced by Project.layout.buildDirectory
The Project.buildDir property is deprecated. It uses eager APIs and has ordering issues if the value is read in build logic and then later modified. It could result in outputs ending up in different locations.
It is replaced by a DirectoryProperty found at Project.layout.buildDirectory. See the ProjectLayout interface for details.
И есть даже пример кода:
было:
file("$buildDir/myOutput.txt")стало:
layout.buildDirectory.file("myOutput.txt")Ну, все просто, но кажется
.file в нашем случае лучше заменить .dir. Пишем:tasks.register('genJaxb') {
ext.sourcesDir = "${Project.layout.buildDirectory}/generated-sources/jaxb"
ext.classesDir = "${Project.layout.buildDirectory}/classes/jaxb"
...Собираем проект, и ошибка:
`No such property: layout for class: org.gradle.api.Project
Possible solutions: layout`
ОКЕЙ, пробуем по-другому
ext.sourcesDir = "${layout.buildDirectory}/generated-sources/jaxb"
ext.classesDir = "${layout.buildDirectory}/classes/jaxb"
...и классы генерятся в
niffler-gateway/property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/dmitriitucs/IdeaProjects/qg/niffler/niffler-gateway/build))/generated-sources - уже лучше, есть прогресс, но хотелось то в build/generated-sources🙂Идем дальше
ext.sourcesDir = layout.buildDirectory.dir("generated-sources/jaxb").toString()
ext.classesDir = layout.buildDirectory.dir("classes/jaxb").toString()- ну вот это-то должно нам дать строку с путем к папке?
результат опять с таким путем:
niffler-gateway/map(org.gradle.api.file.Directory property(org.gradle.api.file.Directory, fixed(class org.gradle.api.internal.file.DefaultFilePropertyFactory$FixedDirectory, /Users/dmitriitucs/IdeaProjects/qg/niffler/niffler-gateway/build)) org.gradle.api.internal.file.DefaultFilePropertyFactory$PathToDirectoryTransformer@4fe6e613)/guru/qa/niffler/userdata/wsdlКОРОЧЕ ВОПРОС. Кто знает как это прописать чтоб работала
mkdir и создавала папку тупо build/generated-sources🙂?? Ни чатгпт, ни гугл пока не помогли. Так и живем с Gradle 🙂Getting Started | Producing a SOAP web service
Learn how to create a SOAP-based web service with Spring.
👍1😁1
Среда - день хороших новостей!
Сегодня опубликован подкаст "Гости из IT" с моим участием и тем самым Антоном Комоловым😁
В подкасте никаких JUnit-ов и Gradle-ов не будет, но точно будет много моих мыслей о состоянии дел с QA. Интересно будет всем, залетайте, слушайте, пишите комменты, опровергайте, и будьте крутыми QA 🚀
Сегодня опубликован подкаст "Гости из IT" с моим участием и тем самым Антоном Комоловым😁
В подкасте никаких JUnit-ов и Gradle-ов не будет, но точно будет много моих мыслей о состоянии дел с QA. Интересно будет всем, залетайте, слушайте, пишите комменты, опровергайте, и будьте крутыми QA 🚀
Podcast.ru
Гости из IT – Podcast.ru
Антон Комолов и специалисты Friflex зовут в гости лучших экспертов из IT-индустрии, а они простым языком рассказывают о том, как технические инновации меняют нашу жизнь и работу. Friflex разрабатывает цифровые продукты — мобильные приложения, сайты, высоконагруженные…
🔥26❤7👏4
Анонсирую продолжение Сибирского тура оффлайн выступлений. Вслед за выступлением на Codefest 25 мая я поеду в Омск на небольшую, но обещающую быть ламповой конфу Сибирь.JS 22-23 июня. Буду рад пообщаться offline со всеми 🙌
🔥32