DataArt

XP Days Ukraine — Agile на марше

Эллина Азадова Виталий Друк Андрей Ковтун Вадим Михайлюк Ирина Чумакова
QA Engineer QA Engineer .NET Developer Java Developer PHP Developer

Блог DataArt, декабрь 2012, XP Days Ukraine — Agile на марше

В ноябре в Киеве прошла “XP Days Ukraine 2012”, по общему признанию, ставшая одной из самых интересных конференций по agile и инженерным практикам в agile. DataArt выступил ее спонсором и приложил много усилий к тому, чтобы “XP Days Ukraine 2012” прошла на высоком уровне. Впечатлениями делятся коллеги Ирина Чумакова, Эллина Азадова, Андрей Ковтун, Вадим Михайлюк и Виталий Друк.

Основные практики, которые освещались, — TDD и BDD в самых разных проявлениях и технологиях.

Николай Алименков и Андрей Дзыня в докладе “Agile Testing by Example” привели и обыграли примеры взаимодействия QA и девелоперов. Они говорили о важности комуникаций и тесного сотрудничества межу разработчиками и автоматизаторами. Так, разработчики приглашают автоматизаторов на code review новых модульных тестов, и те, имея наметанный взягляд, сразу подсказывают варианты более полного/оптимального покрытия. В свою очередь? программисты помогают коллегам с технической стороны. Таким образом происходит обмен опытом, и все в курсе последних изменений.

Андрей порекомендовал интересную утилиту, помогающую ему в тестировании, — Rapid Reporter. Она представляет собой панельку (bar) куда можно заносить протокол тестовой сессии, делать снимки экрана, записывать видео (должно здорово помогать при free testing чтоб была возможность отмотать назад и определить последовательность действий, приведшую к ошибке) и прочие полезные функции. Rapid Reporter представился полезной программкой, рекомендуем нашим QA обратить на нее внимание.

Очень интересный доклад был у Ивана Медведева из Екатеринбурга — «Наш путь от 09 до 6500 тестов». Его команда несколько лет разрабатывает комплексное решение для российской бухгалтерии. Т. к. она большая, то и проект соответствующий. По мере его развития функциональные тесты стали необходимостью. Все начиналось с каких-то 90 тестов, которые проходили за пару минут на рабочей станции разработчика. Когда тестов стало 300, их выполнение перенесли на отдельную машину, где создали (используя данные статистики посещаемости) три отдельных конфигурации — для IE, Firefox и Chrome. При дальнейшем росте количества тестов, время их прохождения снова вышло за приемлемые пределы. После исследования проблемы было решено оставить только одну, самую быструю, конфигурацию на Chrome, отказавшись от двух значительно более медленных. К тому же, браузерно-зависимые баги составляли небольшой процент, и с ними хорошо справляется человек-QA. В дальнейшем встал вопрос распараллеливания тестов для их одновременного выполнения. Было решено пойти «в магазин через дорогу» и приобрести там 7 самых стандартных системных блоков. Вариант арендования вычислительные мощности в облаке отпал из-за потенциально большей стоимости, удаленности и нежеланиея связываться с системными администраторами J. На каждую машину установили по три «виртуалки», получив таким образом 21 параллельный поток. Распределение тестов между ними организовали по принципу равномерного дробления. В итоге, на полный проход уже имеющихся 6500 тестов необходимо ~40 мин. Для индикации полученного результата в том же магазине напротив приобрели большой телевизор и установили его на видном месте. Так вся команда получила возможность сразу знать своих героев в случае красного результата. Похожее решение было у Андрея Ковтуна на прошлой работе в соседней команде – там просто повесили на стену старый, почти-квадратный монитор, выводящий всякую актуальную информацию. А еще где-то под это дело приспособили обычный дорожный светофор. Оранжевый моргал во время работы, для итогового результата использовали интуитивные зеленый с красным. Вот только виновника при таком варианте сразу не определить. Зато как стильно и наглядно!

Для поддержания всех тестов в рабочем и актуальном состоянии ввели пост дежурного инженера, его по очереди занимает каждый разработчик команды на срок в две недели. Кроме основной работы, этот человек делает релизы и уполномочен на время привлекать других разработчиков (задачи инженера имеют высокий приоритет). В свою очередь все разработчики зовут дежурного инженера на code review. Новоприбывших программистов ставят на этот пост сразу, и после нескольких дежурств новые люди быстро вникают во все тонкости проекта.

Из технической информации стоит добавить, что проект разрабатывается на базе технологии ASP.Net. Используются Mercurial, Selenium, TeamCity. Соотношение функциональных тестов к модульным составляет приблизительно 60/40.

В докладе «Crazy Talk: When 10 second builds start to make you nervous» (Daniel Worthington-Bodart из Google) раскрыл секреты ускорения сборки Java-приложения за счет отказа от тяжеловесных фреймворков и использования оптимизированных средств сборки, таких как jcompilo, а также рассказал об организации инфраструктуры и интеграционного тестирования на разных технологиях и с разными подходами.

Богатый пользовательский интерфейс стал важной частью современных веб-приложений. Объемы скриптового кода растут быстрыми темпами (Андрей Ковтун как ASP.Net разработчик отмечает, что всё больше пишет на JavaScript и меньше — на С#). Но клиентские приложения обладают теми же проблемами кода, что и серверная часть. Рано или поздно в нем начинает проявляться регрессия, кодом становится трудно управлять, а архитектура приобретает вязкость к изменениям. Как и код многих других популярных языков программирования, код на JavaScript может быть покрыт модульными тестами. Об основах Test Driven JavaScript докладывал гуру TDD Александр Белецкий «TDD в JavaScript».

JavaScript-код вначале кажется маленьким и простым. Но, когда необходимо писать на нем много, разработчику бывает сложно покидать «зону комфорта» (например, Visual Studio с Resharper-ом, где есть строгие типы, компиляция и прочие привычные удобства разработки). Александр рекомендует заменить чувство страха неизведанного чувством любопытства (Replace fear of the unknown with curiosity). И если полюбопытствовать, то оказывается, что уже есть готовые фреймворки для тестирования. Это qUnit (от разработчиков jQuery), Jasmine и Mocha. Далее следовали примеры написания тестов с использованием Jasmine. Выглядело все весьма просто и наглядно. Для эффективного тестирования следует использовать MV* архитектуры. Напоследок было сказано, что Jasmine позволяет легко создавать имитации (mocks) AJAX запросов и ответов, позволяя не зависеть от серверной стороны.

В этом году среди докладчиков был Misko Hevery из Google. В докладе «How Testacular makes AngularJS super-heroic at testing» он расказывал о AngularJS, основным создателем которого и является. Вкратце, AnguarJS представляет собой комплексный фреймворк с множеством возможностей. Это data binding, базовые директивы для шаблонов, валидация форм, роутинг, deep linking, dependency injection, повторное использование компонентов, инструменты для взаимодействия с серверными источниками данных. Он чем-то напомнил другой JS-фреймворк — Knockout. Но в ходе кулуарного общения в перерывах между докладами прозвучало, что AngularJS более дружествен к модульным тестам, и многие слушатели доклада заинтересовались использованием AngularJS на своих проектах. Хорошие ознакомительные статьи уже есть на Habrahabr, например, эта.

Видением, кто такой профессионал, как им стать и как поддерживать высокий профессиональный уровень, поделился Сергей Калинец в докладе «Путь XP практика: как стать и оставаться профессионалом». Сергей более 11 лет занимается разработкой ПО, из которых семь — на. NET. Активно применяет TDD уже около пяти лет. Автор ресурса tdd4.net и тренер по инженерным практикам.

Весь доклад был построен на тезисах с комментариями, которые кратко приводятся ниже.

  • Профессионал любит четкость: четкая постановка задачи (не допускает неполных, неоднозначных, расплывчатых толкований) и ее четкое решение.
  • Профессионал умеет планировать (составляет последовательный план действий).
  • Профессионал всегда востребован. Это тот, кому нравится его работа, и его работа нравится другим, особенно тем, кто эту работу заказывает.
  • Профессионал всегда выбирает лучшее из возможного
  • Профессионал дает несколько оценок: оптимальная, пессимистическая и оптимистическая.
  • Профессионал открыт для нового, выслушивает других, аргументирует свою позицию.
  • Профессионал умеет говорить «нет!».
  • Профессионал не допускает никаких овертаймов (понижение эффективности).
  • Профессионал не ищет виноватых (ищет проблему в себе).
  • Профессионал максимально эффективен (XP позволяет делать больше дел за меньший интервал времени). Профессионал использует такие XP-практики и инструменты как Continuous Integration, Continuous Delivery, Version Control System, TDD …
  • Профессионал знает и изучает алгоритмы (как минимум, базовые).
  • Профессионал применяет UML-моделирование (выразить идеи во избежание «тупняка»). Но видит это как средство коммуникации, а не как документацию.

Само собой, возникает вопрос «как это все выучить?». Тут Cергей делится следующими рекомендациями:

  • 2-3 часа в день вне рабочего время — training, так как рабочее время это performance.
  • Twitter, блоги, подкасты, онлайн-курсы (Coursera, edX, Udacity, INTUIT…), клубы, группы, мероприятия (#XPDays…), тусовки.
  • Практика и тренировки: TDD Kata, Coding Dojo, Code retreat.

Где применить навыки:

  • Рабочий проект.
  • Внутренние приложения в компании или же что-то для себя.
  • Open Source.

Напоследок прозвучало напутствия: «Стремиться вперед, постоянно учиться, больше практиковаться и почитать книгу Bob Martin “The Clean Coder”».

Тут же уместно добавить краткую выдержку из доклада Сергея Калинца («Ускоряем разработку. Net приложений с помощью ReSharper»). IТ-специалисту следует досконально изучить средства разработки. Знать их возможности, а также выучить быстрые комбинации клавиш (hotkeys). На время «обучения» желательно их распечатать и держать на столе в качестве подсказок. При этом стараться писать код с минимальным использованием мышки.

Во время выступления «TDD in the real world: Test driving Java web applications» фаната указанной техники Johannes Brodwall можно было наблюдать вживую TDD-разработку веб-приложения с использованием Jetty и Selenium. Благодаря Eclipse-плагину Infinitest объем проверенного продакшн-кода рос с впечатляющей скоростью без какого-либо видимого переключения автора от IDE к браузеру. Позже, на презентации «Enabling TDD in BigData world» Вячеслав Москаленко показал, как обеспечить высокое качество кода без отказа от «легковести» тестирования в проектах, где есть Hadoop, MongoDB, Cassandra или Redis.

Были освещены различные инструменты компилируемых спецификаций Thucydides (John Smart), SpecFlow (Дмитрий Миндра).

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

Одними из самых интересных докладов были о ситуации «Вам достался проект — спагетти-код без тестов. Что делать???» Эту тему освещали Alexander Tarnowski и Wiktor Zolnowski.

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

Отдельным блоком выделялись доклады о системах Continuous Delivery: Владимир Мелимука рассказал о TeamCity, Антон Архипов — о Jenkins и, конечно, Olivier Gaudin рассказал о Continuous Inspection with Sonar и о том, как этот инструмент может контролировать внутреннее качество.

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

Пожалуй, ярким и экспрессивным финалом конференции стал доклад «Agile Anti-Patterns. Yes your agile projects can and will fail too», представленный Sander Hoogendoorn, о том, почему Agile не работает, и о том, что содержание важнее форм.

Отдельного упоминания заслуживает высокий уровень проведения конференции и особая роль в этом DataArt. Свободная непринужденная обстановка, отличная организация и продуманность самой конференции, и очень вкусный кофе от DataArt, повторить который ни у кого не получается. А во время перерывов самым популярным местом площадки конференции были два столика, организованные DataArt, с игрой Mind Flex, которую мы назвали «Мозговые бои».

Все фотографии

Блог DataArt, декабрь 2012, XP Days Ukraine — Agile на марше Блог DataArt, декабрь 2012, XP Days Ukraine — Agile на марше
Блог DataArt, декабрь 2012, XP Days Ukraine — Agile на марше Блог DataArt, декабрь 2012, XP Days Ukraine — Agile на марше
Поделиться:

Оставить комментарий: