Тренинг “Test Driven Development”, 23–24 апреля 2012 года, Москва
March 30, 2012 | Posted by admin under События, Тренинги |
23–24 апреля 2012 года в Москве пройдет тренинг ScrumTrek “Test Driven Development”, тренер Александр Мартюшев.
О тренинге:
Разработка через тестирование (Test-Driven Development, TDD) – это значительно больше, чем просто автоматизация unit-тестирования. Прежде всего, TDD – это подход к дизайну программного обеспечения, позволяющий победить одну из ключевых болезней современных сложных систем: сильную связанность (coupling) отдельных компонентов кода между собой. Как следствие, использование TDD гарантирует, что ваше ПО будет не только подробно оттестировано, но и что его будет легко и дешево сопровождать и развивать. TDD наделяет шаблоны Inversion-of-Control (IoC) и Dependency Injection особым смыслом и значимостью, превращая их из просто модных словечек в повседневную необходимость.
Если вы так или иначе уже применяете автоматизированное тестирование с использованием xUnit-фреймворков, то этот материал будет в особенности полезен. Во-первых,TDD значительно эффективнее в борьбе за повышение степени автоматизации тестирования и улучшение внутреннего качества кода, чем традиционный замер и мониторинг таких метрик, как процент покрытия кода тестами, различные характеристики связанности, размеры методов и классов и т.д. А во-вторых, вы узнаете массу полезных практических советов, как сделать ваши тесты более простыми, эффективными и понятными.
Отдельная часть тренинга посвящена работе с унаследованным (legacy) кодом: как постепенно его делать тестопригодным за счет устранения взаимопроникающих зависимостей между классами (coupling), с чего начать и как двигаться по мере развития и исправления ошибок. Без этого сопровождение и развитие legacy-кода рискует превратиться в кошмар: в код страшно вносить изменения, никто не понимает как что работает, команда разработки деморализована и теряет ключевых специалистов, количество дефектов растет катастрофическими темпами, при этом скорость их исправления и внесения новых функций неуклонно падает.
В результате тренинга вы не только разовьете эрудицию и вдоволь пообщаетесь с коллегами, но и:
- изменится ваше отношение к unit-тестам: их написание станет не только полезным, но и увлекательным занятием;
- эволюционирует взгляд на объектно-ориентированный дизайн;
- целый набор шаблонов проектирования приобретут совершенно особенные смысл и ценность.
Содержание тренинга:
- Введение
- виды автоматизированного тестирования: unit, функциональные, интеграционные
- краткое введение в использование xUnit-фреймворков
- почему написание тестов с использованием xUnit-фреймворков не есть TDD
- TDD
- основная мантра TDD: “red-green-refactor”
- как быть с тестированием связанных классов
- способы уменьшения связанности и повышения тестопригодности: Inversion-of-Control (IoC), Dependency Injection, Message Bus
- Mock-и и Stub-ы
- почему в языке Go отсутствует наследование в привычном понимании
- TDD в реальной жизни
- полезные фреймворки и инструменты
- организация тестов
- использование custom assert-ов
- использование builder-ов для создания окружения
- как быть с СУБД и внешним окружением
- тестирование UI (шаблоны MVС и MVP)
- про процент покрытия кода тестами
- время выполнения тестов, CI
- mock hell
- Полезные элементы BDD:
- should-именование тестов
- шаблон given-when-then
- Работа с унаследованным (legacy) кодом:
- как модифицировать существующую функциональность
- как исправлять ошибки
- С чего начать завтра на работе:
- философия Shu-Ha-Ri
- тестирование отдельных классов
- рефакторинг с использованием Dependency Injection
- Defenition-of-Done
- Ключевые ресурсы и книги
Формат тренинга:
Тренинг построен по принципу “live coding first”, т.е. прежде всего показывается разработка отдельных фрагментов кода, и только потом подтягивается “теория”. Это помогает эффективно усваивать материал, так как подавляющее большинство программистов мыслят “от кода”. Кроме того, в процессе тренинга предлагается выполнить несколько учебных упражнений.
Целевая аудитория:
разработчики, ведущие разработчики, team lead-ы, системные архитекторы
Языки и среды:
-
C# 3.0/4.0 (MS Visual Studio 2008/2010) + NUnit/MSUnit + MoqJava 1.6 (IntelliJ IDEA / NetBeans IDE) + JUnit + MockitoC++ (MS Visual Studio 2008/2010) + googletest + googlemock
C# 3.0/4.0 (MS Visual Studio 2008/2010) + NUnit/MSUnit + MoqJava 1.6 (IntelliJ IDEA / NetBeans IDE) + JUnit + MockitoC++ (MS Visual Studio 2008/2010) + googletest + googlemock