Sebastian Bergmann

Sebastian Bergmann created PHPUnit.

Together with Arne Blankerts and Stefan Priebsch he co-founded thePHP.cc GbR and BBP Consulting & Publishing GmbH.

He helps PHP teams build better software.

Lately in PHP(Unit)
4 December 2016
Lately in PHP(Unit)

Long gone are the times when developers had to wait years to get their hands on new versions of PHP itself and tools such as PHPUnit. The PHP project releases a version with new features every year and the PHPUnit project every eight weeks. Join Sebastian Bergmann, creator and maintainer of PHPUnit, for a recap of what is new in PHP 7.0 and PHP 7.1 as well as PHPUnit 5 and PHPUnit 6.

29 October 2016
Testing: the more you do it, the more you’ll like it

Though we "believe" in testing and "know" it helps deliver better quality code, many of us struggle to incorporate testing into our daily work. Why? And how do we get both technical and non-technical stakeholders not only on the same page with regards to delivering quality software but also actively involved in the process? In this session, Sebastian Bergmann, creator of PHPUnit, and Jeffrey A. "jam" McGuire, Evangelist, Developer Relations at Acquia, discuss how adopting and consistently applying testing to software development delivers better results at a lower overall cost and how the benefits of testing accrue over time.

24 October 2016
PHP 7 Day

When PHP turned 20 last year, the core developers presented us with a really nice birthday present: version 7, released in December 2015. Less than a year later, PHP 7 is being used in production by a growing number of companies. This day will get you ready for PHP 7, in all aspects. Sebastian Bergmann, creator of PHPUnit, will take you on a tour through the history of the PHP project. Find out where PHP originates from, and how it became one of the most widely used programming languages in the world. Why is there no PHP 6, and which crucial role did Facebook play? You will also take a look under the hood of PHP to better understand why PHP 7 can offer better performance and lower resource usage than PHP 5, and how this will affect the future of PHP. You will learn about the new language features introduced in PHP 7.0 and PHP 7.1. Arne Blankerts, security and infrastructure expert, will go in-depth about the installation and deployment of the PHP software stack. He will make the point why LAMP is no longer en vogue, and introduce you to some state-of-the-art alternatives. You will learn how to better scale PHP 7 and find out how you can smoothly transition from PHP 5 to PHP 7 from a sytem architect’s point of view. Stefan Priebsch, a leading PHP consultant and coach, will show you how to get your codebase ready for PHP 7. How can you leverage new features in legacy projects without having to rewrite everything from scratch? To prepare you for the big migration, common pitfalls will be covered, and you will get to know pragmatic solutions. He will also look at the business impact of PHP 7. The day is rounded up with a Q+A session where no question will go unanswered, and we will open up the room for discussions.

23 October 2016
PHP 7: What kind of language is it?
22 August 2016
PHP 7: 28 Weeks Later
14 July 2016
Finding the right test tool for the job
14 July 2016
PHP 7: What kind of language is it?

PHP 7 is an imperative programming language that supports procedural as well as object-oriented programming. It has limited support for functional programming and language extensions for aspect-oriented programming exist. PHP 7 is dynamically, implicitly, and weakly typed but supports explicit typing and strict type checking when desired. But what does this all mean? Join Sebastian Bergmann on a whirlwind tour through the interesting land of programming language design principles and find out just what a great language PHP is.

31 May 2016
Finding the right testing tool for the job

Over the last decade the idea that we should test our applications has slowly made its way from a niche idea to the mainstream of PHP development. With many tools and approaches to testing now available it can be difficult to choose which ones to use. In this talk we will explore the current landscape of PHP testing practices, look at the different tools and approaches available, and find out how we can decide which are best for our project, team, and context.

29 May 2016
28 Weeks Later

Patient 7.0 was released into the wild 28 weeks ago. How many hosts have successfully been infected and how far has it spread? Was it an isolated outbreak or is it turning into a pandemic? A look back at seven months of PHP 7.

28 May 2016
Lately in PHP(Unit)
12 May 2016
Code Coverage: Covered in Depth
13 April 2016
Acquia Developer Center Podcast (Part 2)
16 March 2016
Acquia Developer Center Podcast (Part 1)
4 March 2016
PHPUnit 5, PHP 7, and Beyond

New versions of PHPUnit that add new functionality are released bi-monthly. These releases do not break backwards compatibility, making it easy to stay up-to-date. PHPUnit 5.0, however, had to break backwards compatibility in October 2015 to support PHP 7. We will discuss how PHPUnit had to be adapted for PHP 7, how PHPUnit benefits from PHP 7, what additional changes PHPUnit 5.0-5.2 have brought, and we'll close with a look ahead to PHPUnit 6.

24 February 2016

Questioning PHPUnit Best Practices

Best practices are not set in stone and need to be questioned and then adapted, if need be, every once in a while [...]

5 February 2016
How to get ready for PHP 7
3 December 2015
The State of PHPUnit

Every eight weeks, a new version of PHPUnit is released. In this session, we discuss features added recently to help with writing and running tests. The development of new features is no longer limited to the PHPUnit core. Thanks to Composer, a thriving ecosystem of plugins is available that can be easily used to make your testing efforts more effective. We will examine the most commonly used plugins and close with a discussion of the future of PHPUnit.

20 November 2015
The Fall Guy

This is the story of one of programming's great unsung heroes. I mean you've seen him, but you never knew who he was. You've cheered for him and cried for him and women have wanted to die for him. But did he ever get any credit, or the girl? No! He's what we call a test double. Test doubles lead an interesting, yet sometimes underappreciated life as dummies, stubs, spies, or mocks in the shadow of "real" objects. The audience will learn how to use Prophecy, a powerful mocking library for PHP, effectively with PHPUnit for designing and testing clean, modern PHP code.

28 October 2015
How to get ready for PHP 7

More than a decade since the original release of PHP 5, the language's next major version, PHP 7, brings with it opportunities and challenges for developers. The attendees of this session will learn how to prepare their code for PHP 7 in order to leverage its performance improvements as well as its new functionality offerings as soon as possible and with the least amount of risk.

27 October 2015
Code as Craft
8 October 2015
Test-Driven Domains

It has been argued that Test-Driven Development bears the risk of losing the focus on business value. Domain-Driven Design is an approach to software development that puts a strong focus on business value. Combining ideas of Domain-Driven Design and Test-Driven Development leads to a formalized representation of the ubiquitous language through production code and tests. Sebastian Bergmann, creator of PHPUnit, and Stefan Priebsch, a proven expert on software architecture and design, will show how you this works in a live pair programming session. The attendees of this workshop will then apply the demonstrated concepts and techniques under the guidance of the two trainers. Bring a laptop with PHP!

25 September 2015

PHPUnit 4.8: Code Coverage Support

PHPUnit 4.8 adds support for code coverage using PHPDBG for PHP 7 [...]

7 August 2015
The Three Dimensions of Testing

The goal of all tests is to discover problems as early as possible. Dependening on the context, the same test can be used to answer different questions about the quality of the software under test. The three dimensions of goal, scope, and notation are one approach to categorize tests. Attendees of this session will learn which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.

26 June 2015

20 Years of PHP

Sebastian Bergmann recollects how he first came into contact with PHP [...]

11 June 2015
At the push of a button, and without a maintenance window!

A web application only generates revenue if it is available to users. This is why changes are traditionally deployed when most users sleep. The distribution and activation of a new software release need to be decoupled to make roll-outs during regular business hours feasible. In this talk we will show how to automate all the steps required to get a new version of a PHP web application into production without downtime.

9 June 2015

PHPUnit 4.7 and Three Shades of Green

PHPUnit 4.7 introduces a couple of small improvements, for instance to the HTML code coverage report [...]

5 June 2015
Code Coverage: Covered in Depth

The analysis of code coverage is a feature that is extended and improved with each release of PHPUnit. In this session we will cover all aspects of PHPUnit's code coverage functionality in depth. You will learn how to leverage this important functionality more effectively to augment and guide your testing efforts.

21 May 2015

PHPUnit 4.6 and Global State

PHPUnit 4.6, which was released last week, adds an optional check for marking a test as risky when global state is manipulated while it's running [...]

7 April 2015
Test-Driven Domains
28 March 2015

PHPUnit 4.5 and Prophecy

PHPUnit 4.5 has been released today and features out-of-the-box support for the modern mock object framework Prophecy [...]

6 February 2015

FOSDEM

Last weekend I attended FOSDEM in Brussels, Belgium and talked about the state of PHPUnit in the "PHP and Friends" room [...]

2 February 2015
The State of PHPUnit
1 February 2015

PHPUnit: Migration from PEAR to PHAR

In this article I show you how to migrate your PHPUnit installation from PEAR to PHAR (or Composer) [...]

13 January 2015
Moving Fast Without Deploying Broken Things

Most web applications are changed and adapted quite frequently and quickly. What was sufficient yesterday can be insufficient today. Moving fast and breaking things is not a problem if you have a test harness and process in place you can trust to prevent you from deploying broken things into production. Attendees of this session will learn how create tests that are easy to write and fast to execute, require minimal maintenance, and deliver highly reliable results.

22 November 2014
Moving fast without deploying broken things
22 November 2014
IT Serbia Podcast
22 November 2014
Auf Knopfdruck – und ohne Wartungsfenster!

Eine Webanwendung kann nur dann Geschäftswert generieren, wenn sie für Anwender verfügbar ist. Änderungen führt man daher klassisch dann durch, wenn die Anwender schlafen. Um die Softwareverteilung in die reguläre Arbeitszeit verlegen zu können, müssen das Verteilen und die Inbetriebnahme der neuen Version voneinander entkoppelt werden. In diesem Vortrag zeigen die Referenten, wie man sämtliche Schritte automatisiert, um eine neue Version einer PHP-Webanwendung in Produktion zu stellen und dabei weder offline gehen noch vermeintlich inkompatible Versionen fürchten muss. Die vorgestellten Konzepte und Prozesse wurden unter anderem bei brack.ch und globetrotter.de implementiert und sind auch jenseits der PHP-Welt anwendbar.

10 November 2014
A State of Mind
3 November 2014
Effective Integration Testing

Beyond unit tests, integration tests are crucial. Implemented as end-to-end tests, however, they are cumbersome to write and slow to execute. Edge-to-edge tests are easier to write and faster to execute. More importantly, they require minimal maintenance. Most importantly, they deliver highly reliable results. Developers in the audience will gain expertise in the confident and effective implementation of integration tests with PHPUnit.

29 October 2014
A State of Mind

Domain-Driven Design puts a focus on domain logic, the heart of business software. It is in this layer of the software that business concepts are represented in code together with their respective business rules. The state that reflects the business situation is controlled and used here. Business rules can be represented in code using state machines. These can be implemented effectively and with ease by applying the State design pattern. Join Sebastian Bergmann on a whirlwind journey through areas of software engineering such as design patterns, static code analysis, software visualization, code generation, and test generation.

28 October 2014
Dealing with Legacy Code

It is a fact of life for every developer: you have to deal with code that has been written before your time and does not follow state-of-the-art best practices. The audience will learn in this session how branch-by-abstraction can be applied to "hide" ugly code behind beautiful APIs and how automatically generated characterization tests can be used to safeguard against unintended changes in legacy code while it is modernized. This makes testing in legacy applications possible and enables writing new code that does not suffer from the limitations imposed by the project's history.

28 October 2014

Joomla PHPUnit Code Sprint

This week I travelled to Montabaur, Germany to support the Joomla project with their testing effort [...]

17 October 2014
Eine kurze Geschichte der Testpraktiken

Soll ich meine Software besser als Ganzes mit End-to-End Tests testen oder doch lieber im Kleinen mit Unit Tests? Und welchen Ansatz soll ich verfolgen? Acceptance Test-Driven (ATDD)? Behavior-Driven Development (BDD)? Test-Driven Development (TDD)? Diese und andere Diskussionen rund um das Testen von Software führen Entwicklerinnen und Entwickler leider allzu oft nur aus der Werkzeugsicht und verlieren dabei den eigentlichen Entwicklungsprozess aus den Augen. Dieser Vortrag erklärt nicht nur die unterschiedlichen Ansätze wie ATDD, BDD und TDD sondern beleuchtet auch wann und in welchem Kontext sie ursprünglich erfunden beziehungsweise wiedergefunden wurden. Die Teilnehmer gewinnen ein Verständnis für die gängigen Prozessbausteine rund um das Testen und können auf dieser Grundlage den für sie passenden Prozess ebenso wählen wie die Werkzeuge, mit dem sie den Prozess umsetzen.

10 October 2014

SoCraTes

Last week I travelled to Soltau, Germany to attend SoCraTes 2014 [...]

11 August 2014

HHVM: The Alternative PHP Runtime

In my presentation at IPC Spring 2014, I provided the audience with an in-depth look at what HHVM is and how it works [...]

29 July 2014
HHVM: The Alternative PHP Runtime
28 July 2014

TYPO3 PHPUnit Code Sprint

Last weekend I travelled to Hamburg, Germany to participate in a code sprint for making the PHPUnit TYPO3 extension better [...]

30 June 2014
The Driven Developer
5 June 2014
Why, What, and How: Testing in 2014

One of the most important tasks in software testing is to find the right scope for each test case. What can be covered with unit tests and when are system-level end-to-end tests useful? What are functional tests, integration tests, or edge-to-edge tests? How do you test non-functional aspects such as performance? And where do experiment-driven and test-driven development fit in? Attendees of this session will learn which aspects of an application should be tested and how to efficiently implement these tests so that they are easy to write and fast to execute while delivering highly reliable results.

3 June 2014
HHVM: The Alternative PHP Runtime

The PHP language is almost 20 years old, as is its reference implementation that can be downloaded from PHP.net. In the last decade, alternative runtimes for PHP came and went. The HipHop VM (HHVM) that is developed – and used in production – by Facebook, however, is probably not only here to stay but very likely going to influence the future of PHP considerably. High time to have an in-depth look at what HHVM is and how it works.

3 June 2014
PHPUnit Best Practices
3 June 2014

J and Beyond

Last week I attended the J and Beyond conference in Königstein im Taunus, Germany [...]

2 June 2014
PHPUnit Best Practices

While PHPUnit is not difficult to set up and writing tests with it is easy, you will get better results and save development time if you know the tips and tricks to leverage PHPUnit more effectively. This session, presented by the creator of PHPUnit, teaches best practices you can use to ensure that your unit testing effort is efficiently implemented.

31 May 2014
The Driven Developer

You can build your software right – with 100% code coverage and high internal quality – and still fail to build the right software, the one the customer wants. How can you test that you are building the right software, and the right way? Developers (should) love unit tests. Other project stakeholders love acceptance tests. But which of these tests should drive the development? This session elucidates what Acceptance Test-Driven Development (ATDD), Behavior-Driven Development (BDD), and Test-Driven Development (TDD) are about, what their strengths and weaknesses are, and how you can find the right test mix for your project.

31 May 2014
PHPUnit Best Practices
6 April 2014

Inspiring Conference

Last week I attended the Inspiring Conference, the leading event for all things TYPO3 FLOW and TYPO3 NEOS, in Kolbermoor, Germany [...]

31 March 2014

Disintegration Testing

Sebastian Bergmann uses NASA's Mars Climate Orbiter as a hook to discuss different scopes of testing [...]

20 March 2014

PHPUnit 4.0: Test Proxies

One of the highlights of PHPUnit 4.0 is the improved support for integration testing through test proxies [...]

12 March 2014

PHPUnit 4.0: Code Coverage Improvements

One of the highlights of PHPUnit 4.0 is an improvement of the @covers annotation and the addition of the @uses annotation for better code coverage analysis [...]

10 March 2014

FOSDEM

Last weekend I attended FOSDEM in Brussels, Belgium [...]

3 February 2014
Pride and Prejudice: Testing in the PHP World

Parts of the PHP community take pride in code that is of high quality and well tested. Outside of the PHP community the prejudice against the language and its ecosystem still prevails. Quality Assurance in general and Unit Testing in particular have come a long way since the inception of PHPUnit thirteen years ago: simple PHP programming has evolved into software engineering with PHP. Join Sebastian Bergmann, the creator of PHPUnit, as he shares his experience on how PHPUnit is used in different communities and projects, and what’s been learnt along the way.

2 February 2014
The PHP Tester's Toolbox
19 December 2013
Test{able|ing} Zend Framework 2 Applications

Zend Framework 2 is a popular framework for developing web applications and services in PHP. But just because you use an off-the-shelf framework as the foundation for your development effort does not mean that you do not need to think about the architecture, design, and testability of the software you're building anymore. This session, presented by the creator of PHPUnit, teaches best practices you can use to ensure that your Zend Framework 2 application is easy to test and explains how to test it with PHPUnit.

20 November 2013
Alternative PHP Runtimes
10 November 2013
Testing on the Edge

Beyond Unit Tests, Acceptance and Integration Tests are crucial. Implemented as End-to-End tests, however, they are cumbersome to write and slow to execute. Edge-to-Edge Tests are easier to write and maintain, faster to execute, and deliver more reliable results. The audience will learn how to effectively implement these tests with PHPUnit.

28 October 2013
More Tests or Better Code?
17 October 2013
More Tests or Better Code?

Once upon a time, in a kingdom far, far away there was a wizard. Each day the king laid out a new scenario in which foes of the realm would test his fortress' defenses. And every day the wizard would come up with new measures to keep the fortress safe. One day a knight appeared at the king's court. For each of the contraptions the wizard had implemented the knight made the case that it was superfluous because the scenario it was built to counter could be prevented. When a dragon named Legacy appeared and threatened the realm, the king turned to knight and wizard for counsel. In this Tech Talk, Sebastian Bergmann, creator of PHPUnit, will open his bag of tricks while Stefan Priebsch, a proven expert on software architecture and design, will talk about avoiding these tricks.

9 October 2013
Leveraging 12 Years of PHPUnit

This session covers how PHPUnit is used in different communities and projects, and what’s been learnt along the way, what’s new and state of the art in unit testing, and how PHPUnit is integrating state-of-the-art paradigms, how PHPUnit compares to other testing technologies and methodologies.

26 September 2013
Leveraging 12 Years of PHPUnit
26 September 2013
Agility and Quality

When you continuously develop new features and deploy new code to production frequently, quality must not be an afterthought. This keynote will elucidate how agility and quality are connected and what this should mean for the architecture of your software.

18 September 2013
Automated Deployment: From Jenkins to Production

All your tests are green and you are ready to deploy the latest version of your software into production. Again. If only you had an automated way of doing that to avoid the manual hassle! In this hands-on session you will learn how to make Jenkins and friends push your deployment into the next level, easily maintaining any set of servers.

17 September 2013
High Quality PHP: Past, Present and Future

Quality Assurance in general and Unit Testing in particular have come a long way since the inception of PHPUnit twelve years ago: simple PHP programming has evolved into software engineering with PHP. Join Sebastian Bergmann, the creator of PHPUnit, as he shares his experience on overcoming both the technological challenges of testing PHP code and common organizational issues when introducing software development teams to testing. He will reflect on the lessons learned in the first decade of PHPUnit and will give a look into the tool's future.

10 September 2013
Test{able|ing} Symfony2 Applications

Symfony2 is a popular framework for developing web applications in PHP. But just because you use an off-the-shelf framework as the foundation for your development effort does not mean that you do not need to think about the architecture, design, and testability of the software you're building anymore. This workshop, presented by the creator of PHPUnit, teaches best practices you can use to ensure that your Symfony2 application is easy to test and explains how to test it with PHPUnit.

6 September 2013
Test Proxies, oder: Wie aus Problemen Features werden

Integrationstests schließen die Lücke zwischen Unit Tests und Systemtests, indem sie auf die Schnittstellen zwischen Komponenten fokussieren und sicherstellen, dass ihr Zusammenspiel wie erwartet funktioniert. In diesem Vortrag machen Arne Blankerts und Sebastian Bergmann anschaulich, wie aus einem konkreten Problem bei der Arbeit an Integrationstests in einem Kundenprojekt das Feature "Test Proxies" für PHPUnit entstand. Sie diskutieren das Problem, stellen die Lösung vor, erklären die Implementierung von Mock-Objekten in PHPUnit und zeigen, wie das Feature umgesetzt wurde.

25 August 2013
Optimaler Einsatz von PHPUnit

Die Installation von PHPUnit ist nicht schwer und das Schreiben von Tests ist einfach. Sie können aber bessere Ergebnisse erzielen und Entwicklungszeit sparen, wenn Sie die Kniffe kennen, mit denen man PHPUnit effektiver einsetzen kann. In diesem Vortrag erklärt der Entwickler von PHPUnit die besten Praktiken, um Ihre Tests effizient zu implementieren.

26 June 2013
Agilität und Qualität: Zwei Seiten einer Medaille

Wenn man kontinuierlich neue Features entwickelt und neuen Code häufig live stellt, dann darf Qualität nicht nachträglich passieren. Dieser Vortrag erklärt, wie Agilität und Qualität in Einklang gebracht werden können und was dies für die Architektur Ihrer Software bedeutet.

14 June 2013
The Wrong End of the Stick

Unit Testing does not work for you? You are not alone. Every developer who starts with unit testing faces the same issues. Issues that will not go away by learning more about unit testing or PHPUnit. You are likely looking at the wrong end of the stick. You will learn how to get over the hump quickly when starting with PHPUnit.

3 June 2013
Agility and Quality
3 April 2013
Agility, Quality, Security
28 October 2012
Living with Legacy

It is a fact of life for every developer: you have to deal with code that has been written before your time, that does not follow state-of-the-art best practices, and that — worst of all — is not tested so you cannot safely change or extend it. In this session, the audience will witness the step-by-step refactoring of fictitious legacy code towards a state that is easy to comprehend, extend, test, and maintain.

23 October 2012
Alternative PHP Runtimes

When you say "PHP" you mean the programming language PHP. This implicitly refers to the PHP Interpreter that is developed by the PHP project and that can be downloaded from PHP.net. Aside from this reference implementation of PHP there are alternative runtime environments for PHP, such as Facebook's HipHop. This session presents an overview of these alternatives and provides an insight into their feasability for production use.

25 August 2012
Integrating PHP Projects with Jenkins

Today’s web applications require frequent updates, not just by adding or upgrading features, but by maintaining and improving the software’s existing code base as well. This tutorial teaches PHP developers how to use Jenkins, the popular continuous integration server, to monitor various aspects of software quality throughout a project’s lifecycle. Attendees of this tutorial will learn how to implement continuous integration to automate processes for building and deploying regular software releases. They will also learn how to use Jenkins to monitor and improve their applications through continuous inspection and static code analysis.

16 July 2012
Integrating PHP Projects with Jenkins
16 July 2012
The PHP Tester's Toolbox

Various testing tools exist to test the different aspects and layers of PHP applications. There is PHPUnit for Unit Testing (and Test-Driven Development), Behat for Acceptance Testing (and Behaviour-Driven Development), Selenium for System Testing, and a plethora of tools for testing non-functional aspects such as performance and security. This presentation provides an overview of the goals of each of these tools and shows the first steps to leveraging them in your daily routine.

2 March 2012
OSCON 2011
26 July 2011
Quality Assurance for TYPO3 Extensions
9 November 2010
ConFoo 2010
19 March 2010
php|tek 2009
23 May 2009