Why TDD doesn't work? (Кому что мешает, или почему TDD не работает?)
1. Кому что мешает,
или почему
TDD
не работает
Артем Грошевой
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
2. Кто я?
● Занимаюсь разработкой ПО более 4-х лет (из них 3
года на .NET)
● Проработал во многих компаниях - от медицинских
проектов на waterfall до "полного" agile :)
● Стараюсь применять лучшие практики
программирования
● Исполняю роль Team Lead на текущем проекте в
компании Acceptic
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
3. О чем я тут буду говорить?
● Что такое TDD и как оно работает
● Что мешает применять TDD
● Что с этим делать?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
4. Почему я об этом говорю?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
5. Что такое TDD?
● Пишем сначала тест потом код
● Теста пишем ровно столько, сколько нужно для
сценария
● Кода пишем ровно столько, сколько нужно для того,
чтобы тест прошел
● При написании кода реализуем самое простое
решение
● После того, как тест проходит, рефакторим код
● Комитим
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
7. Преимущества
● Предсказуемый способ разработки
● Ускорение в разработке
● Уверенность в коде
● Самодокументируемый код
● Дизайн приложения – лучше
● Приложение уже точно поддается тестированию
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
8. Внимание - шутка
«Правила TDD расслабляют настолько, что
подобный процесс разработки можно назвать
программированием для домохозяйки»
как бы не так...
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
9. Теперь уже точно все знают, но мало кто использует
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
10. Что мешает?
● Отрицание
● Неверное понимание
● Внешние ограничения
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
12. 1. Баловство все это
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
13. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
14. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
15. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
16. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
17. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
18. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
19. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
20. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
21. Сколько стоит изменение?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
22. 2. Лишнее время
Это круто, но я написал бы этот код быстрее без TDD
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
23. Не забываем про отладку
Ее мало кто учитывает при планировании… но
она есть, и на нее нужно время…
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
26. Так может потратить это время на более полезное
занятие?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
27. Если Вася пишет x строчек кода в день,
то с введением TDD он будет писать x/2 строчек кода?
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
28. Программисты не должны боятся писать код,
потому что это их основное занятие
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
29. 3. Частый рефакторинг
● Мы часто рефакторим и все
тесты падают
● Меняем одну строчку, куча
тестов падает
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
30. Рефакторинг без тестов - это больно
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
31. 4. We’re fucking brilliant
Тесты не нужны,
если ты:
● Гений
● Любишь
заниматься
отладкой
● Хакер в душе
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
33. 1. Тесты после кода
● Написали код – покрыли его тестами
● Изменили код – исправили тесты
Ну и что в этом плохого?
● Тесты после кода сложнее писать
● Мотивация писать «после» значительно
ниже
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
34. 2. Пропуск стадии Red
Или логика уже есть, или.. тест ошибочный
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
36. Менеджмент
... боится,
что увеличится
время разработки
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
37. Команда
достаточно мощный источник влияния, весьма инертна
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370
39. Дисциплина
● Не нужно менять правила
● Нужно практиковать регулярно
URL: www.acceptic.com
Software programming services and
Dedicated developers teams
E-mail: info@acceptic.com
Tel.: +1 800 990 4370