Как долго мы обычно проводим написание юнит-тестов для новой функции или исправления ошибок?


9

Когда мне приходится реализовывать новую функцию или исправлять ошибку, я обычно пытаюсь воссоздать ситуацию с помощью теста. Я иногда провожу около 3 часов, придумывая приспособления и записывая тест. Реальная реализация функции или исправление ошибки занимает менее 1 часа.

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


2
Подумайте об этом следующим образом: исправление ошибки заняло бы меньше часа, если у вас не было теста, чтобы подтвердить, что он существует, гораздо меньше было исправлено?
— Майкл К

2
Ответ на заголовок вопроса: Столько, сколько нужно.
— Марсело

3
Я считаю, что рабское подчинение принципам TDD независимо от стоимости или стоимости бизнеса всегда является правильным ответом.
— Джереми

Как вы справляетесь со случаем, когда ваш менеджер хочет, чтобы вы исправили его как можно скорее, и не может ждать дополнительного дня, чтобы полностью протестировать реализацию?
— Тьерри Лам

2
Обычно я объясняю стоимость не прохождения теста. То есть я могу отправить исправление прямо сейчас, но если мы не напишем тест, нам придется все повторить позже. Иногда они согласны с этой будущей стоимостью, но обычно мы пишем тесты.
— Кристофер Биббс

Ответы:


12

Это зависит от сложности ошибки или функции. Я вспоминаю один проект, который когда-то имел оценку времени разработки за 1,5 недели ... и оценку тестирования за 3 месяца. Изменение кода было небольшим, несколько строк тут и там, но это повлияло на ряд компонентов системы страхования разными способами, поэтому пришлось проверять очень тщательно. В другой раз была ошибка, заключающаяся в том, что в неправильном месте была скобка. Потребовалось 2 часа, чтобы найти его, 2 секунды, чтобы его исправить, но около недели, чтобы протестировать десятки сценариев, которые могли быть затронуты изменением логики.

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

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


6

Как насчет того, чтобы вы потратили достаточно времени на написание тестов, пока не покажете, что функция работает должным образом или ошибка была исправлена ​​правильно.

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


Это настоящий ответ.
— DJClayworth

4

Однажды я сделал сюрприз после введения модульных тестов в проекте. Результат: время, потраченное на написание тестов, снова составило около 40%, столько же, сколько было потрачено на внедрение. Но мы не стремились к полному освещению там, и это был устоявшийся проект с сильной структурой и соглашениями.



0

Вы считаете правильно? Для точного учета того, сколько времени вы тратите на тесты, вам нужно написать код без теста.

Если вам действительно потребовалось три часа на написание теста и один на написание кода для его прохождения, вы можете обнаружить, что для исправления той же самой ошибки без написания тестов требуется более 5 часов.

Да, я очень часто трачу на тестирование гораздо больше времени, чем сам код исправления.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.