Я довольно новичок в подходе TDD, и мои первые эксперименты говорят, что написание 1 строки функционального кода означает написание примерно 2-3 строк кода тестирования. Итак, на случай, если я напишу 1000 LOC, вся кодовая база, включая тесты, будет примерно 3500 LOC.
Это считается нормальным? Какое соотношение в коде вы пишете?
testing
unit-testing
tdd
metrics
Андрей Агибалов
источник
источник
Ответы:
1: 3 нормально с TDD.
Из моего опыта, а также из других цитат, которые я помню.
источник
Существуют варианты, основанные на разных стилях кодирования и языках. Однако, независимо от языка, который вы используете, самый большой вариант - это вы.
Роберт Мартин однажды сказал:
Это заставило меня задуматься. Более конкретные тесты означают больше тестового кода. Более общий производственный код означает меньше кода, поэтому соотношения тест / код должны расти по мере развития кода.
Но подождите, это тоже не хорошо. В некоторых особых случаях, например, когда вы определяете определенный алгоритм, у вас может быть только 6-10 строк кода, содержащих пару «если», время и, возможно, 2-3 рекурсии. Я могу сказать вам, что этот код будет иметь более 100 строк тестового кода.
В реальном проекте, который больше, чем несколько алгоритмов, соотношение тест / код должно быть где-то между 1: 1 и 2: 1. Если оно становится выше 2: 1, то пахнет тем, что у вас есть тесты, которые должны быть реорганизованы или удалены (или, возможно, код, который сложно протестировать). Вы всегда должны вкладывать в свои тесты тот же объем заботы и рефакторинга, что и в свой производственный код.
В любом случае, лучший ответ на ваш вопрос может быть "Cyclomatic Complexity" . Чем выше цикломатическая сложность вашего метода, тем больше экспоненциально вы должны написать тест, чтобы он охватил все случаи.
источник
Соотношение будет варьироваться в зависимости от размера ваших методов. Размер ваших методов зависит от стиля программирования, языка и проблемной области.
Если ваши методы короткие, 3: 1 разумно. Если ваши методы длинные, то 3: 1 на высокой стороне.
Итак, чтобы ответить на ваш вопрос, это зависит. :-)
источник
Для приложений, критически важных для программного обеспечения, обычное соотношение составляет один день тестирования для каждых 10 функциональных LoC.
И это не считая TDD, который касается не теста, а спецификации.
источник
Размер моего тестового кода составляет примерно половину от того, что является «фактическим» кодом в целом. Если вы поступите иначе, это значит, что ваши тесты слишком сложны и / или ваш код слишком сложен для тестирования и / или ваш код слишком плотный / сложный.
Или вы просто слишком много тестируете и тратите время на уменьшение прибыли.
Также смотрите "когда юнит тестирование не подходит или не нужно?"
источник
Мое соотношение составляет около 2-1 к 10-1 (код для тестирования). Убедитесь, что вы тестируете на предмет ценности / поведения, а не реализации.
источник