Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Aktualisiert:
- Autor:
- Roland Golla
Was ist StrykerJS
StrykerJS mit NCA: Schnelle Hilfe vom Experten
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.
So funktioniert Mutation Testing in der Praxis
export function isValidPrice(price) {
return price > 0;
}
import { expect, it } from 'vitest';
import { isValidPrice } from './price.js';
it('erkennt einen gueltigen Preis', () => {
expect(isValidPrice(10)).toBe(true);
expect(isValidPrice(-5)).toBe(false);
});
StrykerJS installieren und den ersten Lauf starten
cd mein-projekt
npm init stryker@latest
npx stryker run
npm install --save-dev @stryker-mutator/core @stryker-mutator/vitest-runner @stryker-mutator/typescript-checker
{
"$schema": "./node_modules/@stryker-mutator/core/schema/stryker-schema.json",
"testRunner": "vitest",
"mutate": ["src/**/*.ts", "!src/**/*.spec.ts", "!src/**/*.test.ts"],
"checkers": ["typescript"],
"tsconfigFile": "tsconfig.json",
"reporters": ["progress", "clear-text", "html"],
"concurrency": "50%",
"thresholds": {
"high": 80,
"low": 60,
"break": 60
}
}
Neu in StrykerJS 10: das bringt das Release vom August 2026
StrykerJS Releases im Überblick
Mutation Testing direkt in der IDE
Warum Mutation Testing bei KI generiertem Code wichtiger wird
StrykerJS in CI: Laufzeit im Griff behalten
npx stryker run --incremental
See which mutants survive or are killed without leaving your editor.
Vitest 3.0: Schneller JavaScript-Test-Runner mit Vite-Integration. Neue Features, Vorteile und Anwendungen für effizientes Testing in modernen Webprojekten.
Mehr erfahrenUnsere Erfahrung mit Mutation Testing
Optimieren Sie Ihre Webseite mit Astro JS und nutzen Sie die Vorteile einer schnellen, sicheren und barrierefreien Webseite. Erfüllen Sie die gesetzlichen Anforderungen und verbessern Sie die Benutzererfahrung Ihrer Webseite. Mit Astro JS können Sie die Ladezeit reduzieren, die Sicherheit maximieren und die SEO-Optimierung verbessern. Kontaktieren Sie uns, um mehr zu erfahren und um Ihre Webseite auf ein neues Level zu heben.
Häufige Fragen zu StrykerJS
Aktuell ist StrykerJS 10.0.0 vom 14. August 2026. Das Hauptpaket heißt @stryker-mutator/core, alle offiziellen Plugins tragen dieselbe Versionsnummer. Davor war 9.6.1 vom 10. April 2026 aktuell. Das Projekt folgt Semantic Versioning, ein Major Release pro Jahr ist die Regel und wird meist vom Ende des Supports einer Node Version ausgelöst.
StrykerJS 10 setzt Node.js 22 oder höher voraus. Der Support für Node.js 20 ist mit dem August Release entfallen. Das ist der einzige Breaking Change der Version. Wer noch auf Node 20 arbeitet, bleibt vorerst auf der Linie 9.6.1 oder hebt zuerst die Node Version in CI und in der lokalen Umgebung an.
Neu sind der empty-expression-mutator, Mutant Filtering für gezieltere Läufe und experimenteller Support für TypeScript 7 im Checker. Bricht ein Lauf unerwartet ab, wird der bis dahin erreichte inkrementelle Report trotzdem gespeichert. Dazu kommen Babel 8, Unterstützung für Mocha 12 und weniger Warnungsrauschen im Vitest Runner.
Ja. Der Support für Vitest 4 kam mit Version 9.4.0 im November 2025, Fixtures über test.extend folgten in 9.5. Den Browser Mode unterstützt der Runner seit Version 9.0. Der Vitest Runner wird als eigenes Paket installiert und in der Konfiguration über testRunner ausgewählt.
Gerade dann. KI Agenten erzeugen leicht Tests, die jede Zeile berühren und trotzdem nichts behaupten. Coverage bewertet solche Tests positiv, Mutation Testing nicht: Ein Test ohne echte Zusicherung tötet keinen Mutanten und der Score fällt sofort. Das macht den Mutation Score zur ehrlichsten Metrik für generierte Testsuiten.
Coverage misst, ob eine Zeile während der Tests ausgeführt wurde. Der Mutation Score misst, ob ein Fehler in dieser Zeile aufgefallen wäre. Eine Testsuite kann 100 Prozent Coverage haben und trotzdem keinen einzigen Grenzfall prüfen. Coverage ist eine Hygienemetrik, der Mutation Score eine Qualitätsaussage.
Ein Wert ab 80 Prozent gilt als gut. Die 100 ist kein sinnvolles Ziel, weil die letzten Punkte fast immer aus äquivalenten Mutanten und aus Code bestehen, dessen Verhalten egal ist. Sinnvoller ist eine break Schwelle in der Konfiguration, die den Lauf scheitern lässt, sobald der Score unter einen vereinbarten Wert fällt.
Deutlich länger als die Testsuite selbst, denn für jeden Mutanten laufen Tests erneut. Drei Hebel senken die Zeit: Coverage Analyse pro Test, sodass nur relevante Tests laufen, der inkrementelle Modus, der nur Geändertes neu rechnet, und eine passende Parallelität. Seit Version 9.6 lässt sich die Worker Anzahl als Prozentwert der CPU Kerne setzen.
Das sind Mutanten, deren veränderter Code sich exakt wie das Original verhält. Sie lassen sich prinzipiell nicht töten und drücken den Score unverdient. StrykerJS bietet drei Auswege: den Mutator über excludedMutations abschalten, einen Kommentar Stryker disable an die Stelle setzen oder ein Ignore Plugin für wiederkehrende Muster schreiben. Ignorierte Mutanten bleiben im Report sichtbar.
Ja. Neben Vitest gibt es offizielle Runner für Jest, Mocha, Jasmine, Karma, CucumberJS und den Test Runner von Node.js über den Tap Runner. Die Wahl steht in der Konfiguration unter testRunner, das passende Plugin wird als Dev Dependency installiert. Für Angular, React, Vue, Svelte und Node gibt es eigene Setup Guides.
Ja. Seit November 2025 gibt es ein offizielles Plugin für Visual Studio Code. Es zeigt Mutanten im Test Explorer, blendet überlebende Mutationen direkt im Editor ein und zeigt den veränderten Code als Diff. Voraussetzung ist StrykerJS ab Version 9.3.0. Technische Basis ist das Mutation Server Protocol, das seit 9.1 implementiert ist.
Ja. Für PHP ist Infection das verbreitete Framework, für C Sharp gibt es Stryker.NET und für Scala Stryker4s, beide aus derselben Projektfamilie wie StrykerJS. Für Java ist PIT der Standard. Das Konzept ist überall identisch, nur Mutatoren und Konfiguration unterscheiden sich.
Als eigener Job neben Unit Tests und statischer Analyse, nicht als Teil des normalen Testlaufs. Bewährt hat sich ein inkrementeller Lauf bei jedem Push und ein vollständiger Lauf nachts oder vor dem Release. Der HTML Report wird als Artefakt abgelegt, die break Schwelle entscheidet über Erfolg oder Abbruch des Jobs.