SlideShare ist ein Scribd-Unternehmen logo
1 von 54
TDD как инструмент уменьшения кадровых рисков Николай Гребнев Компания «CUSTIS»
Содержание Кадровые риски Условия задачи Test Driven Development Факторы кадрового риска Как и почему? Что, где, когда и сколько? Итоги
Кадровые риски
Кадры решают все И.В. Сталин
Риски Незаменимый разработчик «Не знал и сломал» Квалификация ниже ожидаемой Обучение новых сотрудников
Условия задачи
Команда Билл Гейтс Мартин Фаулер Джеффри Рихтер Андерс Хейлсберг
Мечта руководителя
Еще одна мечта
Реальность
Отпуск Проект
Смена сотрудника Проект
Новый сотрудник Проект
Test Driven Development
Test Driven Development — техника разработки программного обеспечения, которая основывается на повторении очень коротких циклов разработки: сначала пишется тест, покрывающий желаемое изменение, затем пишется код, который позволит пройти тест. (Wikipedia)
TDD Тесты не прошли Написать тест Написать реализацию Запустить тесты Все тесты проходят
TDD – unit-тестывперед!
Unit-тестирование Тестируем: Класс Поведение Взаимодействие Одновременно тестируем только один класс
Факторы кадрового риска
Причины Сильносвязная архитектура Позднее обнаружение ошибок Плохая документированность
Сильносвязная архитектура
Правки исходного кода ведут к непредсказуемым последствиям Ошибки Ошибки Изменения
Держать все в голове
Цена ошибки Разработка Тестирование Эксплуатация
Тестирование
Эксплуатация
Разработка Тестирование Эксплуатация
Плохая документированность Документация устаревает сразу после своего написания Никто не поддерживает актуальность документации Зачастую документация вообще отсутствует
Как и почему?
Тестируем Класс Поведение Взаимодействие
Одновременно тестируем только один класс
Зависимость
Inversion of Control
Декомпозиция
Локализация ошибок Ошибки Изменения
Раннее обнаружение ошибок Тесты запускаются: Регулярно во время разработки До окончания этапа разработки
Раннее обнаружение ошибок Разработка Тестирование Эксплуатация
Документация Всегда актуальна Автоматическая проверка соответствия спецификациям
Что, где, когда и сколько?
Что? Высокое качество конечного продукта Хороший дизайн кода Уверенность при модификации Снижение рисков от незаменимых и неопытных разработчиков
Где? Длительные проекты Высокие требования к качеству Опытная команда (есть опыт использования TDD)
Когда? С начала проекта На изолированных участках в существующем проекте
Сколько? Нет опыта применения TDD: Дорого Есть опыт использования TDD: Тратим время на написании теста Экономим на отладке и сопровождении
Подводим итоги
Вспомним риски Незаменимый разработчик «Не знал и сломал» Квалификация ниже ожидаемой Обучение новых сотрудников
Незаменимость vs TDD Любого человека возможно заменить: Система хорошо документирована Слабая связность Покрытие тестами
«Не знал и сломал» vs TDD Любые правки исходного кода безопасны: Высокая изолированность классов Обнаружение ошибок на этапе разработки Жесткое соблюдение контракта класса
Обучение и TDD Обучение на «боевых» задачах Скорость обучения возрастает Слабая связность Формально документированное взаимодействие в системе
СПАСИБО  Докладчик: Николай Гребнев e-mail: ngrebnev@gmail.com slideshare.net: ngrebnev

Weitere ähnliche Inhalte

Was ist angesagt?

Тестирование - это не просто тестирование, или Business Driven Testing
Тестирование - это не просто тестирование, или Business Driven TestingТестирование - это не просто тестирование, или Business Driven Testing
Тестирование - это не просто тестирование, или Business Driven TestingJulia Nechaeva
 
Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?SQALab
 
Situational awareness. Москаленко
Situational awareness. МоскаленкоSituational awareness. Москаленко
Situational awareness. МоскаленкоDev.by
 
Безопасная разработка для руководителей
Безопасная разработка для руководителейБезопасная разработка для руководителей
Безопасная разработка для руководителейPositive Development User Group
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйMax Babich
 
Построение процесса безопасной разработки
Построение процесса безопасной разработкиПостроение процесса безопасной разработки
Построение процесса безопасной разработкиPositive Development User Group
 
Прыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущемуПрыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущемуSQALab
 
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиJS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиGeeksLab Odessa
 
Problem solving and decision making
Problem solving and decision makingProblem solving and decision making
Problem solving and decision makingAlexey Alexeev
 
мациевский путь самурая. уволить нельзя оставить
мациевский   путь самурая. уволить нельзя оставитьмациевский   путь самурая. уволить нельзя оставить
мациевский путь самурая. уволить нельзя оставитьMagneta AI
 
Пользователи в помощь тестировщику
Пользователи в помощь тестировщикуПользователи в помощь тестировщику
Пользователи в помощь тестировщикуRina Uzhevko
 
Постановка тестирования в распределенных командах
Постановка тестирования в распределенных командахПостановка тестирования в распределенных командах
Постановка тестирования в распределенных командахEvgeny Savitsky
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Ontico
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какSQALab
 
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиBoris Volfson
 
Самоопределяйся технологично!
Самоопределяйся технологично!Самоопределяйся технологично!
Самоопределяйся технологично!Maxim Tsepkov
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проектаMagneta AI
 
Как из хаоса рождается порядок
Как из хаоса рождается порядокКак из хаоса рождается порядок
Как из хаоса рождается порядокSQALab
 

Was ist angesagt? (20)

Тестирование - это не просто тестирование, или Business Driven Testing
Тестирование - это не просто тестирование, или Business Driven TestingТестирование - это не просто тестирование, или Business Driven Testing
Тестирование - это не просто тестирование, или Business Driven Testing
 
Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?Будни руководителя тест-джампера или как тест-джампить руководителю?
Будни руководителя тест-джампера или как тест-джампить руководителю?
 
Situational awareness. Москаленко
Situational awareness. МоскаленкоSituational awareness. Москаленко
Situational awareness. Москаленко
 
Безопасная разработка для руководителей
Безопасная разработка для руководителейБезопасная разработка для руководителей
Безопасная разработка для руководителей
 
Наблюдай. Анализируй. Управляй
Наблюдай. Анализируй. УправляйНаблюдай. Анализируй. Управляй
Наблюдай. Анализируй. Управляй
 
Построение процесса безопасной разработки
Построение процесса безопасной разработкиПостроение процесса безопасной разработки
Построение процесса безопасной разработки
 
Прыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущемуПрыжок веры. От настоящего к будущему
Прыжок веры. От настоящего к будущему
 
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивностиJS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
JS Lab2017_Алексей Зеленюк_Сбалансированное окружение для вашей продуктивности
 
Problem solving and decision making
Problem solving and decision makingProblem solving and decision making
Problem solving and decision making
 
мациевский путь самурая. уволить нельзя оставить
мациевский   путь самурая. уволить нельзя оставитьмациевский   путь самурая. уволить нельзя оставить
мациевский путь самурая. уволить нельзя оставить
 
Пользователи в помощь тестировщику
Пользователи в помощь тестировщикуПользователи в помощь тестировщику
Пользователи в помощь тестировщику
 
Постановка тестирования в распределенных командах
Постановка тестирования в распределенных командахПостановка тестирования в распределенных командах
Постановка тестирования в распределенных командах
 
Do you speak TDD
Do you speak TDDDo you speak TDD
Do you speak TDD
 
Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)Алексей Рыбак (Badoo)
Алексей Рыбак (Badoo)
 
Тестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и какТестировщик в стартапе. Зачем и как
Тестировщик в стартапе. Зачем и как
 
Quality assurance
Quality assuranceQuality assurance
Quality assurance
 
Cемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектамиCемь смертных грехов в управлении проектами
Cемь смертных грехов в управлении проектами
 
Самоопределяйся технологично!
Самоопределяйся технологично!Самоопределяйся технологично!
Самоопределяйся технологично!
 
мартюшев почему юнит-тесты не работают. история большого проекта
мартюшев   почему юнит-тесты не работают. история большого проектамартюшев   почему юнит-тесты не работают. история большого проекта
мартюшев почему юнит-тесты не работают. история большого проекта
 
Как из хаоса рождается порядок
Как из хаоса рождается порядокКак из хаоса рождается порядок
Как из хаоса рождается порядок
 

Ähnlich wie Test Driven Development как инструмент уменьшения кадровых рисков

организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестированияIgor Pozumentov
 
Agile.by - Agileee season 3 - Agile Testing by Elisabeth Hendrickson
Agile.by  - Agileee season 3 - Agile Testing by Elisabeth HendricksonAgile.by  - Agileee season 3 - Agile Testing by Elisabeth Hendrickson
Agile.by - Agileee season 3 - Agile Testing by Elisabeth HendricksonNick Frolov
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0HighLoad2009
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0WRider
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Serhiy Kalinets
 

Ähnlich wie Test Driven Development как инструмент уменьшения кадровых рисков (10)

организация и проведение тестирования
организация и проведение тестированияорганизация и проведение тестирования
организация и проведение тестирования
 
Tdd from the middle
Tdd from the middleTdd from the middle
Tdd from the middle
 
Msf Dz
Msf DzMsf Dz
Msf Dz
 
Agile Project Grows
Agile Project GrowsAgile Project Grows
Agile Project Grows
 
Agile.by - Agileee season 3 - Agile Testing by Elisabeth Hendrickson
Agile.by  - Agileee season 3 - Agile Testing by Elisabeth HendricksonAgile.by  - Agileee season 3 - Agile Testing by Elisabeth Hendrickson
Agile.by - Agileee season 3 - Agile Testing by Elisabeth Hendrickson
 
Developmentmanage1.0
Developmentmanage1.0Developmentmanage1.0
Developmentmanage1.0
 
Developmentmanage3.0
Developmentmanage3.0Developmentmanage3.0
Developmentmanage3.0
 
Lean And Agile
Lean And AgileLean And Agile
Lean And Agile
 
QA in Agile
QA in AgileQA in Agile
QA in Agile
 
Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!Хотите драйва? Вам в TDD!
Хотите драйва? Вам в TDD!
 

Mehr von ngrebnev

Психология управления: создание самоорганизующихся процессов
Психология управления: создание самоорганизующихся процессовПсихология управления: создание самоорганизующихся процессов
Психология управления: создание самоорганизующихся процессовngrebnev
 
Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?ngrebnev
 
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастера
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастераПустая болтовня или эффективное совещание? – Все в руках scrum-мастера
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастераngrebnev
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийngrebnev
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)ngrebnev
 
Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?ngrebnev
 
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийngrebnev
 

Mehr von ngrebnev (7)

Психология управления: создание самоорганизующихся процессов
Психология управления: создание самоорганизующихся процессовПсихология управления: создание самоорганизующихся процессов
Психология управления: создание самоорганизующихся процессов
 
Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?Разработчик, аналитик, заказчик — как найти общий язык?
Разработчик, аналитик, заказчик — как найти общий язык?
 
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастера
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастераПустая болтовня или эффективное совещание? – Все в руках scrum-мастера
Пустая болтовня или эффективное совещание? – Все в руках scrum-мастера
 
Уменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложенийУменьшение влияния человеческого фактора при разработке бизнес приложений
Уменьшение влияния человеческого фактора при разработке бизнес приложений
 
Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)Cтатический анализ кода (на примере DDD-фреймворка)
Cтатический анализ кода (на примере DDD-фреймворка)
 
Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?Domain Driven Design - как, почему и зачем?
Domain Driven Design - как, почему и зачем?
 
Domain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложенийDomain Driven Design в условиях разработки распределенных приложений
Domain Driven Design в условиях разработки распределенных приложений
 

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