NCA Social Media
Erstellt:
Aktualisiert:
Autor:
Roland Golla
Handwerkertisch im Steampunk-Stil mit goldenen Messgeräten

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-counter bestimmt Paratest die optimale Prozessanzahl automatisch (-p auto ist der neue Standard)
  • Code-Coverage-Combining: Alle parallelen Prozesse liefern einen zusammengeführten Coverage-Report
  • PHPStorm-Integration: Eigenes Binary paratest_for_phpstorm fü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
Code:
          

# 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.

CYPRESS.IO Ambassador und IT Consultant für QA Engenieering und Qualität in PHP Projekten.

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

Code:
          

composer require --dev brianium/paratest

Erste Schritte

Nach der Installation könnt ihr Paratest direkt nutzen:

Code:
          

# Basis-Ausführung
vendor/bin/paratest

# Mit 4 parallelen Prozessen
vendor/bin/paratest -p4

Grundlegende Verwendung

Die wichtigsten Kommandozeilenoptionen:

Code:
          

# 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:

Code:
          

# 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

Code:
          

# Maximale Prozesse basierend auf CPU-Kernen
vendor/bin/paratest -p$(nproc)

# Detaillierte Ausgabe für Debugging
vendor/bin/paratest --verbose

Runner-Optionen

Code:
          

# 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

Projektart
Infos
Nachricht

Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.

CORE EXPERTISE

Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.

BFSG COMPLIANT

Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.

ENTERPRISE READY

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.

Code:
          

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

Code:
          

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

Code:
          

class ExampleTest extends TestCase
{
    protected function setUp(): void
    {
        parent::setUp();
        // Unique Identifier für parallele Tests
        $this->identifier = uniqid('test_');
    }
}

Datenbankzugriffe optimieren

Code:
          

// 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