Перетяжка, Дом карьеры
Перетяжка, Дом карьеры
Перетяжка, Дом карьеры

Почему вам стоит начать вести разработку через тестирование

Аватар Пётр Соковых
Отредактировано

20К открытий20К показов
Почему вам стоит начать вести разработку через тестирование

В нашей группе не один раз обсуждалась разработка через тестирование (test-driven development), и каждый раз в комментариях были в основном положительные отзывы от тех, кто применял эту методологию. Для тех, кто пропустил, собрали все доводы «за» в одной статье.

Напомните, что же вообще такое ваше «Test-Drive-Development»?

Это такая техника разработки программного обеспечения, при которой вся разработка разбивается на множество небольших циклов: сначала пишутся тесты, которые покрывают желаемое изменение, затем пишется код, который эти тесты проходит. После этого производится рефакторинг этого кода, при необходимости пишутся новые тесты. Если какие-то тесты участок кода не проходит, это исправляется.

Почему вам стоит начать вести разработку через тестирование 1

Звучит как-то странно. А это точно эффективно?

Судя по всему, да. Во-первых, это позволяет чётче понять, что, собственно, нужно писать. Есть условие, которое должно выполняться после работы кода — и точка. Сами тесты должны формироваться на основе технического задания. Если в результате написания тестов они начинают противоречить сами себе — это повод пересмотреть ТЗ.

Во-вторых, в результате разделения задач на менее объёмные подзадачи, код становится заметно проще и удобочитаемее. В идеале на один тест должно приходиться одно утверждение (assert). К тому же плохой в оформлении код (например, использующий глобальные переменные или синглтоны) обычно так же сложен в тестировании, что стимулирует разработчика его не писать.

В-третьих, сильно упрощается поддержка кода. Если в результате внесения новой функциональности или изменения старой какой-то участок кода начинает работать некорректно, это будет мгновенно выявлено. Вносить в код изменения гораздо легче, когда он разбит на модули (а TDD требует модульности программ). Инспектировать код, написанный по методологии TDD гораздо проще — каждый коммит выполняется для реализации чёткой задачи, которая будет отражена в комментарии к нему.

Почему вам стоит начать вести разработку через тестирование 2

Но мне кажется, что писать как обычно гораздо быстрее

Да, действительно, поначалу применение TDD будет отнимать лишнее время. Однако, это скорее дело привычки — со временем вы привыкнете писать сперва тесты, а лишь затем код и, возможно, будете даже выигрывать во времени, ведь процесс разработки будет чётко структурирован, вам придётся сначала решить вопрос «Что писать?», а лишь потом «Как писать?». К тому же, потратив время сейчас, вы выиграете время в будущем, сильно облегчив себе поддержку продукта.

Всегда ли имеет смысл использовать TDD?

Разумеется, нет. TDD не панацея. Например, если разработка представляет из себя последовательность экспериментов, когда нет чёткой уверенности в том, что именно необходимо в итоге, написание тестов станет скорее грузом, который тянет команду назад.

Почему вам стоит начать вести разработку через тестирование 3

С чего же начать?

По разработке с упором на тестирование есть отличная книга Кента Бека — «Экстремальное программирование: разработка через тестирование». Начните читать её и следите за нашими публикациями, мы обязательно будем ещё писать на эту тему! ?

Следите за новыми постами
Следите за новыми постами по любимым темам
20К открытий20К показов