background

Magento 2 Testing course

Increase your Magento 2 code quality by writing powerful tests

Increase your Magento 2 code quality by writing powerful tests

Whenever you have business critical code in a live environment, like with a webshop, it is vital to make sure that bugs don't end up in production. Even more important, you don't want bugs to occur twice. Testing is the key. However, to get started with testing, you will first of all need a bit guidance. Second, you also need to get used to the right flow. This training helps you to get into the habit of writing unit tests, integration tests and functional tests.

Jisse Reitsma

Your teacher Jisse Reitsma

Jisse Reitsma is the developer of 60+ Magento extensions and has given technical Magento trainings for years. Besides his ability to understand complex technology, he is skilled in making this knowledge understandable for everyone. With him, you can expect in-to-depth guidance plus lots of practical tips. Jisse is the mastermind of MageTestFest, Reacticon and MageUnconference and former Magento Master.

Pick your live training

Because everyone has different needs

Agency
In-House
per training per agency
  • Economical for groups of 5 and more
  • Freely debate company-specific topics
  • On-site at your company office
Agency
Online
per training per agency
  • Ideal for online or hybrid teams
  • Recordings available afterwards
  • Online via Zoom, Teams or similar

Magento training topics

Explore your topics of choice

  • Why testing?
  • Testing strategies
  • Testing tools
  • Test Driven Development (TDD)
  • TDD is dead
  • System Under Test (SUT)
  • Types of testing
  • Magento tests
  • Organizing your tests
  • Make it a habit
  • PHPUnit overview
  • PHPUnit installation
  • PHPUnit configuration file
  • PHPUnit bootstrap
  • Breaking changes in PHPUnit
  • PHPUnit 10 upgrade
  • Setup PHPUnit
  • Run PHPUnit with Docker
  • Create Run Configuration
  • Running tests from PhpStorm
  • Rerun automatically
  • Rerun failed tests
  • Debug tests with Xdebug
  • Structure of a unit test class
  • TDD example
  • Using dev/tests/unit/phpunit.xml.dist
  • Simple example unit test
  • Coding katas
  • Testing a Config-class
  • Mocking classes
  • Stubs vs mocks vs dummies
  • Using the ObjectManager in unit tests
  • Testing exceptions
  • Data providers in tests
  • setUp & tearDown
  • Adding messages to the output
  • Spying with PHPUnit
  • Marking tests
  • Yireo Test Generator
  • Mocking functions
  • Good practices for tests
  • Code coverage
  • Overview of Integration Tests
  • Setting up integration tests
  • Running Integration Tests
  • TESTS_CLEANUP
  • Resetting the Integration Tests environment
  • First integration test
  • Which ObjectManager?
  • Testing a Config-class
  • Mocking vs ObjectManager in integration tests
  • Magento annotations & attributes
  • Config fixtures
  • Data fixtures
  • Tips for integration tests
  • Yireo Test Generator
  • Running tests with Xdebug enabled
  • Performance overview
  • ReachDigital Integration Testing Framework
  • Add Redis server
  • 04-dummy-elasticsearch
  • MySQL tuning
  • Composer replacements
  • Yireo Integration Test Helper
  • Minimizing modules that are enabled
  • Parallel test runs
  • Using tmpfs to speed up Integration Tests
  • yireo/magento-integration-tests-docker-composer
  • Testing module behaviour
  • First test
  • Generating tests
  • Checking for configuration values
  • Testing console commands
  • Testing controllers
  • Testing the layout independently
  • Testing sessions
  • Testing entities
  • Testing a schema
  • Testing event observers
  • Testing Magewire components
  • Testing DI plugins
  • ObjectManager preference overrides
  • Yireo Integration Testing Helper
  • Could not connect to the Amqp Server
  • Base table or view not found
  • Cannot open file
  • Connection refused
  • The default website isn't defined. Set the website and try again
  • Unable to retrieve deployment version
  • Issue with ifconfig in XML layout
  • tasklist.exe not found
  • The value of autoloader is specified, but file doesn't exist
  • Cannot instantiate interface Magento\Framework\Config\CacheInterface
  • About code quality
  • Defensive programming
  • Object Calisthenics
  • SOLID
  • Law of Demeter
  • Other principles
  • Static code analysis
  • What is legacy code?
  • Refactoring with tests
  • Strangler fig pattern
  • Characterization tests
  • Overview of Functional Tests
  • Functional tests setup
  • Validate products
  • Customer VAT validation
  • API Functional Testing
  • Custom REST test
  • Custom GraphQL test
  • Magento Functional Testing Framework (MFTF)
  • Overview of static tests
  • Running tests on Magento core
  • PHP CodeSniffer (PHPCS)
  • Magento 2 Coding Standard
  • Running PHPStan in Magento
  • PHP linting
  • Varnish tests
  • Mutation testing
  • Infection
  • Automated testing overview
  • GitHub Actions
  • End-to-End testing
  • Cypress
  • Resources
This course has been updated for compatibility with Magento 2.4.7-p1

Watch a preview now

See for yourself

Testing strategies

Or browse through all lessons in our courseware portal

We are constantly updating our courseware, but the following is a real-life snapshot
Why testing?
Testing strategies free
Testing tools
Test Driven Development (TDD)
TDD is dead
System Under Test (SUT)
Types of testing
Magento tests
Organizing your tests
Make it a habit
PHPUnit overview
PHPUnit installation
PHPUnit configuration file
PHPUnit bootstrap
Breaking changes in PHPUnit
PHPUnit 10 upgrade
Setup PHPUnit
Run PHPUnit with Docker
Create Run Configuration
Running tests from PhpStorm
Rerun automatically
Rerun failed tests
Debug tests with Xdebug
Structure of a unit test class
TDD example
Using dev/tests/unit/phpunit.xml.dist
Simple example unit test
Coding katas
Testing a Config-class
Mocking classes
Stubs vs mocks vs dummies
Using the ObjectManager in unit tests
Testing exceptions
Data providers in tests
setUp & tearDown
Adding messages to the output
Spying with PHPUnit
Marking tests
Yireo Test Generator
Mocking functions
Good practices for tests
Code coverage
Overview of Integration Tests
Setting up integration tests
Running Integration Tests
TESTS_CLEANUP
Resetting the Integration Tests environment
First integration test
Which ObjectManager?
Testing a Config-class
Mocking vs ObjectManager in integration tests
Magento annotations & attributes
Config fixtures
Data fixtures
Tips for integration tests
Yireo Test Generator
Running tests with Xdebug enabled
Performance overview
ReachDigital Integration Testing Framework
Add Redis server
04-dummy-elasticsearch
MySQL tuning
Composer replacements
Yireo Integration Test Helper
Minimizing modules that are enabled
Parallel test runs
Using tmpfs to speed up Integration Tests
yireo/magento-integration-tests-docker-composer
Testing module behaviour
First test
Generating tests
Checking for configuration values
Testing console commands
Testing controllers
Testing the layout independently
Testing sessions
Testing entities
Testing a schema
Testing event observers
Testing Magewire components
Testing DI plugins
ObjectManager preference overrides
Yireo Integration Testing Helper
Could not connect to the Amqp Server
Base table or view not found
Cannot open file
Connection refused
The default website isn't defined. Set the website and try again
Unable to retrieve deployment version
Issue with ifconfig in XML layout
tasklist.exe not found
The value of autoloader is specified, but file doesn't exist
Cannot instantiate interface Magento\Framework\Config\CacheInterface
About code quality
Defensive programming
Object Calisthenics
SOLID
Law of Demeter
Other principles
Static code analysis
What is legacy code?
Refactoring with tests
Strangler fig pattern
Characterization tests
Overview of Functional Tests
Functional tests setup
Validate products
Customer VAT validation
API Functional Testing
Custom REST test
Custom GraphQL test
Magento Functional Testing Framework (MFTF)
Overview of static tests
Running tests on Magento core
PHP CodeSniffer (PHPCS)
Magento 2 Coding Standard
Running PHPStan in Magento
PHP linting
Varnish tests
Mutation testing
Infection
Automated testing overview
GitHub Actions
End-to-End testing
Cypress
Resources

Full access to all videos and other coursematerial is available for attendees of live trainings.

This course has been updated for compatibility with Magento 2.4.7-p1

Discover our Integration Testing Helper

If you are up for it, you can try out our Yireo_IntegrationTestHelper, which adds various tricks on top of Magento Integration Testing: Additional assertions, an OOP install-config-mysql.php file, CLI commands.

github.com/yireo/Yireo_IntegrationTestHelper

Target group

Target group

  • Magento backend developers
  • Magento lead developers
kevin-die-bie.jpg
As a newcomer to the Magento world, the Magento academy has given me a solid foundation for Magento 2. I benefit greatly from this in my daily work as a Frontend Developer. In addition, lunch was always well taken care of and you did not lack anything during the training sessions!
Kevin de Bie (MaxServ)
background

We gave you MageTestFest

In 2018, we organized MageTestFest for the first time - in Amersfoort, The Netherlands. Room to 180 developers, focused entirely on Magento testing, with big names like Sebastian Bergmann and Mathias Verraes. In 2019, we did it again - in Florence, Italy. And maybe, maybe, one day, we'll be back.

Requirements

Requirements

  • Magento 2 experience
  • Knowledge of Magento 2 OOP
  • Experience with PHP OOP

These are the options we give you

At your place or ours?

Everyone learns at her/his own pace. We provide both in-house training and public training throughout Europe - whatever suits your team best. When 3 or more developers are attending, a custom training is often more economical. Contact us for more details.

You'll get courseware

Every workshop is accompanied with official Yireo coursematerial. Attendees are sent a digital version of this material after the training. It contains slides, comments and references. Additionally, our GitHub repos contain numerous more code samples.

Online classrooms

Online trainings are also our training: Via Zoom or Google Hangout sessions, our teacher is able to connect with your team. The benefit here is that the team is able to connect from various places itself as well, timeframes are more flexible. Afterwards, a video recording will be shared with all attendees for reference.

ruben-zuidervaart.jpg
Even when you think you know a few things about Magento, Jisse still manages to tell you about useful details that you never thought about.
Ruben Zuidervaart (Epartment)

Customer quotes

Jisse gave a very interesting, practical and well-constructed story about the Magento 2 jungle Peter Keijsers (Experius)
Jisse gives cool training courses that you can put to good use in practice. Besides being informative, it is also fun to listen to. Roy van Os (Active Ants)
The training was great! We learned all the golden nuggets, presented clearly and accessible. Essential for anyone who works or will work with Magento! Rick Bouma (Epartment)
Read more quotes of our customers
background

Yireo could be the right partner for you

We have trained 5000+ developers in numerous disciplines since 2005

  • Professional training at affordable prices
  • Truely active with numerous open source projects in the community
  • Trainings, bootcamps, hackathons, events
  • Passionate, enthousiastic, knowledgable in the right combination

Some of the customers that we have trained in the past years

get-noticed.png
hostingxs.png
yourhosting.png
multisafepay.png
exxtra.png
lupa-studio.jpg
sition.png
youwe.png
indie-group.png
bitbull.png
vogels.png
abovo.png
See a more complete listing of our customers

Frequently Asked Questions

There is a minimum number of attendees listed. What does this mean?

When this course is organized in the form of a classroom-training, it is only held if there is a minimum number of attendees. This number is usually 4 but sometimes we bring this down to 2 or 3. This minimum number simply means that if a class is not "full", either you get a refund or your ticket is transferred to another date. With On-Demand courses (video courses), this number is not applicable.

Do you have any PPP discount available?

Yes, we do have a PPP (Purchasing Power Parity) discount available. Just enter `PPP` as a coupon code and the discount will be applied to your cart. We are using the Big Mac Index to recalculate prices. Note that - when ordering for a specific PPP rate - the country that you're entering in your billing address needs to match the exact country that you are visiting from (in other words: your IP needs to match the country you say you're from).