Projektinformationen:
Stopwatch ist eine unverzichtbare phpunit/phpunit
-Erweiterung für die Leistungsanalyse!
Gewinnen Sie bei Testläufen wertvolle Einblicke in die Ausführungszeit und Aufrufhäufigkeit Ihres Codes. Die Erweiterung soll Ihre Code-Leistungsanalyse verbessern. Verfolgen Sie die Ausführungszeit und Häufigkeit aller markierten Codesegmente, um Leistungsengpässe präzise zu beheben. Sie können Leistungsengpässe identifizieren (z. B. Datenbankbereinigungen oder -einrichtung) oder sie einfach im Laufe der Zeit überwachen. Die Erweiterung generiert Stoppuhrberichte für jeden Test sowie einen zusammenfassenden Bericht am Ende des Testlaufs.
Dieses Projekt stellt ein composer
Paket und ein Phar-Archiv bereit.
Die Erweiterung ist mit den folgenden Versionen von phpunit/phpunit
kompatibel:
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
Sobald Sie einige Messpunkte zu Ihrem Code hinzugefügt haben, stoppt die Erweiterung die Überwachung und zählt sie. Die Ergebnisse werden für jeden Test und als Gesamtbericht am Ende des Testlaufs angezeigt.
Hier ist ein Beispiel dafür, wie die Ausgabe einer einzelnen Testklasse aussehen könnte:
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)
Und am Ende des Testlaufs erhalten Sie eine Zusammenfassung aller verwendeten Stoppuhren, die so aussehen wird:
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)
Die Stoppuhr ist sehr einfach zu bedienen. Es genügt eine einzige Codezeile, die um den Code gewickelt wird, den Sie messen möchten.
Nehmen wir zum Beispiel an, Ihre Tests sind ziemlich langsam, aber Sie wissen nicht, wer der Schuldige ist? Sie vermuten, dass es möglicherweise an der Datenbankeinrichtung liegt, die für jeden einzelnen Test durchgeführt werden muss. Wickeln Sie den verdächtigen Codeblock einfach wie folgt ein:
Stopwatch:: start ( __METHOD__ );
self :: initializeDatabase (
$ db -> getConnection (),
... static :: createData ()
);
Stopwatch:: stop ( __METHOD__ );
Sollten der Test, das Setup, das Teardown oder andere relevante Methoden diesen Code ausführen, misst Stopwatch nahtlos seine Ausführungszeit und -anzahl und präsentiert die Ergebnisse in der Testausgabe.
composer
Laufen
composer require --dev teqneers/phpunit-stopwatch
teqneers/phpunit-stopwatch
als composer
Paket zu installieren.
Laden Sie phpunit-stopwatch.phar
aus der neuesten Version herunter.
Bevor die Erweiterung langsame Tests in phpunit/phpunit
erkennen kann, müssen Sie sie booten. Der Bootstrapping-Mechanismus hängt von der Version von phpunit/phpunit
ab, die Sie verwenden.
composer
-Paket Um die Erweiterung bei der Verwendung als composer
-Paket zu booten
phpunit/phpunit:^10.0.0
phpunit/phpunit:^11.0.0
Passen Sie Ihre phpunit.xml
Konfigurationsdatei an und konfigurieren Sie die
extensions
Element auf phpunit/phpunit:^10.1.0
extensions
Element auf phpunit/phpunit:^11.0.0
+
+
+
test/Unit/
Um die Erweiterung bei der Verwendung als PHAR zu booten
phpunit/phpunit:^10.1.0
phpunit/phpunit:^11.0.0
Passen Sie Ihre phpunit.xml
Konfigurationsdatei an und konfigurieren Sie die
extensionsDirectory
Attribut und das extensions
Element auf phpunit/phpunit:^10.0.0
extensionsDirectory
Attribut und das extensions
Element auf phpunit/phpunit:^11.0.0
+ extensionsDirectory="directory/where/you/saved/the/extension/phars"
>
+
+
+
test/Unit/
Bisher gibt es keine Konfigurationseinstellungen für diese Erweiterung.
Wenn Sie die Erweiterung gebootet haben, können Sie Ihre Tests wie gewohnt ausführen. Z.B:
vendor/bin/phpunit
Wenn die Erweiterung irgendwo in Ihrem Code verwendet wird, erhalten Sie einen Bericht:
Dieses Projekt verwendet die MIT-Lizenz.
Dieses Paket ist inspiriert von ergebnis/phpunit-slow-test-detector
.