Artikel über Softwarearchitektur, Testautomation und PHP
Fundierte Perspektiven auf Architektur, Modernisierung, Qualität und professionelle Softwareentwicklung.
Wenn der Diff nichts kostet
Symfony Language Tools nimmt keine Pull Requests mehr an, die meisten Laravel-Pakete keine Issues. Beide Entscheidungen beruhen auf derselben Annahme: Der Diff ist billig geworden. Was knapp bleibt, ist das Verständnis des Problems, und das transportiert ein fehlschlagender Test am besten.
Vertrauen ist nicht übertragbar
Nach meinem Experiment mit KI-generiertem Code bin ich auf drei Beobachtungen gestoßen: von der Organisation über den Einzelnen bis zur nächsten Generation. Zusammen führen sie zu einer unbequemen Erkenntnis und zu der Fähigkeit, auf die es im KI-Zeitalter am meisten ankommen wird.
Wiederholung und Durchblick: Was ist neu in PHPUnit 13.3?
Flaky Tests zuverlässig erkennen und kontrolliert tolerieren, Code Coverage aus Sicht deiner Klassen, sichtbar gemachte Branch und Path Coverage und ein Filter nach Testgröße: Ich zeige dir, was es Neues in PHPUnit 13.3 gibt.
Wie PHP Maschinencode erzeugt
Der JIT ist auf keiner Standardinstallation eingeschaltet. Ihn einzuschalten ist eine Wette darauf, dass der kompilierte Code lange genug läuft, um die Kompilierung wieder hereinzuholen. An einer Testsuite mit 177 Tests verliert der Function-JIT diese Wette, und der Tracing-JIT gewinnt sie.
Wie PHP Bytecode optimiert
OPcache heißt Cache, tut aber mehr, als Bytecode aufzuheben: Zwischen Compiler und Executor liegen fünfzehn Passes, die den Bytecode umbauen. Ich sehe ihnen dabei zu und messe nach, was davon in der Laufzeit ankommt.
Wie PHP Bytecode ausführt
Welcher Compiler dein PHP-Binary gebaut hat, ist eine Performance-Entscheidung: Bis PHP 8.5 war ein mit Clang gebautes PHP je nach Benchmark bis zu 44 % langsamer als ein mit GCC gebautes. Der Unterschied liegt allein darin, wie der Executor von einer Instruktion zur nächsten kommt, und dafür hat die Zend Engine fünf Modelle.
Auch eine Sprache hat nichtfunktionale Anforderungen
Ob eine Sprache modern ist, entscheidet niemand. Entschieden wird, ob man ein Jahrzehnt auf sie wetten kann: Wem gehört sie, wie kommen Upgrades, wie skaliert sie, und findet man in sechs Jahren noch jemanden dafür? Eine Bestandsaufnahme von PHP anhand der Kriterien, über die eine Architekturentscheidung tatsächlich fällt.
Vier von fünf
Wie schneidet PHP im Jahr 2026 im Vergleich zu den Konsenskonzepten des modernen Sprachdesigns ab? Eine Bestandsaufnahme anhand der Kriterien Closures, Objekte, Pattern Matching und Generics sowie eine unkonventionelle Antwort auf die Frage der Erweiterbarkeit.
Dein composer.lock weiß, was ein Autohersteller nur vermutet
Ein Autohersteller führt in seiner Open Source-Attribution ein Android-Botnet auf. Der Eintrag verrät, wie die Liste entstanden ist: durch Scannen statt durch Deklaration. Warum eine deklarierte Abhängigkeitsliste mehr wert ist als eine gescannte und wie das PHPUnit-PHAR seinen eigenen Inhalt offenlegt.
Wenn statische Analyse deinen Code ausführt
Eine Sicherheitslücke in PHPCSUtils zeigt: Ein statisches Analysewerkzeug führt Code aus, den es nur lesen sollte. Warum disable_functions gegen eval() machtlos ist und wie ein Schalter in der PHP-Engine aussehen könnte, der eval() abschaltet.
Unveränderte Tests sind der halbe Beweis
Mein liebster Bugfix fügt nur einen neuen Regressionstest hinzu und fasst keinen bestehenden Test an. Ich habe diese Behauptung an der Geschichte von PHPUnit überprüft: Am meisten gelernt habe ich von den Gegenbeispielen.
Composer und Packagist im Supply Chain-Stresstest
2025 und 2026 waren ein Stresstest für die Lieferketten aller Package-Ökosysteme. Eine Bilanz für Composer und Packagist: was PHP richtig macht, was es lernen kann — und wem unsere Infrastruktur gehört.
Geschichten über Systeme, die sich Menschen widersetzen
Fünf der besten Fernsehserien, die ich je gesehen habe, erzählen von der Kluft zwischen dem, was Menschen erreichen wollen, und dem, was Institutionen ihnen erlauben. Sie faszinieren mich, denn nach Jahrzehnten der Entwicklung von Open Source-Software kenne ich vieles davon aus meinem eigenen Berufsalltag.
Präzision und Klarheit: Was ist neu in PHPUnit 13.2?
Genau die Tests auswählen, die du brauchst, mehr Kontrolle über ihre Reihenfolge, schnellere und klarere Ausgaben bei Fehlschlägen und ausdrucksstärkere Test Doubles: Ich zeige dir, was es Neues in PHPUnit 13.2 gibt.
Code Coverage-Daten zusammenführen
Das Zusammenführen von Code Coverage-Daten aus parallelen CI-Jobs war lange schwierig und fehleranfällig. Diese Probleme sind jetzt endlich gelöst.
Was dein Testlauf längst weiß
PHPUnit weiß bei jedem Lauf, wie lange jeder Test dauerte, wie viel Speicher er belegte und warum er scheiterte. Das meiste davon verpufft. otr-report liest diese Daten aus der Open-Test-Reporting-Logdatei zurück und macht sie nutzbar.
Geschwindigkeit als Sicherheitsmerkmal
Wie schnell ist deine Testsuite, und welche Schwachstellen findet ein LLM-Agent deshalb nicht? Was lange ein Produktivitätsthema war, gehört heute in die Security-Diskussion.
Turbo-Charging Your PHPUnit Suite
Langsame Tests bremsen den Arbeitsfluss, machen TDD zunichte und untergraben das Vertrauen, bis schließlich niemand mehr die Testsuite ausführt. Die Lösung umfasst vier Ebenen, und die größten Vorteile ergeben sich aus dem Testdesign, nicht aus der Infrastruktur oder der Parallelisierung.
Test-Driven Security
Für jede Schwachstelle, die wir in Produktion finden, gibt es einen Test, der sie verhindert hätte, wenn er existiert hätte. Test-Driven Security behandelt die CWE-Liste als Checkliste und PHPUnit als das Werkzeug, das wir ohnehin schon in unserem Workflow haben.
Debugging als Designziel
Warum fühlen sich manche Bugs wie eine kurze Detektivgeschichte an, während andere sich wie ein nie endender Krimi anfühlen? Ich zeige dir, welche Entscheidungen deine Software debugbar machen.
Code, den ich nicht habe, macht keine Probleme
Nicht jedes Problem braucht neuen Code. Und jede Zeile, die wir nicht schreiben, ist eine Zeile, die keine Probleme macht.
Angriffsfläche beginnt im Repository
Wir schützen, was existiert. Aber fragen wir oft genug, ob es überhaupt existieren sollte? Wie das Entfernen ungenutzter Branches vor Poisoned Pipeline Execution schützen kann.
GitHub Actions Workflows härten
Ein Rundgang durch die GitHub Actions-Schwachstellen in den Workflows von PHPUnit: wie jede einzelne hätte ausgenutzt werden können und was geändert wurde, um sie zu schließen.
ComoCamp 2026
Drei Tage Wien, drei Tage ComoCamp: Mein Erlebnisbericht über inspirierende Workshops, spannende Open Space Sessions und die einzigartig offene, gemeinschaftliche Atmosphäre.
Closures, Klarheit und Kontrolle: Was ist neu in PHPUnit 13.1?
Closures als Data Provider, umfassenderes Open Test Reporting, benutzerdefinierte Issue Trigger Resolver und wichtige Änderungen bei Code Coverage: Ich zeige dir, was es Neues gibt.
Technische Schulden sind keine Bosheit
Technische Schulden sind keine Bosheit, sie sind Kontext. Ein Argument dafür, warum Empathie eine technische Fähigkeit ist, die wichtiger ist, als du denkst.
Debugging von Performance in PHP
„Es fühlt sich langsam an“ ist keine Diagnose. Ich erkläre die drei Disziplinen, die vage Beschwerden in verwertbare Daten verwandeln: Tracing, Profiling und Benchmarking.
Der Türsteher im Dependency-Resolver
Composer 2.9 verlagert die Durchsetzung von Security-Advisories aus einem optionalen Drittanbieter-Paket in den Resolver selbst. Dieser Artikel zeigt, wie der Mechanismus funktioniert, wie er sich zu den älteren Paketen verhält, die er ersetzt, und an welchen Stellen das neue Verhalten dich auf eine Weise treffen kann, wie es das alte, passive Audit nie getan hat.
Alles, was wir haben
In einer Welt mit unendlich vielen Möglichkeiten, wie Code falsch sein kann, reicht ein Ansatz allein nicht aus, um unsere Software wirklich robust zu machen.
Sicherheit durch Chaos
Dieser praxisnahe Deep Dive in die Philosophie hinter "Security through chaos" zeigt, dass Sicherheit nicht aus perfekter Voraussicht entsteht, sondern aus dem Überleben von Chaos.
Mehr als Best Practices
Testen, Code Reviews und Dokumentation sind wichtige Voraussetzungen, um die Autonomie der KI einzuschränken und gleichzeitig die Handlungsfähigkeit des Menschen in der Softwareentwicklung zu schützen.
Effektive Code Reviews
Pair, Pull oder Post-Push? Finde die für dein Team passende Code Review-Strategie.
Schneller als Verstehen
Ein Coding Agent hat in 15 Minuten eine komplizierte Softwaremetrik umgesetzt. Ich habe jetzt Stunden damit verbracht, zu checken, ob die Umsetzung richtig ist. Ist das wirklich ein Produktivitätsgewinn?
Vom Anti-Pattern zur Klarheit
Der any() Matcher ist deprecated. Aber die Migration ist einfacher, als du denkst – und führt zu besseren Tests.
Besser als withConsecutive()
Ich zeige dir, wie die Parameter Set Matcher von PHPUnit 13 endlich das Problem lösen, das das Upgrade auf PHPUnit 10 zu einer solchen Herausforderung gemacht hat.
Replay Testing
Replay Testing nutzt die Erinnerung deines Event Sourcing-Systems, um neue Versionen mit echter Historie zu prüfen und zeigt, welche Orakel wirklich Vertrauen in deine Änderungen schaffen.
Von Events zu Erkenntnissen
Event Storming, DDD, CQRS und Event Sourcing greifen ineinander: Die Tests prüfen nicht nur die Events, sondern werden auch zur lebenden Dokumentation und zur Brücke zwischen Fachlichkeit und Code.
Wie sich mein Verständnis von Software wandelte
Eine klassische Datenbank speichert nur das "Jetzt" und vergisst die Geschichte. In diesem Artikel beschreibe ich meinen Weg zu DDD und Event Sourcing und erkläre, warum wir lernen müssen, die Zeit selbst zu modellieren.
Data Provider oder Properties?
Ein Test, hunderte Eingaben und eine automatische Randfallsuche. Doch das eigenschaftsbasierte Testen hat eine versteckte Falle, die viele übersehen.
Kleinere Eingabe, größere Erkenntnis
Shrinking ist der heimliche Held des eigenschaftsbasierten Testens. Ich zeige dir, wie es hilft, unvermeidliche Fehler verständlich zu machen.
Property-Based Testing
Wir testen nur das, woran wir denken. Genau das kann jedoch zum Problem werden.
Open Source, offene Feeds: Mastodon und PeerTube als Online-Spaces der PHP-Community
Die PHP-Community baut mit phpc.social und phpc.tv ihre eigenen, spendenfinanzierten Online-Spaces im Fediverse – frei von Algorithmen und faschistischen Tech-Bros.
Typsichere Collections
Braucht PHP wirklich Generics? Eine kontroverse These mit praktischer Lösung.
Wie PHP und sein Ökosystem sich gegenseitig testen
PHP testet Laravel, Symfony, PHPUnit und mehr jede Nacht. PHPUnit testet PHP. Das ist Open Source-Zusammenarbeit in Aktion.
Die Stub-/Mock-Intervention
Sich selbst sabotierende Mock Objects? Mit PHPUnit 12.5 gehört das der Vergangenheit an, denn der Test Runner schaut dir jetzt über die Schulter und stellt die richtige Frage: Brauchst du wirklich ein Mock Object, oder reicht ein Test Stub?
Eine festliche Auszeit
Ich mache eine Pause von meinen wöchentlichen Artikeln und lade dich zu einem kostenlosen Online-Event ein, bei dem ich dir die neuesten Verbesserungen von PHPUnit vorstelle.
Ein Flugschreiber für deinen Code
Dein PHP-Projekt hat keine Tests und ein Upgrade steht an? Das klassische Dilemma: Um Tests einzuführen, musst du Code ändern – um Code zu ändern, brauchst du Tests. Wie du diesen Kreislauf durchbrichst? Mit Characterization Tests.
Die Wahrheit erkennen: Test Oracles
Deine Tests sind erfolgreich. Aber sind sie das wirklich? Ohne ein passendes Test Oracle wirst du das nie erfahren.
Testen mit DTOs und Wertobjekten
Kenne die Unterschiede zwischen Datentransferobjekten und Wertobjekten und verstehe, warum Unveränderlichkeit beim Testen hilft.
Testen mit (und ohne) Abhängigkeiten
Warum die Unterscheidung zwischen Test Stubs und Mock Objects in PHPUnit die Qualität und Lesbarkeit von Tests deutlich verbessert.
Path Coverage oder Mutation Testing?
Wie gründlich decken deine Tests den Code ab und wie zuverlässig entdecken sie echte Fehler? Ich zeige dir, wie du das herausfindest.
Open Source Blackout
Bist du bereit für eine Welt, in der deine Projekte ins Stocken geraten, Deployments nicht möglich sind und Tech-Giganten sich nicht mehr auf kostenlose, von der Community betriebene Infrastruktur verlassen können?
Mehr Kontrolle, weniger Probleme: Was gibt's Neues in PHPUnit 12.4?
Finde heraus, wie PHPUnit 12.4 dir dabei hilft, mit weniger Aufwand und mehr Einblicken ans Ziel zu kommen.
Moderne PHP-Entwicklung
Moderne PHP-Entwicklung vereint bewährte Prinzipien mit aktuellen Werkzeugen. Sie bringt Dokumentation, Qualität, Automatisierung und KI zusammen.
Ein Blick ins Jahr 2035
Ich bespreche zentrale Zukunftsfragen zu den Themen Ethik, digitale Souveränität, Open Source und Webstandards.
PHPUnit-Features, die selbst Profis überraschen
Entdecke die versteckten Fähigkeiten von PHPUnit und lerne, wie du mit cleveren Features das Maximum aus deinen Tests herausholst.
Von AmigaBASIC bis KI
Ein persönlicher Streifzug von meinen ersten BASIC-Zeilen auf dem Amiga bis zu der Frage, wie KI die nächste Generation Entwicklerinnen und Entwickler prägt.
Innovation durch Zusammenarbeit: Die Highlights von PHPUnit 12.3
Erfahre, wie die Zusammenarbeit mit echten Entwickler:innen die neuesten Verbesserungen in PHPUnit 12.3 beeinflusst hat.
Psalm oder PHPStan?
Psalm oder PHPStan: welches Werkzeug ist die bessere Wahl für die Codeanalyse? Oder lohnt sich die Kombination beider Tools für maximale Code-Qualität?
30 Jahre PHP, 25 Jahre PHPUnit
30 Jahre PHP und Open-Source-Innovationen im Rückblick – begleitet von 25 Jahren PHPUnit.
ComoCamp 2025
Ich bin begeistert von inspirierenden Workshops, spannenden Open Space Sessions und der einzigartig offenen, gemeinschaftlichen Atmosphäre des ComoCamps.
SoCraTes 2024
Die SoCraTes hat mich durch inspirierende Gespräche, spannende Sessions zu den Themen PHP, Software-Testing, Security und Open-Source-Funding sowie die besondere, gemeinschaftliche Atmosphäre nachhaltig bereichert und motiviert.
PHP_CodeSniffer oder PHP-CS-Fixer?
Sollte PHP_CodeSniffer oder PHP-CS-Fixer verwendet werden, um Code "in Form" zu bringen? Sollten gar beide Werkzeuge zusammen verwendet werden?
PCOV oder Xdebug?
Sollte PCOV oder Xdebug verwendet werden, um Code Coverage-Daten zu sammeln? Sebastian Bergmann gibt eine persönliche Antwort.
PHPUnit Code Sprint: März 2024
Erfahrungen und Erkenntnisse aus dem jüngsten Code-Sprint des PHPUnit-Projekts.
O Brother, where art thou?
Warum bringen einzelne Veränderungen nicht den gewünschten Erfolg?
Domain-Driven Design mit PHP
Mehr Fachlichkeit statt Technologie-Details: Diese Entwurfsmuster aus dem Domain-Driven Design sollten Sie kennen und anwenden können.
PHP 7: Security-Support endet. Was nun?
Der Security-Support für PHP 7 ist beendet. Was bedeutet das für Sie?
Wie ich Testinventar verwalte
Eine Best Practice im Wandel der Zeit: eine Reflektion über alte und neue Wege, um die Testumgebung für einen Unit-Test zu erzeugen.
Wie heißen Deine Konstruktoren?
PHP unterstützt kein Überladen von Konstruktoren. Named Constructors schaffen Abhilfe. Doch wie benennen wir diese am besten?
A Friday for Green IT
Was trägt die IT-Branche zum Klimawandel bei? Eine Panel-Diskussion auf unserer Konferenz lieferte zu dieser Frage interessante Erkenntnisse.
Gemeinsam
Es war schon immer da, aber wir haben es nicht gesehen. Vielleicht wollten wir es auch nicht sehen.
Bereit oder nicht: es geht los
Ist Ihre Software bereit für PHP 8.1? Jetzt ist es an der Zeit, das herauszufinden.
Ketchup oder Mayo?
In einer Pommesbude gibt es ein paar Speisen und dazu Getränke. Da kann Gründen ja nicht besonders schwierig sein.
Software-Entwicklung und Profisport
Der Vergleich zwischen Software-Entwicklung und Profisport kann erschrecken. Es geht hier allerdings nicht um Bewegungsmangel bei Entwicklern.
Mocke nicht, was Dir nicht gehört
Abstraktion ist ein zentrales Themen beim Programmieren. Gibt jedoch ein Drittanbieter eine Abstraktion vor, kann es beim Testen Probleme geben.
Migration auf PHPUnit 9
Im Spannungsfeld zwischen Rückwärtskompatibilität und Fortschritt darf eine gute Developer Experience nicht zu kurz kommen.
Mit Cache wird alles schneller. Oder?
Ein unerwartetes PHPUnit-Problem und die Erkenntnisse, die sich daraus ableiten lassen.
Wir haben gar kein Framework im Einsatz
Ist ein eigenes Framework besser als eine Standardlösung? Oder kann man auf ein Framework ganz verzichten?
Entwickler gesucht, Maintainer gefunden
Es ist sehr schwierig, gute Entwickler zu finden. Schon mal versucht, stattdessen einen Maintainer zu suchen?
Scheiternde IT-Projekte
Was wir aus gescheiterten IT-Projekten lernen können – und wie daraus bessere Entscheidungen entstehen.
Wer hat an der Uhr gedreht?
Warum PHPUnit nicht mehr auf die Systemzeit schaut – und was das für verlässliche Tests bedeutet.
Adieu, IT-Konferenz
Das Coronavirus verändert unser Leben. Welche Auswirkungen hat die Pandemie auf die Zukunft von IT-Konferenzen?
Besseres Design dank CQRS
Getter lesen und Setter schreiben. Was passiert, wenn man diese Idee auf die Architektur einer Anwendung anwendet?
Automation und Edge Cases
Die Corona-Pandemie zwingt uns zu neuen Auslegungen des Begriffs "Edge Case". Das führt zu interessanten IT-Problemen.
PHPUnit: Ein Sicherheitsrisiko?
Warum PHPUnit auf einem Webserver nichts zu suchen hat und welches Sicherheitsrisiko dadurch entsteht.
Hilfe! Meine Tests funktionieren nicht mehr
Tests auf Knopfdruck ausführen ist eine tolle Sache. Das Testwerkzeug auf Knopfdruck aktualisieren klingt ebenfalls vielversprechend - oder vielleicht doch nicht?
Schatten der Vergangenheit
Installationprogramme sind lohnende Angriffsziele, auch wenn sie keiner mehr benutzt. Hintergründe zum Einbruch in die PEAR-Infrastruktur des PHP-Projekts.
Wer zahlt für PHP?
Da es keine Unterstützung durch ein Unternehmen oder eine gemeinnützige Organisation gibt, wer bezahlt die Entwicklung und Wartung von PHP - und wie?
Schnellere Code Coverage
Wie gezielte Optimierungen die Code-Coverage-Analyse von PHPUnit deutlich beschleunigt haben.
Die Zukunft von Zend
Einige Schlüsselpersonen haben angekündigt, dass sie Rogue Wave verlassen werden. Gefährdet das die Zukunft von PHP?
Microservices in der Mittagspause
Die richtige Dekomposition ist ein entscheidender Erfolgsfaktor für Microservice-Architekturen. Hier ist der Grund dafür.
Konferenzen: zum Spaß oder für Geld?
Wie viel Geld Konferenzsprecher in der PHP-Community tatsächlich verdienen.
Warum Entwickler Code schreiben
Wenn sie nicht gerade in Meetings sind, schreiben Entwickler oft Programmcode. Warum ist dieser eigentlich immer so schwer zu verstehen?
Testen hält mich von der Arbeit ab
Das Schreiben von Unit Tests braucht Zeit. Lohnt sich dieser Aufwand wirklich?
Der Todesstern
Warum zu offene Versionsbeschränkungen Builds gefährden und wie sich das vermeiden lässt.
PHP 5: Aktiver Support endet. Was nun?
Der aktive Support für PHP 5 ist beendet. Was bedeutet das für Sie?
PHPUnit: Best Practices hinterfragen
Best Practices sind nicht in Stein gemeißelt und müssen von Zeit zu Zeit hinterfragt und gegebenenfalls angepasst werden.
Wie man Daten validiert
Die Validierung von Daten scheint eine der wichtigsten Aufgaben einer Anwendung zu sein. Schließlich kann man Daten aus externen Quellen nicht vertrauen.
Über Hackathons
Hackathons machen Spaß können sehr lehrreich sein. Aber vermitteln sie den Teilnehmern auch die richtigen Werte?
Versteckte Abhängigkeiten
Das Herumreichen eines Service-Locators ist eine schlechte Idee, weil es Abhängigkeiten verschleiert. Aber wie können wir es vermeiden?
Wird das WWW das next big thing?
Von Enterprise-Software zu Skriptsprachen: Stefan Priebsch erinnert sich, warum und wie er vor über 15 Jahren das erste Mal mit PHP in Kontakt kam.
Den Wandel vorantreiben
Sie sind nicht ganz zufrieden damit, wie es in Ihrem Team oder Ihrer Organisation läuft? Es gibt einen einfachen Weg, um Veränderungen anzustoßen.
PHP 7 bricht Abwärtskompatibilität
Wie im Rahmen eines neuen Major-Releases wie PHP 7 zu erwarten ist, gibt es Brüche in der Abwärtskompatibilität. Wie ist damit umzugehen?
Bessere Tests für Joomla
In einem Code Sprint zur Verbesserung der Joomla-Testumgebung wurden Fehler in PHPUnit und PHP selbst gefunden und beseitigt.
SoCraTes 2014
Meine erste SoCraTes: ein World Café am Donnerstag, zwei Tage Open Space zu TDD, Legacy Code und Apprenticeship, und ein Brettspiel, dessen Spielziel dem eines Softwareprojekts verdächtig ähnlich sieht.
Bessere PHPUnit-Unterstützung in TYPO3
Wie ein Code-Sprint die PHPUnit-Unterstützung in TYPO3 gezielt verbessert hat.
Desintegrationstests
Was der Mars Climate Orbiter über Testebenen und die Grenzen isolierter Tests lehrt.
Lohnt sich kontinuierliche Integration?
Ab welcher Projektgröße lohnt sich kontinuierliche Integration in PHP-Projekten?
Man ist, was man isst
Was Entwicklungsteams von einer professionellen Küchenbrigade über Qualität und Zusammenarbeit lernen können.
Neugier und Perfektionismus
Ein Vater von dreijährigen Zwillingen sieht erstaunliche Parallelen zwischen heranwachsenden Kindern und Software-Entwicklung.
Integrationstests - das fehlende Bindeglied
Systemtests geben wenig Hinweise auf Fehlerursachen. Unit-Tests dagegen machen keine Aussage über das Verhalten einer Anwendung. Integrationstests schließen diese Lücke.
Großstadtlegenden und Fehlerbehandlung
Wir alle kennen Geschichten, die mit "Ich habe von jemandem gehört" beginnen. Sind sie wahr, oder nur eine Großstadtlegende?
Blindes Vertrauen
Ein Kurztrip zum Bahnhof wird zu einer Odyssee. Was sich daraus über Testautomation, technische Schulden und Qualitätsziele lernen lässt.
Experimentelle Bahnübergänge
Was ein beschrankter Bahnübergang über kontrollierte Experimente, Verkehrsfluss und experimentgetriebene Softwareentwicklung lehrt.
Software Development Fluxx
Was das Kartenspiel Star Fluxx über Agilität, objektorientiertes Design und Qualitätssicherung verrät.
Daten, Persistenz und meine Bratpfanne
Was eine Bratpfanne über relationale und nicht-relationale Datenhaltung erklären kann.
Wenn es heiß wird
Wenn die Klimaanlage nicht funktioniert, kann es an Bord eines ICE im Sommer so richtig heiß werden. Ein Plädoyer für Qualitätsziele.
Spaces oder Tabs?
Entwickler fragt man besser nicht, welches Betriebssystem das Beste ist. Oder ob man mit Tabulatoren oder Leerzeichen einrücken soll.
Sechzig Prozent Qualität
Was Hotelbewertungen über messbare und gemeinsam verstandene Qualitätsziele lehren.
Das große Ganze sehen
Die Menschheit baut schon seit über 5000 Jahren Gebäude. Software-Entwicklung dagegen ist eine noch sehr junge Disziplin.