Transcript
Page 1: Test Driven Development как инструмент уменьшения кадровых рисков

TDD как инструмент уменьшения кадровых рисковНиколай ГребневКомпания «CUSTIS»

Page 2: Test Driven Development как инструмент уменьшения кадровых рисков

Содержание• Кадровые риски• Условия задачи• Test Driven Development• Факторы кадрового риска• Как и почему?• Что, где, когда и сколько?• Итоги

Page 3: Test Driven Development как инструмент уменьшения кадровых рисков

КАДРОВЫЕ РИСКИ

Page 4: Test Driven Development как инструмент уменьшения кадровых рисков

Кадры решают всеИ.В. Сталин

Page 5: Test Driven Development как инструмент уменьшения кадровых рисков
Page 6: Test Driven Development как инструмент уменьшения кадровых рисков
Page 7: Test Driven Development как инструмент уменьшения кадровых рисков
Page 8: Test Driven Development как инструмент уменьшения кадровых рисков
Page 9: Test Driven Development как инструмент уменьшения кадровых рисков
Page 10: Test Driven Development как инструмент уменьшения кадровых рисков

Риски• Незаменимый разработчик• «Не знал и сломал»• Квалификация ниже ожидаемой• Обучение новых сотрудников

Page 11: Test Driven Development как инструмент уменьшения кадровых рисков

УСЛОВИЯ ЗАДАЧИ

Page 13: Test Driven Development как инструмент уменьшения кадровых рисков

Мечта руководителя

Page 19: Test Driven Development как инструмент уменьшения кадровых рисков

TEST DRIVEN DEVELOPMENT

Page 20: Test Driven Development как инструмент уменьшения кадровых рисков

Test Driven Development— техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест. (Wikipedia)

Page 21: Test Driven Development как инструмент уменьшения кадровых рисков

TDD

Написать тест

Написать реализацию

Запустить тесты

Тесты не прошли

Все тесты проходят

Page 22: Test Driven Development как инструмент уменьшения кадровых рисков

TDD – unit-тесты вперед!

Page 23: Test Driven Development как инструмент уменьшения кадровых рисков

Unit-тестирование• Тестируем:

– Класс• Поведение• Взаимодействие

Одновременно тестируем только один класс

Page 24: Test Driven Development как инструмент уменьшения кадровых рисков

ФАКТОРЫ КАДРОВОГО РИСКА

Page 25: Test Driven Development как инструмент уменьшения кадровых рисков

Причины• Сильносвязная архитектура• Позднее обнаружение ошибок• Плохая документированность

Page 26: Test Driven Development как инструмент уменьшения кадровых рисков

Сильносвязная архитектура

Page 27: Test Driven Development как инструмент уменьшения кадровых рисков

Правки исходного кода ведут к непредсказуемым последствиям

Изменения

Ошибки

Ошибки

Page 28: Test Driven Development как инструмент уменьшения кадровых рисков

Держать все в голове

Page 29: Test Driven Development как инструмент уменьшения кадровых рисков

Цена ошибки

Разработка

Тестирование

Эксплуатация

Page 30: Test Driven Development как инструмент уменьшения кадровых рисков

Тестирование

Page 31: Test Driven Development как инструмент уменьшения кадровых рисков

Эксплуатация

Page 32: Test Driven Development как инструмент уменьшения кадровых рисков

Разработка

Page 33: Test Driven Development как инструмент уменьшения кадровых рисков

Плохая документированность• Документация устаревает сразу после

своего написания• Никто не поддерживает актуальность

документации• Зачастую документация вообще отсутствует

Page 34: Test Driven Development как инструмент уменьшения кадровых рисков

КАК И ПОЧЕМУ?

Page 35: Test Driven Development как инструмент уменьшения кадровых рисков

Тестируем• Класс

– Поведение– Взаимодействие

Page 36: Test Driven Development как инструмент уменьшения кадровых рисков

Одновременно тестируем только один класс

Page 37: Test Driven Development как инструмент уменьшения кадровых рисков

Зависимость

Page 38: Test Driven Development как инструмент уменьшения кадровых рисков

Inversion of Control

Page 39: Test Driven Development как инструмент уменьшения кадровых рисков

Декомпозиция

Page 40: Test Driven Development как инструмент уменьшения кадровых рисков

Локализация ошибок

Изменения

Ошибки

Page 41: Test Driven Development как инструмент уменьшения кадровых рисков

Раннее обнаружение ошибок• Тесты запускаются:

– Регулярно во время разработки– До окончания этапа разработки

Page 42: Test Driven Development как инструмент уменьшения кадровых рисков

Раннее обнаружение ошибок

Тестирование

Эксплуатация

Разработка

Page 43: Test Driven Development как инструмент уменьшения кадровых рисков

Документация• Всегда актуальна• Автоматическая проверка соответствия

спецификациям

Page 44: Test Driven Development как инструмент уменьшения кадровых рисков

ЧТО, ГДЕ, КОГДА И СКОЛЬКО?

Page 45: Test Driven Development как инструмент уменьшения кадровых рисков

Что?• Высокое качество конечного продукта• Хороший дизайн кода• Уверенность при модификации• Снижение рисков от незаменимых и

неопытных разработчиков

Page 46: Test Driven Development как инструмент уменьшения кадровых рисков

Где?• Длительные проекты• Высокие требования к качеству• Опытная команда (есть опыт

использования TDD)

Page 47: Test Driven Development как инструмент уменьшения кадровых рисков

Когда?• С начала проекта• На изолированных участках в

существующем проекте

Page 48: Test Driven Development как инструмент уменьшения кадровых рисков

Сколько?• Нет опыта применения TDD:

– Дорого• Есть опыт использования TDD:

– Тратим время на написании теста– Экономим на отладке и сопровождении

Page 49: Test Driven Development как инструмент уменьшения кадровых рисков

ПОДВОДИМ ИТОГИ

Page 50: Test Driven Development как инструмент уменьшения кадровых рисков

Вспомним риски• Незаменимый разработчик• «Не знал и сломал»• Квалификация ниже ожидаемой• Обучение новых сотрудников

Page 51: Test Driven Development как инструмент уменьшения кадровых рисков

Незаменимость vs TDD• Любого человека возможно заменить:

– Система хорошо документирована– Слабая связность– Покрытие тестами

Page 52: Test Driven Development как инструмент уменьшения кадровых рисков

«Не знал и сломал» vs TDD• Любые правки исходного кода безопасны:

– Высокая изолированность классов– Обнаружение ошибок на этапе разработки– Жесткое соблюдение контракта класса

Page 53: Test Driven Development как инструмент уменьшения кадровых рисков

Обучение и TDD• Обучение на «боевых» задачах

– Скорость обучения возрастает– Слабая связность– Формально документированное

взаимодействие в системе

Page 54: Test Driven Development как инструмент уменьшения кадровых рисков

СПАСИБО

Докладчик: Николай Гребневe-mail: [email protected]: ngrebnev


Recommended