Итак, сейчас в воздухе витает идея создания однодневного курса по Test-Driven Development (TDD), ориентированного на студентов. Цель простая — за один день дать студентам и начинающим разработчикам необходимые знания для того, чтобы грамотно покрывать тестами свой код.
Предварительный план мероприятия включает в себя 6 сессий по 45 минут с перерывами по 15 минут а также часовым перерывом на обед. План сессий представлен ниже:
- Что такое тестирование, зачем оно нужно. Различные типы тестирования (модульное, интеграционное, приемочное). Участники процесса тестирования. Роль тестирования в различных моделях разработки ПО (agile, rup, cmmi etc.). Цели и принципы автоматизации тестов. Идеология TDD.
- Введение в модульное (юнит) тестирование. Обзор фреймворков и библиотек для тестирования. Инструментарий и автоматизация тестирования. Простые примеры TDD с использованием MbUnit & Gallio Icarus. Тестовое покрытие на примере NCover.
- Тестируемость кода. Проблемы (smells) в коде, поведении и проекте. Практики правильного построения тестов. Примеры.
- Продвинутые практики модульного тестирования. Типы утверждений, секции иниациализации и финализации. Data-driven тесты. Способы организации модульных тестов.
- Тестовые дубли – кто они и что с ними делать. Моки, фейки, стабы. Обзор современных мок-фреймворков – приемущества и ограничения. Паттерны ААА и Record-Replay. Примеры использования Moq.
- Дизайн для тестируемости и проблема зависимостей. Паттерн инъекции зависимостей. Введение в идеологию DI/IoC на примере фреймворка Unity. Примеры использования DI для тестирования.
Это предварительный план, и реально все может измениться. В плане “стека” очень сложно выбрать технологии, т.к. лично я фанат TypeMock но боюсь что на подобных встречах нужно рассказывать про менее коммерческие библиотеки. На данный момент, склонности к стеку такие:
- MbUnit/Gallio. Единственной серьезной альтернативой является NUnit, но имеет смысл показывать именно “классический” синтаксис, мне кажется MbUnit тут как раз подходит.
- Moq. Мое мнение что Rhino Mocks хоть и является “доминирующим” фреймворком, он слишком запутан, “вариативен” и вообще устарел.
- Unity. Про DI все равно придется говорить, а поскольку базовые возможности всех фреймкворков примерно одинаковы, лучше рассказывать про тот, который легко изучать и использовать.
- NCover. Не думаю что стоит “евангелизировать” идею тестового покрытия, но упомянуть стоит. Хороших некоммерческих альтернатив нет (PartCover не предлагать), поэтому придется говорить про NCover.
Реальное время подготовки такого эвента – пару месяцев. Планируется чисто теоретические эвент (т.е. без лабораторных и т.д.), но с хэндаутами и возможно последующими вебкастами – хотя на счет вебкастов не обещаю т.к. это жутко трудоемкое занятие.
Вообщем, нужна критика и полезные рекоммендации, так что если они у вас есть – пишите комментарии. Спасибо. Ах да, и забыл сказать, место проведения эвента – Санкт-Петербург.
Update: рассматривается также вариант номинальной аттестации участников, т.е. заполнение короткой multiple-choice анкеты в конце встречи. По результатам теста можно выдавать либо документ о прослушивании теста (если человек провалил тест) либо аттестат (если человек сдал тест хорошо). Эта практика уже проверенная, и мне кажется самое время задействовать бренд spbalt.net для чего-то полезного. (Почему spbalt.net а не Ineta? Потому что spbalt.net намного более активная группа, и участники там посильнее. Одним словом, авторитета больше.)
Оставить комментарий