Информация о проекте:
Stopwatch — это важное расширение phpunit/phpunit
для анализа производительности!
Получите бесценную информацию о времени выполнения вашего кода и частоте вызовов во время тестовых запусков. Расширение предназначено для улучшения анализа производительности кода. Отслеживайте время и частоту выполнения любых отмеченных сегментов кода, чтобы точно устранять узкие места в производительности. Вы можете выявить узкие места производительности (например, очистку или настройку базы данных) или просто отслеживать их с течением времени. Расширение будет генерировать отчеты секундомера для каждого теста, а также сводный отчет в конце тестового запуска.
Этот проект предоставляет пакет composer
и архив Phar.
Расширение совместимо со следующими версиями phpunit/phpunit
:
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
Как только вы добавите в код несколько точек измерения, расширение остановит часы и подсчитает их. Результаты отображаются для каждого теста и в виде общего отчета в конце выполнения теста.
Вот пример того, как могут выглядеть выходные данные одного тестового класса:
Stopwatch for TQTestsExampleSingleTest::testDataCalculation:
- TQTestingDatabase::deleteData 0.117secs ( 3x, Ø 0.04) TOTAL 327.026secs ( 184x, Ø 1.78)
- ...onmentTesting::cleanupInstance 0.259secs ( 1x, Ø 0.26) TOTAL 6.159secs ( 60x, Ø 0.10)
- TQTestingDatabase::import 7.889secs ( 11x, Ø 0.72) TOTAL 250.958secs ( 352x, Ø 0.71)
- Test 1.428secs ( 1x, Ø 1.43) TOTAL 1041.228secs ( 70x, Ø 14.87)
.
Stopwatch for TQTestsExampleSingleTest::testDataTransfer:
- TQTestingDatabase::deleteData 0.116secs ( 3x, Ø 0.04) TOTAL 327.142secs ( 187x, Ø 1.75)
- ...onmentTesting::cleanupInstance 0.256secs ( 1x, Ø 0.26) TOTAL 6.415secs ( 61x, Ø 0.11)
- TQTestingDatabase::import 7.573secs ( 11x, Ø 0.69) TOTAL 258.531secs ( 363x, Ø 0.71)
- Test 5.998secs ( 1x, Ø 6.00) TOTAL 1047.226secs ( 71x, Ø 14.75)
.
Stopwatch for TQTestsExampleSingleTest TearDown:
- TQTestingDatabase::deleteData 38.486secs ( 6x, Ø 6.41) TOTAL 365.511secs ( 190x, Ø 1.92)
- ...onmentTesting::cleanupInstance 0.256secs ( 1x, Ø 0.26) TOTAL 6.415secs ( 61x, Ø 0.11)
- TQTestingDatabase::import 7.573secs ( 11x, Ø 0.69) TOTAL 258.531secs ( 363x, Ø 0.71)
- Test 5.998secs ( 1x, Ø 6.00) TOTAL 1047.226secs ( 71x, Ø 14.75)
А в конце тестового запуска вы получите сводку всех использованных секундомеров, и она будет выглядеть следующим образом:
Stopwatch TOTALS:
- Test TOTAL 1047.246secs ( 78x, Ø 13.43)
- TQTestingDatabase::deleteData TOTAL 365.511secs ( 190x, Ø 1.92)
- TQTestingDatabase::import TOTAL 258.531secs ( 363x, Ø 0.71)
- ...onmentTesting::cleanupInstance TOTAL 6.416secs ( 62x, Ø 0.10)
- TQProductionMonitoring::ping TOTAL 17.967secs ( 7x, Ø 2.57)
Секундомер очень прост в использовании. Все, что нужно, — это одна строка кода, обернутая вокруг кода, который вы хотите измерить.
Например, предположим, что ваши тесты работают довольно медленно, но вы не знаете, кто виноват? Вы подозреваете, что это может быть настройка базы данных, которую необходимо выполнять для каждого теста. Просто оберните подозрительный блок кода следующим образом:
Stopwatch:: start ( __METHOD__ );
self :: initializeDatabase (
$ db -> getConnection (),
... static :: createData ()
);
Stopwatch:: stop ( __METHOD__ );
Если этот код выполняется при тестировании, настройке, демонтаже или других соответствующих методах, секундомер легко измерит время и счетчик его выполнения и представит результаты в выходных данных теста.
composer
Бегать
composer require --dev teqneers/phpunit-stopwatch
чтобы установить teqneers/phpunit-stopwatch
как пакет composer
.
Загрузите phpunit-stopwatch.phar
из последней версии.
Прежде чем расширение сможет обнаружить медленные тесты в phpunit/phpunit
, вам необходимо его загрузить. Механизм начальной загрузки зависит от используемой вами версии phpunit/phpunit
.
composer
Чтобы загрузить расширение как пакет composer
при использовании
phpunit/phpunit:^10.0.0
phpunit/phpunit:^11.0.0
отредактируйте файл конфигурации phpunit.xml
и настройте
extensions
в phpunit/phpunit:^10.1.0
extensions
в phpunit/phpunit:^11.0.0
+
+
+
test/Unit/
Чтобы загрузить расширение как PHAR при использовании
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
отредактируйте файл конфигурации phpunit.xml
и настройте
extensionsDirectory
и элемент extensions
в phpunit/phpunit:^10.0.0
extensionsDirectory
и элемент extensions
в phpunit/phpunit:^11.0.0
+ extensionsDirectory="directory/where/you/saved/the/extension/phars"
>
+
+
+
test/Unit/
Пока что для этого расширения нет настроек конфигурации.
После загрузки расширения вы можете запускать тесты как обычно. Например:
vendor/bin/phpunit
Когда расширение используется где-то в вашем коде, оно выдает вам отчет:
Этот проект использует лицензию MIT.
Этот пакет создан на основе ergebnis/phpunit-slow-test-detector
.