Вопрос

Мы разрабатываем автоматические регрессионные тесты с использованием VMWare и NUnit.Мы разделили тесты на этапы, и теперь мне хотелось бы, чтобы каждый этап проверялся на предмет снижения производительности.Простое определение времени проведения тестов, как это делает NUnit, не кажется надежным.Я рассчитал, что коэффициент приемлемости составляет около 15%, но наши шаги могут иногда отличаться более чем на 35%.Существует ли какой-либо последовательный способ тестирования производительности в такой ресурсозависимой тестовой среде?Является ли «умная» система синхронизации моим единственным вариантом?

Это было полезно?

Решение

Для такого рода тестирования производительности не существует такой вещи, как система, которая выдавала бы простой результат «прошел/не прошел».В реальной жизни изменение вашей системы, скорее всего, приведет к тому, что некоторые вещи станут быстрее, а некоторые — медленнее, поэтому обычно это не выбор между «лучше» и «не лучше», а выбор между различными видами улучшения.(Конечно, вы хотите избежать случаев, когда ситуация значительно хуже.)

В прошлом я просто вел статистику.Каждый раз, когда вы запускаете тесты, сохраняйте результаты в базе данных SQL с номером версии и временем тестирования.Затем вы можете составить график их в любое время и в любом месте (в идеале в небольшом веб-апплете, чтобы каждый член команды мог их просмотреть) и посмотреть, растет или падает ваша производительность, или производительность падает с момента выхода конкретной версии.

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

Другие советы

Вы можете изучить функции, доступные с помощью такого инструмента, как Ants Profiler, поскольку он дает время выполнения/запуска метода, но я не уверен, что он предлагает с точки зрения повторного тестирования.

Что касается тестирования производительности, я очень скептически относился к использованию vmware или других процессов виртуализации.Раньше мы решали эту проблему: часть сборки устанавливала последнюю версию на статическую машину и запускала тесты.Вы должны увидеть более стабильные результаты за пределами виртуализации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top