Записи с метками unit testing

Программа XP Days Ukraine 2012 готова и ждет вас!

XP Days Ukraine 2012Подготовка конференции XP Days Ukraine 2012 достигла финального этапа и мы рады сообщить вам о последних новостях.

Организаторы постарались на славу - программа уже доступна на сайте конференции и звездный состав докладчиков ждет вас! Мы приготовили очень много всего интересного для разработчиков, тестировщиков, лидеров команд и даже менеджеров…

14-15 НОЯБРЯ ВАС ЖДЕТ НАСТОЯЩИЙ ПАРАД ТРЕНИНГОВ!

Это действительно будет парад тренингов. Вниманию участников представлены 8 различных тренингов на тематику инженерных практик:

  • Тренинги по TDD в JavaPHP и .NET от опытных тренеров Paweł Lipiński, Ивана Мосева, Сергея Калинца и Александра Белецкого.
  • «Specification by Example» от опытнейшего тренера David Evans. Тренинг построен на материалах авторского тренинга Gojko Adzic по его одноименной книге, которая стала бестселлером среди литературы на тематику Agile и тестирования. Тренинг собирает полные классы по всему миру.
  • Тренинг и мастер-класс по архитектуре в Agile проектах от Simon Brown и Johannes Brodwall.
  • Секреты инженерных практик в Agile раскроют Николай Алименков и Алексей Солнцев.
  • «Agile Testing» от Андрея Дзыни. В этом тренинге Андрей передаст весь свой опыт и знания по техникам, подходам, инструментам и практикам тестирования в Agile командах.

16-17 НОЯБРЯ ВНИМАНИЮ УЧАСТНИКОВ ПРЕДСТАВЯТ 28 ДОКЛАДОВ!

В основные дни конференции приглашенные зарубежные докладчики и отечественные профессионалы представят программу из 28 докладов на самые разнообразные темы. Выступления будут проходить в 2 потока на русском и английском языке.

В программу были отобраны только самые лучшие доклады и мастер-классы. В том числе, на тему тестирования:

  • John Smart – создатель инструмента для автоматизации тестирования Thucydides. Он расскажет о применении этого инструмента для написания приемочных тестов, а также сделает обзор BDD инструментов для JVM.
  • Мастер-классы по TDD в Java, .NET и JavaScript дадут опытные XP-шники Johannes Brodwall, Дмитрий Миндра и Александр Белецкий
  • Николай Алименков и Андрей Дзыня поделятся знаниями об Agile тестировании, правильном взаимодействии тестировщика и программиста в Agile команде.
  • Miško Hevery – человек, который учит тестированию в Google, расскажет о философии тестирования итестировании JavaScript.
  • Опытом code review между разработчиками и тестировщиками поделится Алексей Резчиков.
  • Про Continuous Delivery расскажут Антон Архипов и Владимир Мелимука.
  • С великолепным докладом об Agile анти-паттернах выступит Sander Hoogendoorn.
  • А еще BDD, тестирование legacy кода, масштабирование автоматизации тестирования, TDD, рефакторинг, сборки, архитектура…

Конференция станет самой интересной технической конференцией Украины в этом году!

И ЭТО ЕЩЕ НЕ ВСЕ!

Вас ждет pre-party в формате Pecha Kucha (это пока секрет ;) ), after-party и много-много-много общения с докладчиками и участниками из 13 стран! Также мы планируем провести соревнования разработчиков в формате Coding Dojo в преддверие конференции.

У ВАС ЕЩЕ ОСТАЛИСЬ СОМНЕНИЯ?

Вы можете ознакомиться с отчетами и материалами прошлогодней конференции. Если вы хотите присоединиться к 170 участникам, которые уже приняли решение об участии в конференции, то вам стоит поторопиться. С 1 октября действует последний этап регистрации по цене 1800 гривен.

Мы считаем XP Days Ukraine 2012 нашим лучшим мероприятием и будем рады видеть вас на конференции! Присоединяйтесь, будет интересно!

XP Days пройдут в Украине с 14 по 17 ноября

XP Days Ukraine 2012

Мы рады сообщить, что уже вплотную занялись подготовкой одного из самых интересных наших мероприятий – конференции XP Days Ukraine. Кто еще не знает, XP Days Ukraine – это больше чем просто конференция. Мы планируем организовать масштабное мероприятие, посвященное инженерным аспектам Agile подходов, длительностью несколько дней. Первые два дня (14-15 ноября) будут насыщены разнообразными тренингами, мастер-классами и встречами. Следующие два дня (16-17 ноября) будут отведены для докладов, открытых дискуссий и прочих выступлений в формате конференции.

Подобные мероприятия уже давно проходят в других странах и пользуются большим успехом. В Украине XP Days впервые прошли 15-17 декабря 2011 года и собрали более 300 участников из 8 стран. Тематика инженерных практик и подходов выбрана не случайно. Ведь большую часть процесса разработки составляет именно написание кода. У вас появляется отличная возможность не только послушать доклады от ведущих специалистов направления, но и принять участие в нескольких практических тренингах или мастер-классах. Вы можете ознакомиться с отчетами и материалами прошлогодней конференции, чтобы лучше понять специфику и направленность конференции.

На конференции будут освещены основные инженерные практики: Unit Testing, TDD, Continuous Integration, BDD, Code Review, Refactoring, Acceptance Testing и другие. Также будут обсуждаться вопросы архитектуры в Agile проектах, борьбы с технической задолженностью (Technical Debt), взаимоотношений разработчиков и тестировщиков, а также многие другие проблемы современной разработки. Мы будем рады видеть на конференции разработчиков, тестировщиков, лидеров команд, менеджеров проектов и всех, кто является сторонником современных подходов в разработке и хочет усовершенствовать свои навыки и знания. Конференция XP Days Ukraine по праву получила статус самой технической конференции на тему Agile подходов в Украине.

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

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

Участие в конференции будет платным, но мы приложим максимум усилий, чтобы стоимость была минимальной и не составила проблем для большей части желающих посетить конференцию. Количество участников конференции будет ограничено. Мы планируем собрать не более 400 человек. На данный момент у вас есть возможность ранней регистрации по самой низкой цене – 1100 гривен. Указанная цена действует только при регистрации и оплате участия до 15 августа. Стоимость участия будет расти по мере приближения даты проведения конференции.

Присоединяйтесь, будет интересно!

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

Используйте «внутреннюю армию» для решения проблем

внутренний grid

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

Практически у каждого из нас на работе есть служебный компьютер (за исключением людей, которые работают со своих ноутбуков). И этот служебный компьютер достаточно мощный для вашего типа работы. Если нет, то может вам задуматься о смене работы? ;) Идея очень проста – вы большую часть времени не используете всю мощность вашего компьютера. Так почему бы не поделиться ей для внутренних задач?

Я приведу несколько примеров, чтобы стало понятно как именно можно ускорить некоторые процессы. Возьмем функциональное тестирование на примере WebDriver/Selenium. Обычно тестировщики запускают тесты на специально выделенных серверах, предварительно неоднократно запустив на локальной машине. Выделенных серверов обычно не так много, а желающих запустить тесты достаточно. Поэтому тесты проходят во многих проектах по несколько часов (и это еще очень неплохой случай).

Для ускорения нам понадобится Selenium Grid – продукт, разработанный для параллельного запуска тестов. На одном из выделенных серверов поднимается Grid Hub – специальный процесс, который управляет процессом координации тестов и контролирует поднятые процессы WebDriver. На всех рабочих машинах поднимается WebDriver в режиме работы с Grid Hub и подсоединяется к нему. Детальную инструкцию по подъему можно найти тут. При первом же запуске тестов вы увидите, что у кого-то из команды вдруг откроется браузер и начнет работать с тестом. Это не очень удобно. :)

Чтобы избежать подобных проблем, нам нужно изолировать процесс WebDriver и все его дочерние процессы (открытые браузеры). В Unix семействе для этого проще всего завести отдельного изолированного пользователя со своими настройками. В Windows нужно настроить процесс как фоновый. Также на любой системе отлично будут работать виртуальные машины (VirtualBox, VMWare и прочие), которые могут обеспечить полную изоляцию с возможностью запускать любые браузеры на разных операционных системах.

Как работает такой подход? Теперь, при запуске тестов на любой машине в сети, все они будут передаваться на Grid Hub и распределяться по доступным процессам WebDriver/Selenium. Если в вашей команде 5-10 человек, то ждать завершения выполнения ваших тестов придется в несколько раз меньше, что позволит сократить время выполнения до десятков минут. Причем, ускорятся как контрольные прогоны на выделенных серверах, так и локальные прогоны. А представьте, сколько свободных мощностей есть у вас ночью! :) Осталась самая малость – сделать тесты более-менее независимыми друг от друга. Но это уже другая история. :)

Приведу еще один пример. Модульные тесты по определению должны быть очень быстрыми. Хорошие модульные тесты запускаются в пределах секунд, максимум минут. Но не все из нас пишут хорошие тесты. Поэтому они начинают выполняться десятки минут, а в некоторых случаях часы. В основном, это происходит из-за смешивания модульных и интеграционных тестов. Но мы сейчас не об этом. Как же их ускорить?

Я приведу пример из мира Java, но думаю, что подобный подход можно реализовать и в других языках программирования. На помощь нам приходит GridGain – фреймворк для построения распределенных вычислительных топологий в режиме реального времени. Уже давно в нем есть поддержка распределенного запуска модульных тестов. Для успешной операции на каждой машине нужно установить GridGain и убедиться, что включена топология автоматического обнаружения по локальной сети. Вторым шагом нужно пометить ваши тесты специальной аннотацией либо воспользоваться механизмом запуска тестов, встроенным в GridGain. И все! Работает все очень просто. Ваш скомпилированный код автоматически загружается на доступные машины и выполняются тесты. Результаты агрегировуются на машине, с которой тесты запускались. В итоге, вы получаете ускорение в разы практически без усилий.

Подведем итоги. Одна из самых больших проблем в разработке – ожидание. Мы ждем завершения тестов, компиляции, сборки и прочих внутренних задач. Это стоит команде и проекту очень дорого, потому что «простаивают» высокооплачиваемые сотрудники. Ставьте перед собой цель уменьшить продолжительность ожидания и используйте для этого все доступные средства. Это позволит вам работать быстрее и делать более качественные продукты. Удачи!

Не хочешь пропускать ничего интересного? Подпишись на ленту RSS или следи за нами в Twitter!

Что готовит нам весна?

Весна постепенно набирает обороты. Март уже заканчивается и скоро наступят солнечные (мы искренне надеемся) апрель с маем. Мы запланировали много событий на эту весну. Что же вас ждет?

29 марта состоится 14-ая встреча «Клуба анонимных разработчиков». Мы смело можем назвать ее одной из самых интересных встреч – ведь будет рассматриваться «горячая» тема облачной разработки. На суд участников будут представлены доклады о разработке на облаке Amazon и Windows Azure. Поэтому каждый найдет для себя что-то интересное. Встреча пройдет в уютном офисе ДатаАрт по адресу Бехтеревский переулок 14Е. Начало в 19:00.

6-7 апреля состоится новый тренинг «Инженерные практики в Agile». 2 тренера (Николай Алименков и Алексей Солнцев) в течение 2-ух дней познакомят участников с 8-ью современными инженерными практиками. Будут затронуты вопросы внедрения, поддержания и пользы от этих практик. Все практики будут демонстрироваться на реальных примерах и включают в себя многолетний опыт использования наших тренеров. Это один из лучших наших тренингов. Группа почти набрана, осталось всего 5 мест.

13-14 апреля мы впервые проведем новый тренинг Дмитрия Ефименко под названием «Практики эффективного, но экономного проектирования». Дима вложил в этот тренинг весь свой опыт по проектированию программного обеспечения. Тренинг отлично сочетает в себе информацию о процессах разработки и проектирования, работу с требованиями, инженерные практики и подходы, анализ и управление рисками, а также несколько интересных практических заданий. Участники даже будут писать реальный код. :) Группа еще формируется и не поздно присоединиться к составу участников.

21-22 апреля состоится важное событие в мире тестирования – международная конференция SQA Days 11. Наш тренер Николай Алименков выступит на конференции с докладом «А вы знаете что тестируют ваши тесты?». В докладе речь пойдет о связывании тестов с самыми важными артефактами вашего проекта – требованиями и кодом. Николай на практических примерах продемонстрирует как полностью контролировать что и как тестируют ваши тесты. Помимо этого, 20 апреля мы проведем популярный тренинг «QA в Agile». Этот тренинг позволит участникам познакомиться с ролью тестировщика в Agile процессах, грамотно настроить процесс QA в Agile команде, разобраться с ролью автоматизации тестирвания и современными веяниями в мире тестирования. Тренинг будет полезен как менеджерам, так и обычным тестировщикам.

В апреле проходит еще несколько интересных конференций в России и Украине, но побывать везде просто не хватает времени. Вот некоторые из них: CodeFest 2012, Cloud Foundry Open Tour 2012, Software People’12, РИТ++, Quality Assurance Day’12, Fun ConfeT&QA. Мы также постараемся провести очередную бесплатную онлайн конференцию IT Brunch. Тема еще окончательно не выбрана, но в этот раз мы планируем сделать ее более технической.

28 апреля пройдет еще один наш новый тренинг «Успешный старт проекта». Сергей Поволяшко подготовил этот тренинг на основании своего многолетнего опыта управления проектами. На тренинге вы сможете узнать какие активности стоит проводить на стадии инициирования проекта, какие риски есть и как с ними бороться, как оценивать проекты с финансовой и временной точек зрения, что необходимо включить в контракт и как это сделать. Если вы менеджер и ваша работа связана со стартом новых проектов, то этот тренинг для вас!

27-28 апреля Александр Белецкий проведет свой новый тренинг «Веб-разработка с использованием ASP.NET MVC». Этот тренинг рассчитан на программистов, знакомых с концепциями ASP.NET, возможно уже имеющие опыт с Web Forms, но желающих приобрести практические навыки с новой, популярной технологией ASP.NET MVC. Тренинг очень насыщенный и на нем будут рассмотрены практически все аспекты разработки современных веб приложений с использованием ASP.NET MVC.

11-12 мая в Москве состоится очередная конференция для разработчиков Application Developer Days-3. На протяжении двух дней участники смогут посетить множество совершенно разных докладов на тему разработки, а также пообщаться с коллегами. Николай Алименков выступит с докладом «Разработка распределенных приложений на AWS», в котором поделится своим опытом (более 2-ух лет) в разработке приложений в облачной среде. Николай рассмотрит сервисы, предоставляемые Amazon (самым популярным облачным провайдером на данный момент) и даст множество полезных советов тем, кто начинает или только задумывается над переездом в облака.

19 мая мы уже во второй раз соберем Java разработчиков в Киеве на большую конференцию для Java практиков – JEEConf 2012. В этот раз мы собрали еще более интересную программу. Докладчики приедут в Киев с разных стран и будут освещать различные инструменты, методики и практики из мира Java. Николай Алименков выступит на конференции с докладом «За что я ненавижу Hibernate?», в котором рассмотрит недостатки одного из популярных ORM решений и способы их обхода. На данный момент уже более 300 участников изъявили свое желание участвовать в конференции. Это будет действительно яркое событие наступающей весны.

Перед конференцией мы организуем ряд тренингов, посвященных Java разработке: «JavaScript for Java developers», «TDD в Java», «Introduction to Java EE 6″. Все тренинги проводятся опытными профессионалами индустрии. Группы наполняются очень быстро, поэтому поторопитесь занять себе место в составе участников.

Завершит весеннюю гонку конференция AgileBaseCamp CREW DRILL в Харькове 26-27 мая. Это два дня, насыщенных докладами экспертов, воркшопами и вдохновляющими блицами. Панельные дискуссии и Open Space, демонстрации от практиков и два полномасштабных мастер-класса. Наши тренеры Александр Белецкий, Дмитрий Ефименко и Николай Алименков готовятся выступить с докладами. Программа конференции еще формируется.

А еще на апрель и май у нас запланированы корпоративные тренинги в Киеве, Днепропетровске, Воронеже и Москве. Приглашайте нас в свой город и мы с радостью приедем!

Вот такая интересная выдалась весна. Будем рады видеть вас на перечисленных мероприятиях!

XP Days Ukraine глазами организаторов. Часть 2

XP Days Ukraine

Это вторая часть моего отчета о прошедшей конференции XP Days Ukraine. В первой части я рассказал о подготовке и первых двух днях, насыщенных тренингами и мастер-классами. Теперь речь пойдет об основном дне конференции.

Проснуться 17 декабря пришлось достаточно рано, поэтому невыспанность после вчерашнего написания кода до позднего вечера давала о себе знать. Срочно нужен был кофе. В «Парусе» уже все было практически готово, оставались мелочи. Мы расставили указатели (вход в здание найти было не так просто), проинструктировали в последний раз команду волонтеров, определили расположение кофе-пауз и стали ждать первых участников. Я очень рад, что у нас уже сложился костяк команды волонтеров, которые с радостью соглашаются работать с нами. Вы молодцы, ребята!

Благо опыт проведения регистраций у нас есть. Поэтому в этот раз регистрация проходила гладко и плавно. Не было ни очередей ни паники. Каждый участник получил пакет с программой и прочими материалами, а также яркий красочный бейдж. За это особое спасибо нашим печатным подрядчикам и Леше Солнцеву за дизайн. 

У меня даже получилось пообщаться перед открытием со старыми знакомыми, а знакомых на этой конференции было очень много. Кто-то был у нас на тренингах, кто-то посещал другие наши конференции, а кто-то знает меня уже давно. Кофе было вдоволь, как заварного, так и из кофе-машин, которые привезли с собой наши спонсоры.

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

Я не люблю длительные и пафосные открытия, поэтому не стал утомлять участников и закончил достаточно быстро, передав слово первому докладчику в главном зале – Mark Seemann. По традиции на первые доклады я не попадаю. Хочется убедиться, что с организацией все идет нормально. А еще было интересно, что думают участники о мероприятии. Интернет утром работал исправно и народ начал писать в Twitter ленту.

Об интернете хочется рассказать отдельно. В этот раз мы решили попробовать новую технологию, потому что местный интернет был очень нестабильный. Были заказаны четыре 4G точки, которые Wifi роутерами объединялись в единое кольцо. Вдобавок в это же кольцо были подключены 2 Wifi роутера местного интернета. Эта схема должна была обеспечить надежное подключение большому количеству участников и при этом переключать их в зависимости от местоположения на менее загруженную точку. Звучит красиво, стоит немало, но не сработало. :) Все работало классно, пока местный интернет не начал пропадать. Роутеры набирали себе клиентов, но не давали интернета. Хорошо, что у нас был сотрудник для поддержки 4G точек, который постоянно мониторил состояние сети и перестроил во время обеда сеть, отключив местный интернет. Стало работать медленнее, но работать. В целом, жить с таким интернетом было можно, но назвать его стабильным и быстрым не поднимается язык. Будем экспериментировать дальше…

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

Следующей неожиданностью стала популярность сцены В. Мы сделали ее из части холла и задумывалась она как сцена «для гиков». Такого ажиотажа на архитектуру и дизайн в Agile мы никак не ожидали. Во время второго доклада пришлось в экстренном порядке расширять сцену В и она заняла в полтора раза больше места, чем планировалось изначально. Появилась даже мысль поменять местами сцены С и В, но решили оставить как есть. Возможно это было неправильным решением. Иногда на сцене В было душновато. Это связано с работой проектора и узким пространством, которое изначально не являлось самостоятельным залом. Но эти неудобства не останавливали участников и сцена В была чуть ли не самой посещаемой.

Я выступал перед самым обедом с докладом «Жизнь без тестировщиков: миф или реальность?». Пересказывать доклад не буду, вот презентация:

Незаметно подошло время обеда. На него в программе было отведено полтора часа. В самом «Парусе» возможности нормально пообедать за адекватную цену нет, поэтому мы предоставили участникам карту ближайших мест общественного питания. Заодно можно было прогуляться и подышать свежим воздухом. Но все торопились отправиться на обед, тем самым создав «пробку» в гардеробе. Мы заведомо предполагали проблемы с гардеробом и отправили на помощь нескольких волонтеров. Но сама структура гардероба не помогала ускориться. В течении 15 минут все получили свою верхнюю одежду и разошлись обедать. Мне кажется, что спешка была совершенно ни к чему и можно было спокойно пообщаться в холле вместо стояния в очереди. :)

После обеда самое тяжелое время – клонит в сон и информация воспринимается тяжело. Поэтому на главной сцене в программе были 2 секции коротких докладов. Докладчики жгли! У большинства были классные слайды и интересные темы. Лично мне было совершенно не до сна. :)

На предпоследний доклад я отправился послушать Диму Коваленко, который прилетел к нам в гости из США. Он в детстве жил в России, поэтому еще помнит русский язык. Но гораздо приятнее его слушать на английском. Дима рассказал о том, как в компании Groupon относятся к сборкам, тестам, деплоям. Доклад получился достаточно живой и интересный. В самом конце заглянул на доклад по Code Review к Алексею Резчикову.

Мне «выпала честь» закрывать конференцию. Я выбрал для этого тему «Continuous Delivery», потому что она логически объединяла все обсуждаемые практики и подходы. Я собрал немало карточек обратной связи и слов благодарности от участников, что подтвердило правильный выбор темы. Презентация с этого выступления:

Практически все участники собрались на торжественное закрытие конференции. И правильно – ведь каждый хотел уйти не с пустыми руками. Призов было достаточно много. Мы разыграли сувенирные майку и кружку, а также 3 книги «Dependency Injection in .NET» с автографом автора. Наш бриллиантовый спонсор, компания «ДатаАрт», разыграла 5 читалок Amazon Kindle (2 больших и 3 маленьких). А второй наш бриллиантовый спонсор, компания SysIQ, разыграла сертификат на прохождение курса «Certified Product Owner». Он, по воле судьбы, достался одному из сотрудников SysIQ. :) Закрытие было очень живым и веселым, с шутками из зала и общим позитивным настроем. Было очень приятно видеть радостные лица обладателей призов. Мы еще раз поблагодарили всех-всех-всех и попрощались до следующего года.

В целом, осталось очень приятное ощущение. Мы провели что-то новое и интересное, а не «очередную Agile конференцию». А ваши отзывы и слова благодарности помогают нам работать дальше и сильно мотивируют. Будем рады видеть вас снова!

XP Days Ukraine глазами организаторов. Часть 1

XP Days Ukraine

Вырвал время на написание отчета о конференции XP Days Ukraine. Отчет будет состоять из двух частей. В первой части речь пойдет о подготовке и первых двух днях, наполненных тренингами и разнообразными встречами. В этот раз я не буду делать слишком детальный обзор или пересказывать содержание докладов. Расскажу о нашем взгляде на данное мероприятие и моих личных впечатлениях.

Эта конференция получилась самой сложной из того, что мы делали за все время существования тренинг-центра XP Injection. Все складывалось не самым удачным образом с самого начала. Чтобы не пересекаться с другими крупными событиями, мы выбрали середину декабря в качестве времени проведения. И это был не самый удачный выбор. У многих компаний не осталось бюджета, некоторые участники уже начинали планировать новогодние праздники или были загружены работой перед завершением года. Поэтому мы очень скоро осознали, что собрать 500 человек, как изначально планировалось, попросту нереально.

Как обычно были сложности и с помещением. Я уже писал о плачевной ситуации с конференц-сервисом в Киеве. В этот раз она усугубилась проведением крупных новогодних корпоративов. А они гораздо важнее и выгоднее для владельцев площадок, чем наша конференция. Поэтому мы приняли решение ограничить количество участников в любом случае и провести конференцию в бизнес-центре «Парус». Про преимущества и недостатки этого места поговорим позже.

Не самая лучшая ситуация складывалась с докладчиками. По дороге мы потеряли некоторых очень интересных и важных зарубежных гуру. В основном это было связано с новогодними и рождественскими праздниками, а также с закрытием рабочего года. Тем не менее, нам удалось собрать очень сильный состав докладчиков с представителями из Украины, России, Беларуси, Польши, Дании, Норвегии, Англии и США.

Программа получилась на редкость сильная. Лично для меня было только несколько неосвещенных тем: инструменты для Continuous Integration (хотелось бы послушать про Jenkins, TeamCity, Cruise и прочие инструменты от их авторов), BDD (хотелось бы услышать о пользе и реальном опыте применения) и Technical Dept (о методиках сбора и анализа, а также инструментах для борьбы с ним). В остальном меня лично программа устраивала на все 100%. Я бы хотел лично еще раз поблагодарить всех докладчиков, которые приняли наше приглашение или же сами проявили инициативу. Именно благодаря им конференция удалась!

Основная задумка XP Days заключалась в том, чтобы сделать не просто конференцию, а насыщенное событие с возможностью прокачать навыки на тренингах и мастер-классах. Сам конференционный день должен был завершить мероприятие, дав возможность пообщаться и послушать множество интересных докладов. Поэтому мы запланировали на 15-16 декабря проведение 5 тренингов и 3 встреч/мастер-классов. Тренинги покрывали темы TDD в разных языках программирования (Java, PHP, .NET), Agile инженерные практики и Continuous Integration. Встречи проходили на темы автоматизации тестирования, Dependency Injection в .NET и совершенно нового для Украины направления TDD Coding Dojo.

Эти первые два дня получились такими насыщенными, что переплюнули все мои ожидания. Я принимал участие в качестве тренера только в первый день. Мы с Лешей Солнцевым рассказывали про большую часть инженерных практик и их внедрение. В очередной раз я осознал, что этот тренинг стоит делать только в формате двух дней. За один день мы даем такую нагрузку, с которой справляются далеко не все участники. Тем не менее, надеюсь было интересно. Мы постарались как можно больше рассказывать о примерах из нашего реального опыта и показывать живые демонстрации. Спасибо участникам за интересные и жизненные вопросы.

На второй день я отправился во время организаторской миссии посмотреть на другие тренинги. Все тренеры работали на очень высоком уровне. Я увидел очень много общения среди участников. На каждом перерыве были обсуждения, обмен опытом, впечатлениями, инструментами и техниками. И это здорово, потому что благодаря подобному общению мы приобретаем много нового опыта. Мне удалось частично принять участие в тренинге «TDD в Java», который проводил Paweł Lipiński. Paweł оказался очень опытным тренером и позитивным, энергичным докладчиком. Мне очень понравился его стиль ведения тренингов – как можно больше практики. Буквально каждая тема была подкреплена практическим заданием. Задания были на первый взгляд простыми, но реально приходилось поработать, чтобы получилось нормальное решение. При этом каждый участник по очереди выполнял задание вместе с тренером с демонстрацией на экране проектора. Это делало тренинг действительно увлекательным и я с радостью помогал моему коллеге из Zoral Labs успешно справляться с трудностями.

Вечер 16 декабря получился неожиданным благодаря огромным пробкам в городе. Мы должны были подготовить залы к завтрашней конференции, а добраться до центра города вовремя получалось не у всех подрядчиков. А еще и отвратительная погода. В итоге подготовка затянулась до позднего вечера, а я оставил Аню и Лешу, отправившись обратно на нашу площадку тренингов для организации упомянутых выше встреч. К нашему стыду, пришлось прокатить одного из зарубежных докладчиков Mark Seemann на метро в час пик. Это был для него единственный шанс добраться вовремя от отеля до места проведения его мастер-класса по Dependency Injection. Но он справился с задачей отлично и прибыл в назначенное время.

В .NET я не сильно разбираюсь и поэтому выбрал для себя TDD Coding Dojo. Я с опаской относился к этому формату. По собственному опыту знаю, что нужно продумать все до самых мелочей, чтобы живое программирование было интересным и увлекательным. Johannes Brodwall оказался как раз таким человеком, который относится к своему любимому делу с огромной ответственностью и готовится очень скрупулезно. Видно было, что ему очень нравится проводить подобные мероприятия, общаться с коллегами, программировать с ними и наблюдать за тем, как они программируют. Этот человек всегда стремится узнать что-то новое, в то же время с радостью делясь своим опытом и навыками.

Сначала Johannes познакомил нас с форматом и познакомился со всеми участниками, собрав с них ожидания. Потом в паре с одним из нас продемонстрировал принцип работы TDD Coding Dojo. И сразу после этого мы начали делать практические задания. Первое было достаточно простым, но отлично демонстрировало принципы работы в паре и TDD. Я работал в паре с Вовой Цукур и это было реально интересно. С первым упражнением мы справились быстро и без сложностей.

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

Мы писали говнокод, поняли что без тестов даже два «сеньера» ничего путного не напишут, делились на лету знаниями IDE и Java, убедились что IDEA круче Eclipse, рефакторили говнокод, проявляли смекалку в написании регулярных выражений, да и просто получали кучу удовольствия от соревнования. А соревновались с нами ребята на PHP и C#. Команды были сильные и борьба накалялась. Мы вырвали победу с достаточно большим отрывом и это принесло еще больше удовольствия. В итоге разошлись мы только ближе к 11 часам вечера, а некоторые, как потом выяснилось, продолжали кодить еще и ночью дома. Огромнейшее спасибо Йоханнесу (ему приятно будет прочитать свое имя на русском языке) за эту сессию и в целом за приезд на нашу конференцию! Мы обязательно будем организовывать подобные встречи в формате «Клуба анонимных разработчиков».

Продолжение следует…

TDD – самая важная инженерная практика!

Я часто задумываюсь о том, какая инженерная практика для меня самая важная и приносит больше всего пользы. В разное время я думал по-разному. Сейчас однозначно считаю, что это TDD (Test Driven Development). Этот подход к дизайну и разработке приложения дает возможность разрабатывать готовую функциональность гораздо быстрее. Меньше времени уходит на запуск самого приложения, отладку, поиск проблем, написание ненужного кода, построение решений на будущее и т.д.

Но еще важнее то, что TDD способствует внедрению других инженерных практик. Даже не способствует, а требует. Модульное тестирование применяется по умолчанию. Так как вы пишете много тестов, то вам нужно их регулярно запускать. И вы просто обязаны установить инструмент для CI (Continuous Integration) и начать им пользоваться. Небольшие законченные кусочки кода дают вам уверенность в коммите и вы начинаете следовать практике CI, интегрируя свой код как можно чаще. Вы натыкаетесь на участки кода, которые тяжело тестировать. И, чтобы написать тест, вам приходится рефакторить эти участки кода. Рефакторинг также является неотъемлемой частью самой практики TDD. Не все умеют хорошо работать по TDD. Поэтому вы обращаетесь к помощи коллег. Они помогают вам написать тесты и код (парное программирование), а потом просто просматривают ваш код (Code Review), чтобы убедиться в правильности применения TDD. Долго поработав по TDD, вы начинаете чувствовать себя некомфортно без тестов. Это толкает вас к переносу TDD на уровень выше и вы приходите к ATDD (Acceptance Test Driven Development) или BDD (Behavior Driven Development).

Вот и получается, что, следуя TDD, вы автоматически начинаете внедрять все остальные практики. Это своего рода ядро, которое со временем обрастает и превращается в целую инфраструктуру инженерных практик. Поэтому при подготовке программы тренингов для конференции XP Days Ukraine мы уделили большое внимание именно TDD. Мы пригласили опытных тренеров по нескольким наиболее популярным языкам программирования (Java, .NET, PHP), чтобы провести тренинги, затрагивая специфику языка и применяемых в нем инструментов. Это даст возможность участникам получить практический опыт применения TDD и начать внедрение этой полезной практики в своем проекте. Выбирайте наиболее подходящий тренинг, регистрируйтесь и повышайте свой уровень!

WebDriver, Kanban и риски

Помимо множества других мероприятий, осенью мы организуем ряд тренингов. Они пройдут в октябре-ноябре в Киеве.

15 октября запланирован популярный тренинг «Тестирование веб приложений с WebDriver/Selenium». Программа тренинга была полностью переработана после выхода долгожданной версии Selenium 2.0 (aka WebDriver). Из тренинга были выброшены отжившие свое части, все примеры были переписаны с нуля и расширены для демонстрации новых возможностей WebDriver, добавлены некоторые новые инструменты в обзор решений на базе WebDriver/Selenium, описан переход от старой версии на новую и еще много всего интересного. Группа на 15 октября собралась очень быстро, поэтому мы проведем тренинг еще раз 19 ноября. Регистрация открыта и осталось 6 вакантных мест. Торопитесь зарегистрироваться!

22 октября состоится один из самых полезных тренингов «Kanban для управления проектами». Kanban только на первый взгляд выглядит простым подходом для разработки. На самом деле существует очень много тонкостей и полезных практик, которые помогут уберечь вас от ошибок и сделают разработку действительно быстрой и качественной. Тренинг содержит несколько практических упражнений, которые заставляют совершенно по-другому взглянуть на взаимодействие внутри команды и с внешним миром. Участники научатся пользоваться инструментами для анализа и оптимизации процесса разработки в целом. Также будет затронута тема перехода к Kanban с других подходов, благодаря чему каждый сможет сделать осознанный выбор при постановке процесса разработки. Данный тренинг будет полезен разработчикам, лидерам и менеджерам команд для оптимизации работы своей команды. Регистрация продолжается и на данный момент осталось только 4 места.

5 ноября к нам в гости из Харькова приедет Сергей Поволяшко для того, чтобы провести тренинг «Управление рисками в IT проектах». Сергей имеет очень большой опыт работы в IT и имел возможность попробовать себя на разных позициях. Уже около 6 лет он работает на должности CTO в компании TEAM International, поэтому о рисках знает не по наслышке. Сильная теоретическая база Сергея подкреплена сертификациями PMP и ITIL. А на практике свои знания он применяет уже долгое время как опытный менеджер и руководитель. Тренинг далек от сухой теории, в нем много практических упражнений, которые помогают участникам лучше разобраться в теме. В тренинг впервые будет включена игровая симуляция командной работы над рисками, которая позволит участникам проверить себя на практике и понять насколько они освоили материал. Эта симуляция уже проводилась на нескольких Agile конференциях Борисом Вольфсоном (за что ему большое спасибо) и пользовалась большим успехом у участников. Регистрация на тренинг уже открылась и продлится до 1 ноября. Количество мест ограничено.

Также на ноябрь мы готовим один приятный сюрприз для всех любителей и практиков Agile подходов. Подробности вы узнаете очень скоро. Оставайтесь с нами!

Selenium IDE в руках разработчика

WebDriver/Selenium на данный момент является самым популярным инструментом для автоматизации тестирования веб-приложений. Он бесплатный, гибкий, работает напрямую через браузер, доступен в разных языках программирования… Но я буду в этой статье рассказывать не об этом. В комплекте инструментов Selenium есть замечательный инструмент, который могут использовать не только тестировщики, но вообще кто угодно. Речь идет о Selenium IDE.

Изначально Selenium IDE задумывалась как среда для записи тестов и их отладки с последующим переносом в Selenium Core (царствие ему небесное) или в Selenium RC (ныне WebDriver). Но это далеко не все возможности, которые доступны на данный момент. Ведь разработчики редко пишут функциональные тесты, а значит использовать IDE по прямому назначению не всегда имеет смысл. Тем не менее, я считаю этот плагин к Firefox одним из самых полезных. Ведь он помогает мне экономить кучу времени. Поэтому на проводимых мной тренингах уделяю ему достаточно времени, чтобы донести полезность данного инструмента до участников.

Я приведу лишь несколько возможных способов использовать Selenium IDE не для тестирования:

  • Автоматизация длинных скучных сценариев по работе с веб-приложениями. Если вы часто ходите на одни и те же сайты, выполняя похожие операции, то логичнее всего их автоматизировать. Например, вы переводите задачу на ревью или производите поиск товаров в определенной категории на сайте интернет-магазина.
  • Запись новой идеи, найденной вами на чужом сайте. Вместо подробной инструкции по прохождению сценария запишите его с помощью Selenium IDE. Это сбережет ваше время и время ваших коллег.
  • Автоматизация поздравлений в социальных сетях. Все ваши друзья будут получать поздравления с праздниками, а вы будете тратить на это очень мало времени.

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

Selenium IDE с плагином Favorites

Я расскажу о достаточно свежем расширении, которое считаю наиболее полезным именно для разработчиков. Предположим вы записали много различных интересных сценариев и хотите их использовать. Вы открываете Selenium IDE, выбираете пункт меню Open или Open Test Suite (зависит от способа хранения сценариев), долго и упорно лазите по папочкам чтобы найти свои сценарии, потом они загружаются и вы их запускаете. Как-то чересчур сложно все получается. Для упрощения работы с постоянно используемыми сценариями служит плагин Favorites. Вы можете пометить любой test suite как «любимый», после чего он появляется в выпадающем меню быстрой загрузки (показано на картинке выше). Вы выбираете его и он загружается автоматически. А если выбрать его, удерживая клавишу Ctrl, то он сразу же запустится. Это экономит кучу времени.

Пользуйтесь на здоровье и экономьте ваше время, автоматизируя однотипные повторяющиеся операции.

Должен ли заказчик платить за модульные тесты?

Вопрос о том, а должны ли заказчики платить за модульные тесты и как им их продать, я слышу очень часто. Последний раз мы обсуждали его на тренинге «QA в Agile» в Днепропетровске. Вопрос очень интересный и существует немало мнений на этот счет. Я попытаюсь изложить свое в этой статье.

платить или не платить

Начну с того, что уже некоторое время прослеживается очень положительная тенденция. Большинство разработчиков в Украине пишет модульные тесты или хотя бы хочет их писать. Я говорю об Украине, потому что в России дела обстоят на порядок хуже. Это действительно очень классная тенденция, которая говорит о заботе о качестве кода со стороны самих разработчиков. Разработчики начинают осознавать пользу от модульных тестов и использовать их в своей работе добровольно. Таким образом, тесты становятся неотъемлемой частью работы разработчика, без которой ему работается не так комфортно и не так быстро (по крайней мере в долгосрочной перспективе).

Теперь давайте разберемся кто за что должен платить. Выполнение задачи раскладывается на множество составляющих: обсуждение требований, дизайн сессия, модульные тесты (надеюсь, что с использованием TDD), реализация функциональности, рефакторинг решения, интеграция в общий код, прогон всех тестов, проверка задачи вручную, обновление документации (если она есть в каком-либо виде), закрытие задачи в task tracking системе (или на доске задач). Это далеко не полный список для некоторых команд и проектов. Заметьте как много тут активностей. И теперь давайте выкатим этот список заказчику (возможно с оценками по времени для каждого пункта), чтобы выяснить за что он должен платить. Если у него будет выбор, то он выберет один пункт – реализация функциональности. Остальное ему неважно, поэтому он и не хочет за это платить. Ведь вы сами дали ему выбор.

Нужно изменить подход. Не выкатывайте заказчику детали вашей работы (по крайней мере в контексте разговоров об оплате). Вы делаете задачи по устоявшемуся для вас процессу, который позволяет делать их быстро и качественно. И редактировать данный процесс вам нет смысла. Заказчик может его принять либо отказаться, но частичный прием может сделать только хуже, причем всем участникам. Почему? Все дело в мотивации. Я уже писал о том, что нас на самом деле мотивирует. В данном случае работа по устоявшейся и «правильной» схеме дает нам возможность делать работу на приемлемом для нас уровне качества. Это доставляет нам удовлетворение проделанной работой и радость за ее результаты. Что нас и мотивирует. Никто не любит работать с бешеной спешке, пытаться выковырять причину бага и исправить ее в коде без тестов, часами пытаться понять кусок кода без малейшей возможности его изменить (потому что неизвестно, к чему это приведет). Поэтому цикл работы над задачей определяется командой и ее членами. И он не должен приводить к демотивации.

Что же делать, если заказчик или остальная команда противостоит внедрению модульных тестов? Такие случаи тоже бывают. Для вас это отличный шанс поднять свой уровень. Ведь вам нужно преодолеть серьезную преграду. А открытый конфликт и правильная борьба (не руганью и силой) заставляют вас делать очень серьезный анализ, преподносить результаты с выгодных сторон, искать правильные аргументы, разобраться в проблематике досконально. Это здорово и дает очень хороший опыт.

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