company_banner

HeisenBug глазами сотрудника СберТеха

    В этом посте я хочу поделиться обзором 15 докладов с конференции Heisenbug, рассказать, что интересного было на стендах у компаний, а также поделиться видеоматериалом из доклада Артема Ерошенко о создании actions плагинов для IntelliJ IDEA, которые помогут быстро изменять код тестового проекта.



    Информация о HeisenBug


    Heisenbug – техническая конференция для специалистов в области тестирования. В основном, она интересна тестировщикам, software development engineers in test, специалистам по автоматизированному и нагрузочному тестированию. Организаторами выступает команда JUG.RU, за плечами которой такие конференции, как Joker, HolyJS, SmartData, DevOops, DotNext, Mobius.

    Место проведения




    Пятая по счету конференция проходила в отеле «Славянская Рэдиссон», метро Киевская, г. Москва. При подходе к гостинице был виден электронный баннер с логотипом конференции. Далее при входе в лобби гостиницы, участника сопровождали указатели до стоек регистрации и гардероба. Заблудиться невозможно. Регистрация участников и спикеров проходила на первом этаже, в основном фойе конференции располагались стенды партнеров, конференц-залы, залы с кофе-брейком и обедами. Уровень охранников порадовал, так что «безбилетным зайцам» было не попасть. Всего на мероприятии присутствовало порядка 500+ участников, большинство из которых зарегистрировалось за две недели до начала.

    Программа


    Программу можно найти здесь. Хочу отметить, что JUG.RU всегда стремится сделать программу практической, без лишней воды и с известными зарубежными специалистами. Доклады делятся на условные обозначения:



    Если вы впервые планируете стать докладчиком на Гейзенбаге, посмотрите памятку спикера, – в ней довольно ёмко собрана вся полезная информация.

    Коммуникация и волонтерство




    Чтобы участники не пропустили что-то важное на конференции, были организованы телеграм-канал и телеграм-чат. Кстати в последнем искали волонтеров на просмотр видеозаписей, за что давали бесплатный билет на конференцию.

    Если вы решитесь стать волонтером, обозначьте свое решение организаторам как можно раньше. Подготовка к мероприятию осуществляется задолго до начала конференции. При условии свободных мест вас запишут в команду.

    Стенды компаний


    В этот раз на конференции было представлено более десятка стендов крупных IT-компаний, таких как Deutsche Bank, Альфа-Банк, Райффайзен, Badoo, Luxoft, СКБ Контур, Gett и др. Каждая из компаний по-своему подошла к организации интерактивов с участниками мероприятия, поэтому в перерывах между выступлениями скучать не приходилось. Можно было порешать задачи за небольшой памятный сувенир, поиграть в видео- и настольные игры, поучаствовать в лотерее.



    Райффайзен предлагал пройти онлайн квест с разгадкой всяческих пазлов, также ценители нестареющей классики могли поиграть в Mortal Kombat 3 на Sega. Коллеги из Альфа-Банка сделали телеграм-бота с задачами, плюс в лотерее разыгрывал большой набор Lego Mindstorms. Хочу похвалить стенд Deutsche Bank, где разработчики в живом общении выдавали задачи и принимали участие в обсуждении, в отличие от всех остальных стендов, где лишь проверяли правильность ответов.



    Многие компании ненавязчиво занимаются хантингом специалистов, раздавая буклеты с описанием вакансий (не все же заниматься благотворительностью).

    Обзор докладов


    1. У нас DevOps. Давайте уволим всех тестировщиков — Барух Садогурский.

    Открывал конференцию Барух Садогурский, developer advocate из компании JFrog, известный спикер на конференциях, связанных с Java и Devops. В докладе Барух затронул проблемы качества ПО в условиях частых релизов, которые вызваны постоянно растущими запросами бизнеса, сложности тестирования кода вследствие плохой архитектуры, модернизации роли тестировщика в современных Agile командах. Доклад было интересно слушать от начала до конца, много юмора, интересных фактов и сравнений.

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



    2. Нужно сделать рефакторинг проекта? Есть же IDEA! — Артем Ерошенко.

    Артем в своем докладе рассказывал о создании actions плагинов для IntelliJ IDEA, которые помогут вам в быстром изменении кода тестового проекта.



    Дал объяснение основным классам (AnAction, PsiClass, PsiAnnotation, AnActionEvent, JavaCodeStyleManager), которые являются входной точкой Plugin Actions.

    Рассмотрел, как решить следующие задачи:

    а) Что на проекте у нас автоматизировано, а что нет. Автоматическая синхронизация с Jira.


    По тексту аннотации @DisplayName сходил в Jira, получил нужные тикеты и проставил все необходимые связи, используя @TmsLink.

    б) Автоматическое проставление @Tags из контекста Jira.


    Есть определенные лэйблы в тикете favorite, regress. Переходим в тест, есть аннотации @TmsLink, применяем плагин и у нас появляются новые аннотации @Tags, и далее средствами Junit мы можем запускать тесты по этим тэгам.

    в) Что в тестах проверяется?


    Есть автотест, есть steps, делаем экспорт и у нас появляются шаги в тестах. Также в видео есть пример для двух тестов.

    Еще Артем демонстрировал, как быстро перейти с Allure 1 на Allure 2.

    Очень практичный доклад для тех, кто задумывается об оптимизации процесса написания кода. Исходный код плагинов можно найти здесь.

    3. Проект на Java и Reactor? — А как же тесты? — Кирилл Меркушев.

    Кирилл поделился опытом разработки международного медицинского стартапа Vivy. Рассказал, как были решены проблемы масштабируемости монолитной системы при помощи микросервисов и библиотеки Reactor. Большое внимание было уделено этой библиотеке, ее базовым принципам, подходам к тестированию реактивных систем, киллер-фичам (таким как чекпоинты и логи в цепочке запроса, Hooks и повторные запросы (retry).



    Лично я не имел дело с тестированием реактивных систем, поэтому для меня это было ново и интересно.

    4. Как мы написали фреймворк Sealant для поиска утечек памяти в JS — Сергей Докучаев.

    В данном докладе речь идет об утечках памяти (объектах, доступных из кода, но более не нужных) на одностраничных web-приложениях. Сергей ставил задачу автоматически найти все критичные утечки памяти в выпускаемой версии продукта. Говорил о сложностях нахождения подобных ошибок и как можно делать это вручную, используя инструменты Google Chrome. Далее рассматривал инструмент SeaLant, автором которого он является. SeaLant позволяет автоматизировать нахождение утечек, взаимодействуя с процессом Chrome по протоколу Chrome DevTools. Заканчивал доклад тем, что если на странице можно выполнять циклические сценарии (с одного устройства, с одной сессией, без перезагрузки страницы), то вероятнее всего, протестировав их, можно избавиться от большей части утечек памяти.

    5. Особенности визуального тестирования интерфейсов — Антон Усманский, ведущий разработчик инструментов Gemini (инструмент визуального тестирования) и Hermione (инструмент следующего поколения, более общего назначения, который умеет выполнять ассерты скриншотами).



    Доклад полезен тем, кто задумывается о внедрении инструментов визуального тестирования в свои проекты. Тем, кто уже использует Gemini и Hermione, тоже может быть интересно — дает понимание, как внутри устроены инструменты. Местами автор касается достаточно базовых вещей.

    6. Заморочки в Selenium WebDriver — Алексей Баранцев.

    Алексей рассказывал о проблемах проекта Selenium и о причинах их возникновения. Поделился деталями сборки монорепозитория с помощью сборщика Bazel. Затронул тему видимости элементов (в стандарте W3C WebDriver нет операции, которая проверяет, виден элемент или нет) и пояснил, чем отличаются функции getProperty, getDomAttriubute, getAttribute.



    Знание заморочек позволит пользователям отличить фичи от багов и разрабатывать эффективные «костыли» в своих тестовых проектах.

    7. Рецепты создания с нуля и развития системы нагрузочного тестирования — Анатолий Пласковский.

    Анатолий представляет группу исследования производительности Яндекс.Деньги. В своем докладе он поделился практиками, как определить потребность в исследованиях быстродействия, где найти людей для проведения данных мероприятий и как выстроить процесс исследований. Автор заостряет внимание на том, что исследование производительности != нагрузочному тестированию, и что только тестирование на продакшне может показать релевантный результат. При этом проводить эксперименты можно без проблем для клиентов путем выбора тестовых маршрутов и данных, контроля и прогноза возможных исходов сценария.

    Анатолий создал телеграм-чат loadland, в котором обсуждается нагрузочное тестирование, и куда можно стучаться за помощью и советами.

    8. Epic Fails производителей девайсов — Валентин Wylsacom Петухов.

    Закрывал первый день доклад небезызвестного Wylsacom, который был неоднозначно воспринят публикой (судя по чату участников гейзенбага в телеграме :) ).

    Для себя я ничего интересного не вынес из доклада про бета-тестирование устройств и приложений, но возможно фанатам понравилось. На дискуссионной зоне выстроилась очередь за фото, так что пиар удался.



    9. Элегантное интеграционное тестирование зоопарка микросервисов с помощью TestContainers и JUnit 5 на примере глобальной SMS-платформы — Андрей Маркелов.

    Автор рассказывал, как у себя в компании тестируют микросервисы при помощи связки TestСontainers + Junit 5 + MockServer. Доклад звучал интересно, но такая схема не для большого количества микросервисов. Ссылка на исходный код.



    10. Вуайеризм тестировщика, или Как наблюдение за пользователями поможет вам — Антонина Хисаметдинова.

    Очень интересный доклад, хоть и связанный больше с web-дизайном, чем с тестированием. В нем рассказывается о практиках UX и подводных камнях, которых нужно избегать при проектировании клиентского интерфейса.



    Антонина выделила основные ошибки при наблюдениях за пользователями в таких UI-решениях, как отключение кнопок, использование лоадеров, подсказок, привычных компонентов и др.

    Также стоит отметить графическое оформление доклада с интуитивно понятными примерами из реальных проектов (как и подобает докладам про UX).

    11. Тестирование систем с внешними зависимостями: проблемы, решения, Mountebank — Андрей Глазков.

    Автор рассказывал про эволюцию этапов мокирования на своих проектах. Рассматривал плюсы и минусы мокирования на уровне кода. Делился опытом, в каких случаях хорошо создать фейковую реализацию сервиса. Но если вы хотите, чтобы фейковые сервисы перестраивались на лету, проксировались и при этом ввелись логи пришедших запросов, то Андрей рекомендует присмотреться к инструменту Mountebank.



    Основные плюсы:

    • mounteBank — работает на уровне TCP;
    • JavaScript injection;
    • надежность и скорость из коробки;
    • отличная документация;
    • поддержка докер-контейнеризации.

    Выявленные ограничения инструмента:

    • внешние системы с сохранением данных;
    • WebSocket — не поддерживается;
    • нагрузочные тесты (> 150 rps), но можно использовать балансировщик.

    12. Зачем профилировать end-to-end тесты мобильных приложений — Вячеслав Фролов.

    В своем докладе Вячеслав рассказал о состоянии автотестов в компании Badoo, а именно, как они решали задачу распараллеливания 1500 мобильных UI-тестов, которые занимают 30 машино-часов на прогон на одном симуляторе. В итоге им удалось достичь результата в 30 минут, что позволило запускать 80 тысяч тестов в день. Помимо линейного увеличения мощности, применили оптимизацию по очистке кэша приложений вместо рестарта симулятора. Также в докладе были упомянуты профилировщики, и как с их помощью обнаружили особые случаи узких мест в тестах: например, метод long_press() в ios 11.0 выполнялся 5 секунд, а после оптимизации стал выполняться за секунду, или как с помощью http-хедера «keep-alive» можно избежать повторной установки соединения, тем самым значительно ускорить все тесты разом. Также автор рассказал, как отобразить результаты профилировщика с использованием инструментов FlameGraph и FlameChart.



    13. Юнит-тесты: от теории к практике — Вадим Пуштаев.

    Автор делится опытом разработки UnitTests. Доклад состоял из трех частей.

    1. Что мы хотим от UT → Регрессия (Поменял код, проверил), Влияние на архитектуру (Когда разработчики, пишут тесты, код становится лучше), Понимание (разбираться с legacy кодом);
    2. Принципы → Вадим вспоминает, что с теорией не так хорошо, как с практикой. Отверг принцип «тестируй интерфейс, а не реализацию», так как в реализации может быть много логики. Плюсанул принцип «unit tests это не механизм тестирования». Считает это некий архитектурный прием, мощный и очень полезный, но это не механизм проверки и верности кода.
    3. Реализация → Рассказ о технических приемах, которые автор использует в работе (на каждый класс один тестовый класс, создание своих матчеров, применение внешних зависимостей, если это требуется и т.д).



    14. Тестируем и плачем вместе со Spring Boot Test — Кирилл Толкачёв

    Кирилл решил вернуть нас в мир IoC, DI и Spring и рассказать, как при помощи JUnit 5 и SpringBoot написать unit и компонентные тесты.



    Большим плюсом этого доклада является то, что спикер писал большую часть тестов в real-time, т.е. наглядно показал поэтапный процесс оборачивания тестов Spring-овыми аннотациями. Правда, из-за большого количества кода, было сложно уложить в голове все показанные приемы. Кирилл рассмотрел фичи Spring по работе с профилями, Mock&Spy Beans, а также настройки конфигураций контекста. Как по мне, Spring — это довольно тяжелый фреймворк для подобных задач и только опытным юзерам удастся не наступить на грабли при разработке unit тестов.

    15. Прокачиваем мобильные автотесты — Екатерина Батеева.

    В докладе автор рассматривал инструмент XCTest для автоматизации IOS-приложений. Тиражировать этот инструмент на другие проекты оказалась неудобно.



    А именно были выявлены следующие минусы:

    • тяжело читать настройки запуска;
    • сложно конфигурировать сборки;
    • сложно интегрироваться с различными сервисами;
    • неудобно управлять скриншотами;
    • неудобно настраивать перезапуски тестов.

    Далее Екатерина рассказывала про open-source фреймворк Fastlane, который решил их проблемы.

    Итоги


    В целом, конференция мне понравилась. Получил заряд эмоций и ответы на интересующие вопросы. На BoF-сессии большинство участников сняли свои «маски» и вели жаркие дискуссии в рамках BoF-тем. Кофе-брейки и обеды были идеальны, всегда было что перекусить. Также хочу отметить организацию мероприятия — команда JUG.RU с каждым разом делает Heisenbug все лучше и лучше. Напоследок — ходите на конференции, делитесь полученными знаниями и улучшайте свои навыки!

    P.S: Выражаю благодарность Алексею Румянцеву за участие в подготовке статьи и Артему Ерошенко за видеоматериал.
    Сбербанк
    198,00
    Компания
    Поделиться публикацией

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое