Некоторые методики более эффективны в обнаружении дефектов, чем другие, к тому же разные методики приводят к обнаружению разных дефектов. Одним из способов оценки методик обнаружения дефектов является определение процента обнаруженных дефектов из общего количества дефектов, имеющихся в программе на конкретном этапе. Показатели эффективности обнаружения дефектов при использовании некоторых популярных методик указаны в таблице:
Код:
Методика устранения дефектов Минимальная Типичная Максимальная
эффективность эффективность эффективность
Неформальные обзоры проекта 25% 35% 40%
Формальные инспекции проекта 45% 55% 65%
Неформальные обзоры кода 20% 25% 35%
Формальные инспекции кода 45% 60% 70%
Моделирование или прототипирование 35% 65% 80%
Самостоятельная проверка кода 20% 40% 60%
Блочное тестирование 15% 30% 50%
Тестирование новых функций/компонентов 20% 40% 60%
Интеграционное тестирование 25% 35% 40%
Регрессионное тестирование 15% 25% 30%
Тестирование системы 25% 40% 55%
Ограниченное бета-тестирование 25% 35% 40%
(менее чем в 10 организациях)
Крупномасштабное бета-тестирование 60% 75% 85%
(более чем в 1000 организаций)
Источники: Capers Jones, 1986, «Programming Productivity», NY: McGraw-Hill; Capers Jones, 1996, «Software Defect-Removal Efficiency», IEEE Computer; Shull, et al., 2002, «What We Have Learned About Fighting Defects», Proceedings, Metrics 2002. IEEE; 249-258.
Самое интересное в этих данных то, что типичная эффективность обнаружения дефектов при использовании любой методики не превышает 75% и что в среднем она равна примерно 40%. Более того, самые популярные методики - блочное тестирование и интеграционное тестирование - позволяют найти обычно только около 30-35% дефектов. Как правило, используется подход, основанный на интенсивном тестировании, что позволяет устранить лишь около 85% дефектов. Ведущие организации используют более широкий диапазон методик, достигая при этом 95%-ой или более высокой эффективности устранения дефектов (Capers Jones, 2000, «Software Assessments, Benchmarks, and Best Practices», Reading MA: Addison-Wasley). Итак, если разработчики хотят достигнуть более высокой эффективности обнаружения дефектов, они должны полагаться на комбинацию методик.