From November 15th to 18th, MageTestFest took place in Amersfoort, near Amsterdam, organized by Yireo. It was a one-time event, divided into workshops, conference and contribution day, all around one single topic: Testing! And Magento, of course, as the “Mage” might have given away.

Since these are two of my favorite topics, I could not miss it, even less so when I was invited to speak there.

And what can I say, it was an awesome event. Jisse Reitsma and his team created a great atmosphere and carefully orchestrated workshops and talks to build upon each other for an introduction to automated testing.

The venue was an event location inside an old factory, near the center of Amersfoort. The workshops took place in smaller seminar rooms, the conference in the big hall, with cool decoration and really sharp video setup, perfect for the live coding sessions.

PHPUnit workshop

The attendees of the first-day workshop had the chance to learn unit testing with PHPUnit by Sebastian Bergmann himself, the creator of PHPUnit, starting with the very basics. I skipped that one, so I cannot tell much about it.

DDD workshop

The next day was an introduction to Domain Driven Design (DDD) by Mathias Verraes, who is not only a well known writer and trainer in the PHP community, but also co-organizer of the DDD Europe conference. This was the part I was looking forward to the most, although it’s only tangential to software testing (good domain models are better to test). It was a good, hands-on introduction to some technical DDD concepts, and provided valuable practical advice to improve our software design, even at small scale. “Valuable” being the keyword, as it was mostly focussed on introducing value objects

I had expected more of the communication part of DDD (ubiquitous language, event storming…), so I left a bit unsatisfied, but you can only do so much in one day and the content was adjusted to the audience. In any case the workshop motivated me to use value objects more.

Conference day

After an epic introduction (watch it on Vimeo!), the conference day was packed with talks. Everybody seemed to have a good time, except maybe the sponsors because almost every single person attended every talk, so there was not much action at the sponsor booths. That is something I have never experienced before, not even at MageTitans!

Sebastian Bergmann was the first speaker with an introduction to unit testing. He was followed by Vinai Kopp who showed how to get started with it in Magento, set up the testing framework and run tests within PhpStorm (Slides: Testing Magento 2).

After a coffee break, he continued with live coding a kata (basic movement patterns) for a Magento module (Slides: Magento 2 TDD Code Kata). It started with a Training Montage to get us into the right mood, then 45 minutes of intense coding. Regardless of the content, I always learn some new tricks in these sessions! Unfortunately, the talks and live codings were not recorded, but you can try the kata yourself at https://github.com/Vinai/module-example-giftitem.

Next up, another live coding session by Mathias Verraes, about refactoring legacy code with the help of unit tests, “Extract til you drop”. You’ll find an older version of it on YouTube (Video: Extract til you drop).

After a typical Dutch lunch, Tom Erskine of Magento presented their upcoming new acceptance test framework, the Magento Functional Testing Framework (MFTF). Besides improved performance and more readable tests, it’s all about extensibility now. Extensions should be able to modify the core test suite for any changes they make to core behavior, so that you can reuse the core test suite for your projects. The price you pay for that is that test are written in XML now, because XML is the best format for merging. The merged XML is then converted to PHP code for Codeception, which runs Selenium tests. While I still dislike the idea of writing tests in XML, I understand that for this use case there is no better option. Now it all depends on how simple they make it, so that extension vendors actually use it. The whole idea can only work if the majority of extension vendors go along. I’m sceptical but I really hope that it succeeds.

There should have been a session on Behavior Driven Development (BDD) with Behat by James Cowie, but unfortunately he could not make it. I would have loved to see it, but at least this way all other speakers got a bit more time, which was not wasted!

Next, MageTestFest organizer Jisse Reitsma gave a brief technology overview for testing JavaScript and used the opportunity to explicitly NOT announce a JS TestFest in 2018. It seems there is enough material for such an event, after this one was focussed on PHP, so let’s wait and see.

After all the feel-good sessions, my own talk (Slides: Dealing with Testing Fatigue) showed the dark side of testing, the problems that often make testing frustrating. And more importantly, ways to improve and escape these frustrations. Watch out, I plan to present it again at some conferences in 2018.

The last talk came from Igor Minyaylo of the Magento Community Engineering team (Slides: Unit Testing in MSI). He showed how unit tests and integration tests were used in the Multi Source Inventory project. This project brings a new feature to Magento, in cooperation with developers from the community, and following all current best practices for architecture in Magento 2. So if you want to see how the future of PHP code in Magento 2 is envisioned, watch this project: https://github.com/magento-engcom/msi/wiki

If there are any slides available online that I did not link to, please let me know!

Group photo with all attendees

Dinner / Afterparty

The “dinner” was a get-together with music (not too loud) and fingerfood (delicious) in the conference hall and finally more opportunities to talk to people. Good content aside, this is still one of the most important reasons to visit conferences.

Contribution day

Unfortunately, I had to leave early in the morning and could not attend the contribution day. But from what I’ve heard it was good, especially with the opportunity to try out the new MFTF which had been presented the day before.

You missed it?

That’s too bad, since it won’t happen again in the same format. Overall, MageTestFest was a great introduction to testing with Magento, a field where we all can still learn and improve, since it only came into a broad focus with the release of Magento 2.

If you or your company want to get started with testing Magento or learn more about it, consider a training. In addition to other Magento courses, integer_net offers Test Driven Development with Magento 2 trainings. Contact us to learn more!

Fabian Schmengler

Author: Fabian Schmengler

Fabian Schmengler is Magento developer and trainer at integer_net. His focus lies in backend development, conceptual design and test automation.

Fabian was repeatedly selected as a Magento Master in 2017 and 2018 based on his engagements, active participation on StackExchange and contributions to the Magento 2 core.

More Information · Twitter · GitHub