Исходя из моего личного опыта, охват, который вы хотите получить, коррелирует с усилиями, необходимыми для написания надлежащих тестов, по сравнению с усилиями, необходимыми для написания кода таким образом, что покрытие равно соотношению между усилиями по написанию тестирования исуммарные усилия по разработке.
c = t / (t + e)
Где
- t - это усилия, необходимые для разработки тестов,
- e - усилия, затраченные на разработку кода, и
- t + e = общее усилие по разработке (тесты + код)
- c охват.
Например:
- для покрытия 0%,Требуется 0% от ваших общих усилий по разработке, очевидно,
- для 20% покрытия, 20% от ваших общих усилий по разработке требуется для написания тестов
- для 50% покрытия, 50% от общего количествадля написания тестов требуется
- для 80% покрытия, для написания тестов требуется 80% от общего объема ваших усилий
Я думаю, вы получите картину,Это практическое правило, которое может быть немного неточным при более высоких значениях (-> 100%) и действительно зависит от опыта разработчиков в написании тестируемого кода и надежных тестов.Кроме того, он основан на предположении и наблюдении о том, что усилия не являются линейными по отношению к покрытию - более высокие покрытия требуют дополнительных усилий для сложных для тестирования случаев, и что нетривиальный тестовый код, особенно для настройки, требует большего количества тестового кода, чем тестируемого кода.Преимущество этой формулы в том, что ее легко понять и рассчитать только с помощью соответствующих метрик (усилия, охват), но это не научный метод, а быстрый способ оценки.
Для унаследованного кода (который, вероятно, не слишком хорошо тестируем), для которого, как мы надеемся, вы знаете усилия, уже предпринятые, вы можете оценить усилия, требуемые для достижения целевого покрытия.
Таким образом, формула для оценки на основе затраченных усилий и целевого охвата составляет
t = e*c / (1-c)
Так что, если вы уже потратили 1000 человеко-дней (ПД), вам потребуется еще 1000человеко-дней, чтобы получить 50% покрытия.Или 500 ПД на 33%, или 250 ПД на 20%.Или 4000 PD на 80%.
По сравнению с оценкой нижней границы Йоханнеса:
- Предположение: 500 LoC / PD -> 10 млн. LOC = 20.000 PD
- Оценка нижнего предела Йоханнеса:
- Моя (верхняя граница?) Оценка:
- 20.000 PD для 50%
- 80.000 PD на 80% (не забывайте, что код может плохо проверяться)
Правда, вероятно, где-то посередине.