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

в 9:28, , рубрики: heisenbug2018moscow, java, Блог компании Сбербанк, конференции, Тестирование IT-систем

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

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

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

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

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

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

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

Программа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Дал объяснение основным классам (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).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итоги

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

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

Автор: dopefish_hunters

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js