Faster than understanding
An AI coding agent implemented a complex software metric in 15 minutes. I have now spent hours trying to figure out whether the implementation is correct. Is this really a productivity boost?
Technical articles and columns by Sebastian Bergmann
An AI coding agent implemented a complex software metric in 15 minutes. I have now spent hours trying to figure out whether the implementation is correct. Is this really a productivity boost?
The any() matcher is deprecated. But migration is easier than you think – and leads to better tests.
Read moreI explain how PHPUnit 13's parameter set matchers finally solve the problem that made upgrading to PHPUnit 10 such a challenge.
Read moreReplay Testing leverages the memory of your event sourcing system to test new versions with real history and shows which oracles truly inspire confidence in your changes.
Read moreEvent Storming, DDD, CQRS, and Event Sourcing are intertwined: the tests not only check the events, but also become living documentation and a bridge between technical expertise and code.
Read moreA classic database only stores the "now" and forgets history. In this article, I describe my journey to DDD and event sourcing and explain why we need to learn to model time itself.
Read moreOne test, hundreds of inputs, and an automatic edge case search. But property-based testing has a hidden pitfall that many overlook.
Read moreShrinking is the unsung hero of property-based testing. I show you how it helps to make inevitable errors understandable.
Read moreWe only test what we think of. That is precisely what can become a problem.
Read moreWith phpc.social and phpc.tv, the PHP community is building its own donation-funded online spaces in the Fediverse – free from algorithms and fascist tech bros.
Read moreDoes PHP really need generics? A controversial thesis with a practical solution.
Read morePHP tests Laravel, Symfony, PHPUnit, and more every night. PHPUnit tests PHP. This is Open Source collaboration at work.
Read moreSelf-sabotaging mock objects? With PHPUnit 12.5, that's a thing of the past because the test runner now asks the right question: Do you really need a mock object, or would a test stub suffice?
Read moreI take a break from my weekly articles and invite you to a free online event where I will present the latest improvements to PHPUnit.
Read moreYour PHP project has no tests and an upgrade is pending? The classic dilemma: to introduce tests, you have to change code – to change code, you need tests. How can you break this cycle? With characterisation tests.
Read moreYour tests are successful. But are they really? Without a suitable test oracle, you will never know.
Read moreKnow the differences between data transfer objects and value objects and understand why immutability helps with testing.
Read moreWhy distinguishing between test stubs and mock objects in PHPUnit significantly improves the quality and readability of tests.
Read moreHow thoroughly do your tests cover the code, and how reliably do they detect real errors? I show you how to find out.
Read moreAre you prepared for a world in which your projects freeze, deployments stall, and tech giants can no longer rely on free community-run infrastructure?
Read moreDiscover how PHPUnit 12.4 helps you get there with less friction and more insight.
Read moreModern PHP development combines proven principles with the latest tools. It brings together documentation, quality, automation, and AI.
Read moreI discuss key issues for the future relating to ethics, digital sovereignty, Open Source, and web standards.
Read moreDiscover the hidden capabilities of PHPUnit and learn how to get the most out of your tests with clever features.
Read moreA personal journey from my first lines of BASIC on the Amiga to the question of how AI will shape the next generation of developers.
Read moreDiscover how collaboration with real-world developers has shaped the latest advancements in PHPUnit 12.3.
Read morePsalm or PHPStan: which tool is the better choice for code analysis? Or is it worth combining both tools for maximum code quality?
Read moreI look back on 30 years of open source innovations.
Read moreI am thrilled by the inspiring workshops, exciting open space sessions and the uniquely open, collaborative atmosphere of ComoCamp.
Read moreSoCraTes has enriched and motivated me in a lasting way through inspiring discussions, exciting sessions on topics such as PHP, software testing, security and open-source funding, as well as the special, collaborative atmosphere.
Read moreShould PHP_CodeSniffer or PHP-CS-Fixer be used to get code "in shape"? Should both tools even be used together?
Read moreShould you use PCOV or Xdebug to collect code coverage data? I give a personal answer.
Read moreI recollect my experience at the PHPUnit project's most recent code sprint.
Read moreSecurity support for PHP 7 has ended. What does this mean for you?
Read moreI reflect on why I no longer write setUp() methods.
Read moreIs your software ready for PHP 8.1? Now is the time to find out.
Read moreIf you use abstractions you don't own, testing may be difficult.
Read moreWhile working on PHPUnit, I encountered an interesting problem.
Read moreI explain how we can learn from failed IT projects.
Read moreI explain why PHPUnit no longer looks at the clock.
Read moreThe long story of a security problem that should not have been one.
Read moreIn the tension between backward compatibility and progress, a good developer experience must not be neglected.
Read morePackage managers are worthwhile targets, even if no one uses them anymore. Background information on the breach of the PEAR infrastructure of the PHP project.
Read moreRunning tests at the touch of a button is a great thing. Updating the testing tool at the touch of a button also sounds promising – or perhaps not?
Read moreWriting unit tests takes time. Is it really worth the effort?
Read moreI explain why using overly open version restrictions can lead to problems.
Read moreActive support for PHP 5 has ended. What does this mean for you?
Read moreBest practices are not set in stone and need to be questioned and then adapted, if need be, every once in a while.
Read moreReceive a comprehensive analysis of new PHPUnit features, implementation details, and the strategic considerations behind each improvement via email every two months.
Subscribe now