Низкая производительность
Пользователи не любят, когда приложение замедляет работу, сталкиваясь с реальными данными. Неадекватное тестирование — корень всех ошибок низкой производительности (эффективности), однако хуже всего при разработке выглядит приложение, которое команда не сумела протестировать со всеми подходящими реальными значениями. Один проект, с которым я работал в NuMega — BoundsChecker 3.0 — содержал подобную ошибку в своей оригинальной технологии FinalCheck. Эта версия FinalCheck включала дополнительную отладочную и контекстную информацию непосредственно в исходный код, чтобы сообщения об ошибках, генерируемые BoundsChecker, были более содержательными. К сожалению, код программы FinalCheck не был достаточно протестирован на крупных реальных приложениях, прежде чем выпустили версию BoundsChecker 3.0. В результате, значительная часть пользователей не смогла применить это свойство. В последующих выпусках свойство FinalCheck было полностью переписано, но многие пользователи так никогда и не опробовали его из-за проблем производительности в первоначальной версии, хотя это было одно из наиболее мощных и полезных свойств продукта.
Ошибки низкой производительности отлавливаются двумя способами. Во-первых, следует определить требования к производительности приложения с самого начала процесса разработки. Нужно уметь измерить производительность, чтобы иметь адекватное представление о ней. Важно сохранять основные значения производительности на постоянном уровне; если приложение снижает эти значения на 10% и более, нужно определить причины этого снижения и исправить ситуацию. Во-вторых, удостоверьтесь, что тестирование выполняется насколько возможно близко к реальным сценариям, и как можно раньше в цикле разработки.