Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Erstellt:
- Aktualisiert:
- Autor:
- Roland Golla
Inhaltsverzeichnis
Paratest 2026: Aktuelle Version, Features und Voraussetzungen
Aktuelle Version: v7.22.2 (Stand: April 2026, via GitHub Releases). Paratest 7 unterstützt ausschließlich PHP 8.3, 8.4 und 8.5 sowie PHPUnit 12 und 13. Wer noch PHP 7.x oder 8.2 einsetzt, bleibt auf älteren Paratest-Versionen stehen — ein weiterer Grund für ein rechtzeitiges PHP-Update.
Kernfeatures in v7.x:
- Zero Configuration: Paratest liest automatisch die vorhandene
phpunit.xml— kein zusätzliches Setup - WrapperRunner: Prozesse werden wiederverwendet statt neu gestartet, was den Overhead bei vielen kurzen Tests drastisch reduziert
- Automatische CPU-Erkennung: Mit
fidry/cpu-core-counterbestimmt Paratest die optimale Prozessanzahl automatisch (-p autoist der neue Standard) - Code-Coverage-Combining: Alle parallelen Prozesse liefern einen zusammengeführten Coverage-Report
- PHPStorm-Integration: Eigenes Binary
paratest_for_phpstormfür nahtlose IDE-Unterstützung - pcov und xDebug: Beide Coverage-Engines werden unterstützt und funktionieren in Sub-Prozessen
- TEST_TOKEN: Jeder Prozess erhält eine eindeutige ID zur Isolation von Datenbanken und Ressourcen
# Paratest v7 installieren (PHP 8.3/8.4/8.5 + PHPUnit 12/13 vorausgesetzt)
composer require --dev brianium/paratest
# Mit automatischer CPU-Erkennung starten (Empfehlung 2026)
vendor/bin/paratest -p auto
# WrapperRunner: schneller bei vielen kleinen Tests
vendor/bin/paratest --runner WrapperRunner -p auto
Paratest: PHPUnit Tests parallelisieren und beschleunigen 2026
Langsame Testsuiten kosten Entwicklungszeit und blockieren Deployments. Paratest löst dieses Problem, indem es PHPUnit-Tests parallel in mehreren Prozessen ausführt und die Laufzeit drastisch reduziert. In Enterprise-Projekten, die NCA betreut, konnten wir Testzeiten durch Paratest um bis zu 80% verkürzen — ohne eine einzige Testdatei anzupassen.
Paratest ist vollständig kompatibel mit bestehenden PHPUnit-Konfigurationen und lässt sich in Minuten einrichten. Wer zusätzlich GrumPHP oder Infection im Einsatz hat, profitiert von noch kürzeren Feedback-Zyklen im gesamten QA-Prozess.
Erreichen Sie unsere PHP Consultant Spezialisten
Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.
Installation und Einrichtung
Systemvoraussetzungen
- PHP 7.4 oder höher
- PHPUnit 9.0 oder höher
- Composer
Installation via Composer
composer require --dev brianium/paratest
Erste Schritte
Nach der Installation könnt ihr Paratest direkt nutzen:
# Basis-Ausführung
vendor/bin/paratest
# Mit 4 parallelen Prozessen
vendor/bin/paratest -p4
Grundlegende Verwendung
Die wichtigsten Kommandozeilenoptionen:
# Spezifisches Testverzeichnis
vendor/bin/paratest tests/Unit
# Bestimmte Testdatei
vendor/bin/paratest tests/Unit/ExampleTest.php
# Mit eurer PHPUnit-Konfiguration
vendor/bin/paratest -c phpunit.xml
Gruppierte Tests und Runner-Optionen:
# Gruppierte Tests ausführen
vendor/bin/paratest --group slow
# WrapperRunner für isolierte Prozesse
vendor/bin/paratest --runner WrapperRunner
# SqliteRunner für datenbankbasierte Tests
vendor/bin/paratest --runner SqliteRunner
Fortgeschrittene Konfiguration
Performance-Optimierung
# Maximale Prozesse basierend auf CPU-Kernen
vendor/bin/paratest -p$(nproc)
# Detaillierte Ausgabe für Debugging
vendor/bin/paratest --verbose
Runner-Optionen
# WrapperRunner für isolierte Prozesse
vendor/bin/paratest --runner WrapperRunner
# SqliteRunner für datenbankbasierte Tests
vendor/bin/paratest --runner SqliteRunner
Lass uns sprechen
Finde das passende Angebot für dein Projekt
Anfrage-Konfiguration
Starten Sie Ihre Anfrage
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Anfrage-Konfiguration
Worauf liegt dein Fokus?
Wähle die Expertise, die dein Projekt jetzt am dringendsten benötigt.
Integration in CI/CD-Pipelines
Paratest entfaltet seinen größten Nutzen in automatisierten Pipelines — dort, wo jede Minute Zögerung den nächsten Release verzögert. NCA implementiert Paratest regelmäßig als Teil von CI/CD-Setups für PHP-Projekte: GitLab, GitHub Actions und Bitbucket Pipelines werden alle unterstützt. Wer Hilfe bei der Einrichtung braucht, kann sich direkt bei uns melden.
test:
stage: test
script:
- composer install --no-interaction
- vendor/bin/paratest -p$(nproc) --coverage-text
artifacts:
reports:
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
GitHub Actions Beispiel
name: Tests
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run Tests
run: vendor/bin/paratest -p4 --coverage-clover=coverage.xml
Best Practices und Optimierung
Die optimale Prozessanzahl finden
Die ideale Anzahl paralleler Prozesse hängt von mehreren Faktoren ab:
- Verfügbare CPU-Kerne
- Euer Arbeitsspeicher
- Art eurer Tests (I/O- vs. CPU-lastig)
Tipp: Startet mit der Anzahl eurer CPU-Kerne und experimentiert von dort aus.
Test-Isolation sicherstellen
class ExampleTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
// Unique Identifier für parallele Tests
$this->identifier = uniqid('test_');
}
}
Datenbankzugriffe optimieren
// Separate DB-Verbindung pro Prozess via TEST_TOKEN
protected function getConnection()
{
return new PDO(
sprintf(
'mysql:host=localhost;dbname=test_%s',
getenv('TEST_TOKEN')
),
'user',
'password'
);
}
FAQ Paratest für PHPUnit
Was ist die ideale Anzahl an Prozessen für Paratest?
Die ideale Prozessanzahl liegt typischerweise bei einem Prozess weniger als eure verfügbaren CPU-Kerne. Bei einem 8-Kern-System startet also am besten mit 7 Prozessen und passt die Zahl basierend auf eurer Performance an.
Warum laufen meine Tests mit Paratest manchmal langsamer?
Eine langsamere Ausführung entsteht meist durch Ressourcenkonflikte. Überprüft die Anzahl eurer Prozesse, stellt sicher, dass eure Tests wirklich isoliert sind und keine gemeinsamen Ressourcen wie Datenbanken oder Dateien verwenden.
Muss ich meine PHPUnit-Tests für Paratest anpassen?
Nein, Paratest ist vollständig kompatibel mit Standard-PHPUnit-Tests. Ihr könnt eure existierenden Tests ohne Änderungen weiterverwenden.
Wie gehe ich mit Datenbankabhängigen Tests um?
Nutzt für jeden Testprozess eine eigene Datenbankverbindung mit einem unique Identifier. Der SqliteRunner oder das Anlegen temporärer Testdatenbanken pro Prozess sind hierfür bewährte Strategien.
Kann ich Paratest in meiner CI/CD-Pipeline verwenden?
Ja, Paratest lässt sich hervorragend in CI/CD-Pipelines integrieren. Nutzt den Befehl -p$(nproc) um automatisch die optimale Prozessanzahl für euren CI-Server zu ermitteln.
Wie funktioniert das Coverage-Reporting mit Paratest?
Paratest unterstützt alle PHPUnit-Coverage-Formate. Aktiviert es einfach mit --coverage-clover oder --coverage-html. Beachtet aber, dass Coverage-Reports die Testausführung verlangsamen.
Was tun, wenn Tests sporadisch fehlschlagen?
Sporadische Fehler deuten meist auf nicht-isolierte Tests hin. Überprüft eure Test-Setups auf gemeinsam genutzte Ressourcen und stellt sicher, dass jeder Test seine eigene Umgebung hat.
Kann ich bestimmte Tests von der Parallelisierung ausschließen?
Ja, nutzt die --group oder --exclude-group Option um bestimmte Tests von der parallelen Ausführung auszunehmen. Dies ist besonders nützlich für Tests, die nicht thread-safe sind.
Wie debugge ich Probleme mit Paratest?
Aktiviert den verbose-Mode mit --verbose und nutzt den WrapperRunner für bessere Fehlermeldungen. Dies gibt euch detaillierte Einblicke in die Testausführung und mögliche Probleme.
Kann Paratest mit verschiedenen PHP-Versionen verwendet werden?
Ja, Paratest unterstützt alle PHP-Versionen ab 7.4. Stellt einfach sicher, dass ihr die kompatible Paratest-Version für eure PHP-Version verwendet.
Fazit
Paratest ist eines der wirkungsvollsten Tools, um PHP-Testsuiten ohne Aufwand zu beschleunigen. Die Einrichtung dauert keine zehn Minuten — der Zeitgewinn ist dauerhaft. Besonders in wachsenden Projekten mit datenbankintensiven Tests oder langen Integrationstests macht sich die Parallelisierung sofort bemerkbar.
NCA unterstützt euch bei der vollständigen Einrichtung: von Paratest über PHPUnit-Konfiguration bis zur Integration in eure Deployment-Pipeline. Vereinbart eine kostenlose Erstberatung unter roland@nevercodealone.de.
Weiterführende Ressourcen
Offizielles GitHub-Repository von ParaTest
Das offizielle Repository enthält den Quellcode, Dokumentation, Issues und Releases. Hier finden Sie alle technischen Details und können zur Entwicklung beitragen.
https://github.com/paratestphp/paratest
ParaTest-Dokumentation
Die offizielle Dokumentation bietet eine umfassende Anleitung zur Installation, Konfiguration und Verwendung von ParaTest.
https://github.com/paratestphp/paratest#documentation