Informações do projeto:
Stopwatch é uma extensão phpunit/phpunit
essencial para análise de desempenho!
Obtenha insights valiosos sobre o tempo de execução do seu código e a frequência de chamadas durante as execuções de teste. A extensão foi projetada para elevar a análise de desempenho do seu código. Acompanhe o tempo de execução e a frequência de quaisquer segmentos de código marcados para solucionar gargalos de desempenho com precisão. Você pode identificar gargalos de desempenho (por exemplo, limpeza ou configuração de banco de dados) ou apenas monitorá-los ao longo do tempo. A extensão irá gerar relatórios de cronômetro para cada teste, bem como um relatório resumido no final da execução do teste.
Este projeto fornece um pacote composer
e um arquivo Phar.
A extensão é compatível com as seguintes versões de phpunit/phpunit
:
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
Depois de adicionar alguns pontos de medição ao seu código, a extensão irá parar o relógio e contá-los. Os resultados são exibidos para cada teste e como um relatório total no final da execução do teste.
Aqui está um exemplo de como pode ser a saída de uma única classe de teste:
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)
E no final do teste, você obterá um resumo de todos os cronômetros usados, e ficará assim:
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)
O cronômetro é muito fácil de usar. Basta uma única linha de código envolvendo o código que você deseja medir.
Por exemplo, digamos que seus testes sejam bem lentos, mas você não sabe quem é o culpado? Você suspeita que pode ser a configuração do banco de dados que precisa ser feita para cada teste. Simplesmente envolva o bloco de código suspeito da seguinte maneira:
Stopwatch:: start ( __METHOD__ );
self :: initializeDatabase (
$ db -> getConnection (),
... static :: createData ()
);
Stopwatch:: stop ( __METHOD__ );
Caso o teste, configuração, desmontagem ou outros métodos relevantes executem este código, o Stopwatch medirá perfeitamente seu tempo de execução e contagem e apresentará os resultados na saída do teste.
composer
Correr
composer require --dev teqneers/phpunit-stopwatch
para instalar teqneers/phpunit-stopwatch
como um pacote composer
.
Baixe phpunit-stopwatch.phar
da versão mais recente.
Antes que a extensão possa detectar testes lentos em phpunit/phpunit
, você precisa inicializá-la. O mecanismo de inicialização depende da versão do phpunit/phpunit
que você está usando.
composer
Para inicializar a extensão como um pacote composer
ao usar
phpunit/phpunit:^10.0.0
phpunit/phpunit:^11.0.0
ajuste seu arquivo de configuração phpunit.xml
e configure o
extensions
em phpunit/phpunit:^10.1.0
extensions
em phpunit/phpunit:^11.0.0
+
+
+
test/Unit/
Para inicializar a extensão como um PHAR ao usar
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
ajuste seu arquivo de configuração phpunit.xml
e configure o
extensionsDirectory
e o elemento extensions
em phpunit/phpunit:^10.0.0
extensionsDirectory
e o elemento extensions
em phpunit/phpunit:^11.0.0
+ extensionsDirectory="directory/where/you/saved/the/extension/phars"
>
+
+
+
test/Unit/
Até o momento, não há definições de configuração para esta extensão.
Depois de inicializar a extensão, você pode executar seus testes normalmente. Por exemplo:
vendor/bin/phpunit
Quando a extensão for usada em algum lugar do seu código, você receberá um relatório:
Este projeto usa a licença do MIT.
Este pacote é inspirado em ergebnis/phpunit-slow-test-detector
.