TDD (Test-driven Development) как стиль разработки.

14
TDD как стиль разработки Киреев Артем Разработчик Codemasters Intl. est1908@gmail. com

description

Как превратить рутинное написание Unit тестов в увлекательный процесс? Как побороть страхи, что система не будет работать должным образом? Как уверенно решать самые сложные для себя задачи? Я расскажу как TDD поможет найти ответы на эти и другие вопросы.Наш сайт http://www.tuladev.net

Transcript of TDD (Test-driven Development) как стиль разработки.

Page 1: TDD (Test-driven Development) как стиль разработки.

TDD как стиль разработки

Киреев АртемРазработчик

Codemasters Intl.

[email protected]

Page 2: TDD (Test-driven Development) как стиль разработки.

I. Происхождение TDDII. Основные принципы TDDIII. Мотивации использования TDDIV. TDD Best practicesV. Пример TDDVI. TDD – FAQ

Содержание

Page 3: TDD (Test-driven Development) как стиль разработки.

Методологии разработки ПО

Низкоформализованные Высокоформализованные

Каскадные

Итерационные

XProgramming

Как получится

Канбан

Scrum

ГОСТ

RUP

ISO

Page 4: TDD (Test-driven Development) как стиль разработки.

XProgramming. XP PracticesCustomer

Tests

PlanningGame

Small Releases

CollectiveOwnership

ContinuousIntegration

CodingStandart

WholeTeam

40h Week

PairProgramming

Refactoring

TDD

SimpleDesign

Metaphor

Page 5: TDD (Test-driven Development) как стиль разработки.

XProgramming. XP PracticesCustomer

Tests

PlanningGame

Small Releases

CollectiveOwnership

ContinuousIntegration

CodingStandart

WholeTeam

40h Week

PairProgramming

Refactoring

TDD

SimpleDesign

Metaphor

Page 6: TDD (Test-driven Development) как стиль разработки.

Основные принципы TDD

1. Пишем новый код, только тогда когда тест не сработал2. Удаляем дублирование

Всего 2 правила:

Цель TDD:

Мантра TDD

REFACTOR

RED

GREEN

Написать тесткоторый не проходит

Написать код,чтобы тест проходил

Убратьдублирование

Простые программные решения

Тесты придающие уверенность в работе

Page 7: TDD (Test-driven Development) как стиль разработки.

TDD – в пяти простых правилах

Добавляем тест

Запускаем все тесты

Добавляем небольшие изменения

Снова запускаем все тесты

Рефакторинг

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

Тесты прошли

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

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

Page 8: TDD (Test-driven Development) как стиль разработки.

Мотивации использования TDD

Темп разработки

Не писать лишнего кода

Проектировать less coupled системы

Возвращаться к коду

Начинать разрабатывать не теряя время

С первого раза (а значит быстрее) решать сложные задачи

Контролировать стресс. Постоянно видеть прогресс.

Исправлять ошибки на раннем этапе разработки

Page 9: TDD (Test-driven Development) как стиль разработки.

Мотивации использования TDD

Page 10: TDD (Test-driven Development) как стиль разработки.

TDD Best practices

Темп разработки

UnitTest – читаемый, простой, малосвязанный, быстрыйЛучше много простых тестов, чем один сложный.Начинаем писать тест с «Assert»Сначала пишем самые простые тестыСписок желаемых тестов на бумаге, не в коде и не в умеТесты должны работать быстроНе пишем код, пока на него нет тестаПишем наиболее простой код, необходимый чтобы тест прошелТолько что написанный тест должен падать (работает в 99%)После успешного прохождения теста - рефакторитьВсе тесты должны проходить перед написанием нового тестаРефакторинги и паттерны – друзья TDD

Page 11: TDD (Test-driven Development) как стиль разработки.

Пример TDDСоздание игры «Пятнашки»

Page 12: TDD (Test-driven Development) как стиль разработки.

TDD FAQ

Сколько писать тестов?

Можно ли начать использовать TDD прямо сейчас на

текущем проекте?

Можно ли использовать TDD для разработки

крупномасштабных систем?

Какие есть подходы cвязанные c TDD?

Негативные стороны TDD

Page 13: TDD (Test-driven Development) как стиль разработки.

Негативные стороны TDD

Темп разработки

Все проблемы UnitTest-ов

Не поддерживаются IntelliSense like tools

Тесты тоже требует рефакторингов.

Сложно применить TDD на плохой код

Тесты не гарантируют отсутствие ошибок

Page 14: TDD (Test-driven Development) как стиль разработки.

Резюме

Простые программные решения

Не пишем код, пока на него нет теста

Идем к цели маленькими шажками

Assert First

Refactor

Уверенность в работе

Список тестов на бумаге

Сначала простые тесты

Покрытие тестами

Less coupled modules

Средства Результат