41554 blogs · [ { "id": "01a0cdc6-f3d6-7281-8318-5dffff8a808e", "title": "When the diff is free", "url": "https://phpunit.expert/articles/when-the-diff-is-free.html", "published_at": "2026-09-23T05:40:00+00:00" }, { "id": "01a0bdce-9d66-72df-9886-cf5c1402fea6", "title": "Confidence is not transferable", "url": "https://phpunit.expert/articles/confidence-is-not-transferable.html", "published_at": "2026-09-16T04:30:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c5314533e", "title": "Repetition and Insight: What is new in PHPUnit 13.3?", "url": "https://phpunit.expert/articles/repetition-and-insight-what-is-new-in-phpunit-133.html", "published_at": "2026-09-09T04:10:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c536ed5c8", "title": "How PHP generates machine code", "url": "https://phpunit.expert/articles/how-php-generates-machine-code.html", "published_at": "2026-09-02T03:10:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c53fb743b", "title": "Digital sovereignty is written in PHP", "url": "https://thephp.foundation/blog/2026/09/02/digital-sovereignty-is-written-in-php", "published_at": "2026-09-01T22:00:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c54b10343", "title": "Succession, release cycle, and 26 years of PHPUnit", "url": "https://event.afup.org/forumphp2026-interview-sebastian-bergmann", "published_at": "2026-08-26T22:00:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c54d808c9", "title": "How PHP optimises bytecode", "url": "https://phpunit.expert/articles/how-php-optimises-bytecode.html", "published_at": "2026-08-26T03:50:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c54e1e2d2", "title": "How PHP executes bytecode", "url": "https://phpunit.expert/articles/how-php-executes-bytecode.html", "published_at": "2026-08-19T02:10:00+00:00" }, { "id": "01a087c3-11b1-71ae-b4ec-040c558842fb", "title": "So you received a security report. Now what?", "url": "https://thephp.foundation/blog/2026/08/19/so-you-received-a-security-report-now-what", "published_at": "2026-08-18T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da440512e0", "title": "A language has non-functional requirements, too", "url": "https://phpunit.expert/articles/a-language-has-non-functional-requirements-too.html", "published_at": "2026-08-17T03:45:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da44c0654a", "title": "Four out of five", "url": "https://phpunit.expert/articles/four-out-of-five.html", "published_at": "2026-08-12T05:05:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da455a5554", "title": "Your composer.lock knows what a carmaker only guesses", "url": "https://phpunit.expert/articles/your-composer-lock-knows-what-a-carmaker-only-guesses.html", "published_at": "2026-08-05T04:05:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da45b97971", "title": "When static analysis runs your code", "url": "https://phpunit.expert/articles/when-static-analysis-runs-your-code.html", "published_at": "2026-07-29T04:15:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da468aad30", "title": "Untouched tests are half the proof", "url": "https://phpunit.expert/articles/untouched-tests-are-half-the-proof.html", "published_at": "2026-07-22T03:45:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da471ab9e3", "title": "Composer and Packagist under supply chain stress", "url": "https://phpunit.expert/articles/composer-and-packagist-under-supply-chain-stress.html", "published_at": "2026-07-15T04:40:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da472c01b4", "title": "Stories about systems that resist people", "url": "https://phpunit.expert/articles/stories-about-systems-that-resist-people.html", "published_at": "2026-07-08T03:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da47bad8da", "title": "Precision and Clarity: What is new in PHPUnit 13.2?", "url": "https://phpunit.expert/articles/precision-and-clarity-what-is-new-in-phpunit-132.html", "published_at": "2026-07-01T04:40:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da488f9c3d", "title": "Merging code coverage data", "url": "https://phpunit.expert/articles/merging-code-coverage-data.html", "published_at": "2026-06-24T04:35:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da48ea8f90", "title": "What your test run already knows", "url": "https://phpunit.expert/articles/what-your-test-run-already-knows.html", "published_at": "2026-06-17T05:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da497b5954", "title": "Speed as a security feature", "url": "https://phpunit.expert/articles/speed-as-a-security-feature.html", "published_at": "2026-06-12T06:20:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4a3510b7", "title": "Turbo-Charging Your PHPUnit Suite", "url": "https://phpunit.expert/articles/turbo-charging-your-phpunit-suite.html", "published_at": "2026-06-11T09:30:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4a9e1c9c", "title": "Test-Driven Security", "url": "https://phpunit.expert/articles/test-driven-security.html", "published_at": "2026-06-10T13:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4b1f7a93", "title": "Debugging as a design goal", "url": "https://phpunit.expert/articles/debugging-as-a-design-goal.html", "published_at": "2026-06-03T03:45:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4b7e8aff", "title": "Code I do not have does not cause any problems", "url": "https://phpunit.expert/articles/code-i-do-not-have-does-not-cause-any-problems.html", "published_at": "2026-05-27T04:45:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4c3a989a", "title": "The attack surface begins in the repository", "url": "https://phpunit.expert/articles/the-attack-surface-begins-in-the-repository.html", "published_at": "2026-05-20T05:10:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4caee3bb", "title": "Hardening GitHub Actions workflows", "url": "https://phpunit.expert/articles/hardening-github-actions-workflows.html", "published_at": "2026-05-17T12:30:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4cf03992", "title": "ComoCamp 2026", "url": "https://phpunit.expert/articles/comocamp-2026.html", "published_at": "2026-05-13T03:25:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4d1390fe", "title": "Closures, Clarity, and Control: What is New in PHPUnit 13.1?", "url": "https://phpunit.expert/articles/closures-clarity-and-control-what-is-new-in-phpunit-131.html", "published_at": "2026-05-06T04:15:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4e0217bd", "title": "Technical debt is not malice", "url": "https://phpunit.expert/articles/technical-debt-is-not-malice.html", "published_at": "2026-04-29T05:05:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4ece3fd7", "title": "Debugging Performance in PHP", "url": "https://phpunit.expert/articles/debugging-performance-in-php.html", "published_at": "2026-04-23T10:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da4fb17721", "title": "The Bouncer in the Dependency Resolver", "url": "https://phpunit.expert/articles/the-bouncer-in-the-dependency-resolver.html", "published_at": "2026-04-18T15:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da50a415ae", "title": "Everything we have", "url": "https://phpunit.expert/articles/everything-we-have.html", "published_at": "2026-04-15T04:40:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da517dcbe8", "title": "Security through chaos", "url": "https://phpunit.expert/articles/security-through-chaos.html", "published_at": "2026-04-08T02:45:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da51aca327", "title": "Beyond Best Practices", "url": "https://phpunit.expert/articles/beyond-best-practices.html", "published_at": "2026-04-01T05:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da521856b0", "title": "Effective Code Reviews", "url": "https://phpunit.expert/articles/effective-code-reviews.html", "published_at": "2026-03-25T06:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da52836ec7", "title": "Faster than understanding", "url": "https://phpunit.expert/articles/faster-than-understanding.html", "published_at": "2026-03-18T04:50:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5307c693", "title": "From anti-pattern to clarity", "url": "https://phpunit.expert/articles/from-anti-pattern-to-clarity.html", "published_at": "2026-03-11T05:15:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da53225ac2", "title": "Better than withConsecutive()", "url": "https://phpunit.expert/articles/better-than-withconsecutive.html", "published_at": "2026-03-04T05:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5400b7c6", "title": "Replay Testing", "url": "https://phpunit.expert/articles/replay-testing.html", "published_at": "2026-02-25T05:30:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da543c9923", "title": "From Events to Insights", "url": "https://phpunit.expert/articles/from-events-to-insights.html", "published_at": "2026-02-20T11:15:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da54b5e685", "title": "How my understanding of software changed", "url": "https://phpunit.expert/articles/how-my-understanding-of-software-changed.html", "published_at": "2026-02-11T06:45:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5531b5ca", "title": "Data Provider or Properties?", "url": "https://phpunit.expert/articles/data-provider-or-properties.html", "published_at": "2026-02-04T04:40:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da55819ba1", "title": "Smaller input, greater insight", "url": "https://phpunit.expert/articles/smaller-input-greater-insight.html", "published_at": "2026-01-28T06:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da565bc36d", "title": "Property-Based Testing", "url": "https://phpunit.expert/articles/property-based-testing.html", "published_at": "2026-01-21T05:55:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5700ca2a", "title": "Open Source, Open Feeds: Mastodon and PeerTube as online spaces for the PHP community", "url": "https://phpunit.expert/articles/open-source-open-feeds-mastodon-and-peertube-as-online-spaces-for-the-php-community.html", "published_at": "2026-01-18T08:25:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da57336158", "title": "Type-Safe Collections", "url": "https://phpunit.expert/articles/type-safe-collections.html", "published_at": "2026-01-14T04:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da57496e3c", "title": "How PHP and its ecosystem test each other", "url": "https://phpunit.expert/articles/how-php-and-its-ecosystem-test-each-other.html", "published_at": "2026-01-06T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da57c354f0", "title": "The Stub/Mock Intervention", "url": "https://phpunit.expert/articles/the-stub-mock-intervention.html", "published_at": "2025-12-30T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da57ce120d", "title": "A festive break", "url": "https://phpunit.expert/articles/a-festive-break.html", "published_at": "2025-12-23T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da581d5e62", "title": "A flight recorder for your code", "url": "https://phpunit.expert/articles/a-flight-recorder-for-your-code.html", "published_at": "2025-12-16T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da58b2425e", "title": "Seeing the Truth: Test Oracles", "url": "https://phpunit.expert/articles/seeing-the-truth-test-oracles.html", "published_at": "2025-12-09T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da591f8435", "title": "Testing with DTOs and Value Objects", "url": "https://phpunit.expert/articles/testing-with-data-transfer-objects-and-value-objects.html", "published_at": "2025-12-02T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da59805a94", "title": "Testing with(out) dependencies", "url": "https://phpunit.expert/articles/testing-with-and-without-dependencies.html", "published_at": "2025-11-27T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da59f4f261", "title": "Path Coverage or Mutation Testing?", "url": "https://phpunit.expert/articles/path-coverage-or-mutation-testing.html", "published_at": "2025-11-18T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5ae281a0", "title": "Open Source Blackout", "url": "https://phpunit.expert/articles/open-source-blackout.html", "published_at": "2025-11-10T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5b58888e", "title": "More control, less friction: What's new in PHPUnit 12.4?", "url": "https://phpunit.expert/articles/more-control-less-friction-what-is-new-in-phpunit-12.4.html", "published_at": "2025-11-04T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5bc41a26", "title": "Modern PHP Development", "url": "https://phpunit.expert/articles/modern-php-development.html", "published_at": "2025-10-28T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5c583865", "title": "A look ahead to 2035", "url": "https://phpunit.expert/articles/a-look-ahead-to-2035.html", "published_at": "2025-10-21T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5caec59d", "title": "PHPUnit features that surprise even professionals", "url": "https://phpunit.expert/articles/phpunit-features-that-surprise-even-professionals.html", "published_at": "2025-10-14T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5ce28ac1", "title": "From AmigaBASIC to AI", "url": "https://phpunit.expert/articles/from-amigabasic-to-ai.html", "published_at": "2025-10-06T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5d8d7990", "title": "Innovation through collaboration: The highlights of PHPUnit 12.3", "url": "https://phpunit.expert/articles/innovation-through-collaboration-the-highlights-of-phpunit-12.3.html", "published_at": "2025-08-31T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5e51116a", "title": "Psalm or PHPStan?", "url": "https://phpunit.expert/articles/psalm-or-phpstan.html", "published_at": "2025-06-15T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5ed7e984", "title": "30 Years of PHP, 25 Years of PHPUnit", "url": "https://phpunit.expert/articles/30-years-php-25-years-phpunit.html", "published_at": "2025-06-07T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da5fc9df85", "title": "ComoCamp 2025", "url": "https://phpunit.expert/articles/comocamp-2025.html", "published_at": "2025-05-09T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da60233475", "title": "SoCraTes 2024", "url": "https://phpunit.expert/articles/socrates-2024.html", "published_at": "2024-08-24T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da602cbec2", "title": "PHP_CodeSniffer or PHP-CS-Fixer?", "url": "https://phpunit.expert/articles/phpcodesniffer-or-phpcsfixer.html", "published_at": "2024-06-24T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da605e074d", "title": "PCOV or Xdebug?", "url": "https://phpunit.expert/articles/pcov-or-xdebug.html", "published_at": "2024-03-21T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da60f78dac", "title": "PHPUnit Code Sprint: March 2024", "url": "https://phpunit.expert/articles/phpunit-code-sprint-march-2024.html", "published_at": "2024-03-10T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da61d44308", "title": "PHP 7: Security Support Ends. Now what?", "url": "https://phpunit.expert/articles/php-7-security-support-ends-now-what.html", "published_at": "2022-11-27T23:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da62004f8e", "title": "How I manage test fixture", "url": "https://phpunit.expert/articles/how-i-manage-test-fixture.html", "published_at": "2022-04-03T22:00:00+00:00" }, { "id": "01a087c3-11b5-7229-a9c7-32da62f66ae5", "title": "Ready Or Not, Here It Comes", "url": "https://phpunit.expert/articles/ready-or-not-here-it-comes.html", "published_at": "2021-08-01T22:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3e7222560", "title": "Do not mock what you do not own", "url": "https://thephp.cc/articles/do-not-mock-what-you-do-not-own?ref=phpunit.expert", "published_at": "2021-04-20T22:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3e7f09af5", "title": "Caching makes everything faster. Right?", "url": "https://phpunit.expert/articles/caching-makes-everything-faster-right.html", "published_at": "2020-10-07T22:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3e84c79e4", "title": "Failing IT Projects", "url": "https://phpunit.expert/articles/failing-it-projects.html", "published_at": "2020-07-05T22:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3e87531b9", "title": "Who wound the clock?", "url": "https://phpunit.expert/articles/who-wound-the-clock.html", "published_at": "2020-06-04T22:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3e915d428", "title": "PHPUnit: A Security Risk?", "url": "https://phpunit.expert/articles/phpunit-a-security-risk.html", "published_at": "2020-02-20T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3ea0b9a57", "title": "Migrating to PHPUnit 9", "url": "https://phpunit.expert/articles/migrating-to-phpunit-9.html", "published_at": "2020-02-06T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3eade3da0", "title": "Help! My tests stopped working", "url": "https://phpunit.expert/articles/help-my-tests-stopped-working.html", "published_at": "2019-02-11T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3eb94d799", "title": "Blast from the Past", "url": "https://thephp.cc/articles/blast-from-the-past?ref=phpunit.expert", "published_at": "2019-01-31T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3ebc843e1", "title": "Testing keeps me from getting things done", "url": "https://thephp.cc/articles/testing-keeps-me-from-getting-things-done?ref=phpunit.expert", "published_at": "2017-02-23T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3ebd67d89", "title": "The Death Star", "url": "https://phpunit.expert/articles/the-death-star.html", "published_at": "2017-02-14T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3ec8f231e", "title": "PHP 5: Active Support Ends. Now what?", "url": "https://phpunit.expert/articles/php-5-active-support-ends-now-what.html", "published_at": "2016-12-30T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3ed6cb5ce", "title": "Questioning Best Practices", "url": "https://phpunit.expert/articles/questioning-best-practices.html", "published_at": "2016-02-04T23:00:00+00:00" }, { "id": "01a087c3-11b6-7033-9187-2af3ee2161cb", "title": "SoCraTes 2014", "url": "https://phpunit.expert/articles/socrates-2014.html", "published_at": "2014-08-10T22:00:00+00:00" } ] posts Claim your blog
Back to phpunit.expert
Blog · corpus.blog/blogs/phpunit.expert/posts

phpunit.expert

phpunit.expert

2026

2025

2024

2022

2021

2020

2019

2017

2016

2014