Как юнит-тестирование сделало вашу жизнь лучше? - PullRequest
3 голосов
/ 04 декабря 2008

Хорошо, позвольте мне быть честным, я не написал более 10 тестов в своей жизни, вероятно.

Я начинаю новый проект, и быть единственным программистом означает Я должен быть напуган ... очень напуган .

Идея, что я могу псевдо-гарантия , что моя программа работает, вызывает чувство радости.

Конечно, я пропущу массу случаев, когда мне следовало бы пройти тестирование, но я научусь этому со временем.

Юнит-тестирование поможет мне лучше спать по ночам , что лучше для моего здоровья.

Мой код потерпит неудачу, но, по крайней мере, у меня будет лучшая идея, когда он будет .

Как юнит-тестирование сделало вашу жизнь лучше (или лучше?), Несмотря на то, что остальная часть вашей команды не прыгает на подножку ?

Ответы [ 20 ]

7 голосов
/ 04 декабря 2008

Самым большим значением, которое юнит-тест имеет в моем проекте, является достоверность . С такой уверенностью гораздо проще добавлять новые функции, которые не были запланированы в начале, и разбивать код на части, чтобы что-то изменить или изменить.

С тестом я знаю Я (или кто-то еще!) Не сломал то, что уже работало.

Без теста вы смелы (или глуп), когда делаете большие изменения и внедряете их в производство в следующую минуту.

4 голосов
/ 04 декабря 2008

Хорошо, поскольку никто не подошел к тарелке, чтобы сыграть адвоката дьявола, я сделаю это.

Автоматическое модульное тестирование может иметь хорошие преимущества для некоторых проектов, но также может иметь много следующих проблем:

  • Это высасывает тонну инженерных ресурсов.
  • Устранение проблем среды и настройки из уравнения может занять много человеко-часов.
  • Он имеет низкую рентабельность инвестиций для некоторых типов проектов, особенно для графических интерфейсов.
  • Он не поймает много ошибок, потому что невозможно оценить все пути выполнения для всех программ, кроме самых простых.
  • Он не отлавливает ошибки интеграции.
  • Он не улавливает более широкие ошибки системного уровня, такие как функции, выполняемые на нескольких устройствах, или нефункциональные области, такие как производительность.
  • Тестирование покрытия и ворот покрытия может стать все более бесполезной мантрой
  • Требуется устойчивый процесс, обеспечивающий немедленное рассмотрение и устранение ошибок тестового набора. В противном случае приложение будет развиваться не синхронно с набором модульных тестов.
  • Он имеет значительные альтернативные издержки - есть и другие виды деятельности, такие как проверки кода, которые имеют одинаково хорошую или даже лучшую рентабельность инвестиций.
  • Это может привести к значительным изменениям культуры.

Таким образом, разработчики не должны применять догматический (да или нет) подход к модульному тестированию, а вместо этого делать расчет ROI для каждого проекта.

4 голосов
/ 04 декабря 2008

Как сказала Эли, юнит-тестирование - это отличный способ быстро избавиться от "глупых" или простых ошибок. Для меня это меняет мой взгляд на код; благодаря тому, что мой код тестируемый, он становится менее хрупким и более гибким (например, инъекция зависимостей / инверсия управления пришла ко мне совершенно естественно, потому что я все равно сделал это для целей тестирования).

Самым большим преимуществом, которое я лично получаю от тщательного набора тестов, является уверенность в изменении сложного кода даже спустя месяцы после того, как я написал его, не боясь случайно что-то сломать.

Я еще не там, но с некоторой дисциплиной во время их написания юнит-тесты также являются отличным способом документировать ваш код.

4 голосов
/ 04 декабря 2008

Путем модульного тестирования я сократил количество «глупых ошибок», о которых сообщается на этапе тестирования. Это также дало мне более высокий уровень доверия к моему коду.

2 голосов
/ 04 декабря 2008

Использование модульного тестирования в сочетании с TDD дает мне мотивацию и стремление выполнить поставленную задачу. Без небольшого прогресса в написании теста, исправлении теста, написании теста, исправлении теста я могу стать немотивированным.

2 голосов
/ 05 декабря 2008

Самая большая вещь, которую дают вам модульные тесты - это уверенность в вашем коде. Вы знаете, что вещи работают с определенным уровнем качества, и вы знаете, что можете пойти и что-то изменить или переписать, и у вас не будет проблем с тем, что вы не ожидаете. Проверка только на тесте.

2 голосов
/ 04 декабря 2008

Я был TDD (разработчик) со времени моего второго * проекта в универе (еще в 1988 году). Я не знаю, использовался ли тогда этот термин.

Лучшая вещь - это способность менять вещи и очень быстро проверять, что ты больше ничего не сломал. Простое регрессионное тестирование.

Они также хорошо документируют использование объекта / метода.

* и это было напрямую из-за того, как прошел первый проект ....

2 голосов
/ 04 декабря 2008

Теперь, когда я призываю протестировать мой код, Я знаю, когда я закончу с функцией, компонентом или функцией. Поэтому я могу точно сообщить о прогрессе .

Я знаю, что это не код без ошибок, но он достаточно функционален для интеграции, сборки и доставки в QA. Я уверен , что они смогут начать тестирование, не будучи заблокированным ошибкой сегментации или любой другой глупой проблемой.

У меня также есть готовая среда, чтобы я мог быстро написать новый тест для воспроизведения любой проблемы , о которой будет сообщено, и у меня есть сеть безопасности для обнаружения побочных эффектов и регрессии, когда я изменяю или исправляю код.

2 голосов
/ 04 декабря 2008

Для меня не только юнит-тесты изменили мою жизнь, но и Test Driven Development (TDD). Я сравниваю это с религиозным опытом в своем блоге (бессовестно, я знаю) Мой год с TDD .

Начало тестирования стало для меня опытом карьерного роста. Я пишу меньше ошибок, я пишу более читабельный код, я пишу более сплоченный код, я знаю, когда что-то не работает (обычно) и т. Д., И т. Д. Я обязан всем этим путем разработки путем разработки.

Попробуй, тебе нравится :)

2 голосов
/ 04 декабря 2008

Модульные тесты действительно полезны, когда вы начинаете отладку. Если ваши тесты не пройдены, вы знаете, где ошибка почти сразу. Если они все работают, то вы знаете, где ошибки не (большую часть времени).

Еще одна область, в которой помогают модульные тесты: миграция программного обеспечения. Я обнаружил, что гораздо проще подготовить код Python с модульными тестами для переноса на Python 3, чем код, у которого нет модульных тестов.

Конечно, я пропущу массу случаев, когда мне нужно было пройти тестирование, но я научусь этому со временем.

Вот где действительно развивается тест-ориентированная разработка. Вам не нужно слишком беспокоиться о проведении надлежащих тестов, потому что на этот вопрос вам ответят заранее.

Конечно, просто чтобы убедиться, что мы находимся на одной странице, «разработка через тестирование» означает процесс кодирования, когда вы пишете тест, проверяете, что тест не пройден, и затем пишете код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...