Как я могу лучше контролировать производительность с помощью модульных тестов? - PullRequest
1 голос
/ 24 июля 2010

Я начал писать еще много модульных тестов для своего кода (что мне следовало бы делать гораздо дольше), а также использовать профилировщики кода, такие как EQATEC, для определения узких мест.Мне интересно, есть ли правильный метод для мониторинга производительности в модульных тестах?

Очевидно, что профилировщик кода был бы лучшим для оптимизации, но то, что я действительно ищу, - это способ убедиться, что мои последниеизменения не убили мою производительность (вызвав избыточные функции и т. д.), даже если это не нарушило никакой логики.

Моя первая мысль - запустить мой метод (например, insert или что-то вроде) много раз, чтобы придумать, сколько тиков обычно требуется.Затем напишите модульный тест, который будет повторять вызовы методов, затем Assert(elapsedTicks < magicNumberOfTicks).Это кажется слишком произвольным, и мне интересно, что другие разработчики использовали в этой ситуации?

Ответы [ 2 ]

1 голос
/ 24 июля 2010

Я бы действительно предложил провести отдельные регрессионные тесты и юнит-тесты.Целью модульных тестов является уверенность кода, сработает ли он.Они должны быть быстрыми и простыми.Для реального тестирования производительности вам нужен достаточно большой размер выборки, чтобы результаты стоили того.Выполнение этого в модульных тестах приведет к тому, что модульные тесты займут слишком много времени, и тогда вы можете почувствовать необходимость не запускать их все время, потому что они занимают слишком много времени.

Для регрессионного тестирования, хотя это хороший инструмент для использования (я знаю, что, вероятно, есть лучшие инструменты), но простого макроса Excel должно быть достаточно.Кроме того, у вас есть дополнительный бонус: вы уже имеете данные в электронной таблице, и вы можете легко сравнить прогоны для многих тестов.

Но если вы все еще хотите провести тестирование производительности в своих модульных тестах.Идея магического числа может быть вашей лучшей идеей, если предположить, что сообщение об ошибке assert включает в себя ожидаемое и фактическое время, которое даст вам быструю индикацию того, насколько далеки от времени выполнения.

0 голосов
/ 24 июля 2010

Здесь вы можете найти полезный инструмент по вашему выбору.

Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...