Тренинг “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
 
					