В нашем приложении Python (классной веб-службе) есть полный набор тестов (модульные тесты, интеграционные тесты и т.д.), которые все разработчики должны выполнять перед выполнением кода.
Я хочу добавить некоторые тесты производительности в набор, чтобы убедиться, что никто не добавляет код, который заставляет нас работать слишком медленно (для некоторого довольно произвольного определения медленного).
Очевидно, что я могу собрать некоторую функциональность в тест, время и сравнить с некоторым предопределенным порогом.
Сложные требования:
- Я хочу, чтобы каждый разработчик мог проверить код на своем компьютере (зависит от мощности процессора, ОС (! Linux и некоторых Windows) и внешних конфигураций - версия Python, библиотеки и модули одинаковы). Тест-сервер, хотя в целом неплохая идея, не решает этого.
- Я хочу, чтобы тест был DETERMINISTIC - независимо от того, что происходит на машине, на которой выполняются тесты, я хочу, чтобы несколько прогонов теста возвращали те же результаты.
Мои предварительные мысли:
- Использовать тайм-аут и выполнять тест системы каждый раз, когда я запускаю тесты. Сравните результаты теста производительности с эталонным тестом.
- Используйте cProfile, чтобы заставить интерпретатор игнорировать "внешний шум". Я не уверен, что знаю, как читать структуру
pstats
, но я уверен, что это выполнимо.
Другие мысли?
Спасибо!
Tal.