Мы разрабатываем автоматические регрессионные тесты с использованием VMWare и NUnit. Мы разделили тесты на шаги, и теперь я хотел бы, чтобы каждый шаг рассматривался для регрессии производительности. Простое время тестов, как это делает NUnit, не кажется надежным. Я полагал, что коэффициент принятия составляет около 15%, но наши шаги могут иногда отличаться более чем на 35%. В такой среде, зависящей от ресурсов, существует ли какой-либо последовательный способ тестирования производительности? Является ли «умная» система синхронизации моей единственной опцией?Тестирование производительности
ответ
Для такого рода тестирования производительности нет такой вещи, как система, которая даст вам простой результат прохода/сбоя. В реальной жизни изменение вашей системы, скорее всего, сделает некоторые вещи быстрее, а некоторые другие более медленными, поэтому обычно это не выбор между «лучше» и «не лучше», это выбор между разными типами лучше. (Конечно, вы хотите избежать случаев, когда это хуже.)
То, что я делал для этого в прошлом, - это просто сохранять статистику с течением времени. Каждый раз, когда вы запускаете свои тесты, удаляйте результаты в базе данных SQL с номером ревизии и временем тестирования. Затем вы можете их графовать всякий раз, когда хотите и хотите (в идеале, в небольшом веб-апплете, чтобы все в команде могли их просмотреть) и посмотреть, не повышается ли ваша производительность вверх или вниз, или если производительность сосала с той или иной версии.
Главное, однако, в том, что это должен быть граф . Таким образом, человеческие глаза могут смотреть на него и находить тенденции. Вы могли потратить всю неделю, пытаясь придумать алгоритм ИИ, чтобы анализировать данные численно, но он никогда не нарушил бы способность распознавания образов человека.
Вы можете ознакомиться с функциями, доступными с помощью инструмента, такого как Ants Profiler, поскольку он дает время выполнения/выполнения метода, но я не уверен, что он предлагает в плане повторного тестирования.
Что касается тестирования производительности, я скептически относился к использованию vmware или других процессов виртуализации. То, как мы это делали в прошлом, состоит в том, чтобы часть сборки устанавливала последнюю версию на статической машине и запускала тесты. Вы должны увидеть более последовательные результаты за пределами виртуализации.