Когда мне приходится реализовывать новую функцию или исправлять ошибку, я обычно пытаюсь воссоздать ситуацию с помощью теста. Я иногда провожу около 3 часов, придумывая приспособления и записывая тест. Реальная реализация функции или исправление ошибки занимает менее 1 часа.
Кто-нибудь еще тратит как минимум в 3 раза больше времени на написание теста по сравнению с реальной реализацией функции или исправлением ошибки? Каково приемлемое соотношение времени, потраченного на написание теста на написание кода?
unit-testing
Тьерри Лам
источник
источник
Ответы:
Это зависит от сложности ошибки или функции. Я вспоминаю один проект, который когда-то имел оценку времени разработки за 1,5 недели ... и оценку тестирования за 3 месяца. Изменение кода было небольшим, несколько строк тут и там, но это повлияло на ряд компонентов системы страхования разными способами, поэтому пришлось проверять очень тщательно. В другой раз была ошибка, заключающаяся в том, что в неправильном месте была скобка. Потребовалось 2 часа, чтобы найти его, 2 секунды, чтобы его исправить, но около недели, чтобы протестировать десятки сценариев, которые могли быть затронуты изменением логики.
В целом, я не беспокоюсь о соотношении времени, потраченного на кодирование, и времени, потраченного на тестирование, потому что просто невозможно быть точным. Я обнаружил, что в некоторых проектах соотношение проектов и проектов обычно стандартное (для проекта), но даже тогда оно может измениться позже.
Потратьте столько времени, сколько нужно, чтобы с уверенностью сказать, что код работает правильно.
источник
Как насчет того, чтобы вы потратили достаточно времени на написание тестов, пока не покажете, что функция работает должным образом или ошибка была исправлена правильно.
Каждая ситуация будет отличаться; не может быть какого-то отношения. Некоторые тесты будут занимать в десятую часть времени реализации, другие - в сотни раз больше времени.
источник
Однажды я сделал сюрприз после введения модульных тестов в проекте. Результат: время, потраченное на написание тестов, снова составило около 40%, столько же, сколько было потрачено на внедрение. Но мы не стремились к полному освещению там, и это был устоявшийся проект с сильной структурой и соглашениями.
источник
Я бы сказал, что время кодирования и время написания юнит-тестов должны быть примерно одинаковыми. Может быть, немного больше иногда. Взгляните на эту статью о соотношении времени, потраченного на кодирование и модульное тестирование
источник
Вы считаете правильно? Для точного учета того, сколько времени вы тратите на тесты, вам нужно написать код без теста.
Если вам действительно потребовалось три часа на написание теста и один на написание кода для его прохождения, вы можете обнаружить, что для исправления той же самой ошибки без написания тестов требуется более 5 часов.
Да, я очень часто трачу на тестирование гораздо больше времени, чем сам код исправления.
источник