Как сделать тестирование производительности на основе производительности (эталоном) в Python

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

Затем я хочу проверить производительность. Чтобы проверить код, чтобы убедиться, что новые коммиты не замедляют работу. Я был очень заинтригован политикой нулевой терпимости Safari для замедления от коммитов. Я не уверен, что уровень приверженности к скорости имеет хорошую рентабельность инвестиций для большинства проектов, но мне бы хотелось хотя бы быть предупрежденным о том, что произошла скоростная регрессия, и иметь возможность высказаться по этому поводу.

Окружающая среда – это Python в Linux, и предложение, которое также можно было бы использовать для скриптов BASH, сделало бы меня очень счастливым. (Но Python – основное внимание).

4 Solutions collect form web for “Как сделать тестирование производительности на основе производительности (эталоном) в Python”

По возможности вам потребуется провести тестирование производительности на системном уровне – проверьте приложение в целом, в контексте, с данными и поведением, максимально приближенным к использованию продукции.

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

Более того, вы не можете использовать виртуальную машину для тестирования производительности (если только ваша производственная среда не работает в виртуальных машинах, и даже тогда вам нужно будет запустить VM на хосте, где больше ничего не будет).

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

Кроме того, производительность блоков в модульном тестировании иногда не отражает их производительность в контексте, поэтому может быть совсем не полезно.

Хотя я согласен с тем, что производительность тестирования на системном уровне в конечном итоге более уместна, если вы хотите выполнить тестирование загрузки стиля UnitTest для Python, FunkLoad http://funkload.nuxeo.org/ делает именно это.

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

MarkR прав … выполнение тестирования производительности в реальном времени является ключевым, и может быть несколько придуманным в модульных тестах. Сказав это, посмотрите на модуль cProfile в стандартной библиотеке. Это, по крайней мере, будет полезно для того, чтобы дать вам относительный смысл от фиксации к фиксации того, как быстро работают, и вы можете запустить его в рамках единичного теста, хотя, конечно, вы получите результаты в деталях, которые включают в себя служебные данные самой модульной тестовой структуры.

В любом случае, если ваша цель – нулевая толерантность, вам понадобится нечто гораздо более надежное, чем это … cProfile в модульном тесте не будет вообще обрезать его и может ввести в заблуждение.

Когда я выполняю тестирование производительности, у меня обычно есть набор тестов для ввода данных и измеряется, сколько времени требуется программе для обработки каждого из них.

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

Если производительность слишком плохая, я выхожу из cProfile , запускаю его с теми же входами данных и пытаюсь выяснить, где узкие места.

  • Как издеваться над вложенными функциями?
  • Как создать тестовый вывод html unit в Python?
  • `python -m unittest discovery` не обнаруживает тестов
  • Pytest: Как проверить функцию с помощью входного вызова?
  • Может ли параллельный тест Python проходить параллельно, как нос?
  • Как выполнить модульное тестирование функций, записывающих файлы, используя python unittest
  • цветной вывод unittest
  • Персистентная переменная изменяется между тестами в unittest?
  • assertEquals против assertEqual в python
  • Как запустить несколько классов в Single Test Suite при тестировании модулей Python?
  • Издевательский класс: Mock () или patch ()?
  • Python - лучший язык программирования в мире.