Skip to main contentSkip to footer

Testing Track

In 2025, we kicked off an internal Itenium learning series focused on testing: six sessions, each with a different angle, a combination of theoretical and hands-on, immediately useful in day-to-day project work. From test strategy and pyramid thinking, to unit testing and Testcontainers, to end-to-end testing with Playwright — slides, real examples, demos, and practical takeaways.

Good testing practices matters more in the AI era, not less: a failing test on the CI is backpressure an LLM can’t reason its way out of. AI makes tests cheap to write — a single “Do TDD” in an AGENTS.md and you have coverage. It also places the more ambitious setups (e2e, mutation, architecture, Pact) suddenly within reach. But cheap isn’t the same as valuable. Deciding what’s worth testing and at what level is still the human’s call.

About this event

01/09/2025
2025
3 x 2 hours, 3 x 1 hour
Antwerpsesteenweg 261
2800
Mechelen

Share this article on:

Kickoff

Support & share session, led by Alexander, the QA competence coach.

An opportunity for all consultants to share their war stories, what worked and what didn’t, ask questions about test strategies and implementation, discuss new trends and suggest possible test track topics to be covered by our competence teams.

What we covered

  • War stories on current or previous projects
  • Testing topics we should definitely tackle in the track
    • Lots of questions and interest for Testcontainers and Playwright!

Part 1: Testing Pyramid

Finding the right test mix: from unit to e2e by Alexander.

We started with the fundamentals: how do you build a healthy test strategy without over-investing in UI tests or skipping unit coverage? We explored how to balance unit, integration, and end-to-end tests, what the trade-offs are, and how to avoid the classic pitfalls. The outcome: clearer decisions on where to place which tests — and why.

What we covered

  • Test structure across layers
  • Best practices and trade-offs per test type
  • Common pitfalls (too much UI, too little unit, fragile suites)
  • Practical guidelines to evaluate your own project context

Part 2 – Unit Testing Prep

FIRST principles, pitfalls, mutation testing and dealing with legacy code.

This theoretical session was preparation for the hands-on workshop that followed. We covered the “TestDesiderata” through the FIRST acronym (Fast, Isolated, Repeatable, Self-Validating, Timely/Thorough), discussed the value of 100% test coverage and how mutation testing reveals more than just  a coverage percentage.

Using techniques from Michael Feathers we saw techniques to… work effectively with legacy code.

Bringing this all together we learned how to break the cycle of fear to enable safe refactoring.

What we covered

  • TestDesiderata & FIRST
  • Test coverage & mutation testing
  • Legacy code techniques
  • Breaking the cycle of fear

Part 3 – Unit Testing (.NET & Java)

TDD, maintainable tests, and Testcontainers by Bert & Michael.

In part 3 we went deep on unit testing and TDD through a practical exercise that started from existing code. Step by step, we built test coverage, added new features using a TDD approach, and used a hexagonal architecture setup to sharpen decisions around boundaries, dependency management, and testability.

We also discussed how to test realistic dependencies without making your suite slow or brittle — including when Testcontainers is a better fit than mocks.

What we covered

  • Unit testing best practices for .NET and Java
  • TDD in practice: iterate fast with tight feedback loops
  • Hexagonal architecture as a driver for testability
  • Realistic integration tests with Testcontainers

Part 4 – End-to-end Testing with Playwright

From cross-browser to CI and flaky tests

In the third part, we explored Playwright — Microsoft’s end-to-end testing framework. Through practical demos and exercises, we looked at how to write e2e tests that stay stable, maintainable, and CI-friendly. We also tackled common pain points like flaky tests and async behavior, and how to address them with better patterns and discipline.

What we covered

  • Cross-browser e2e testing with Playwright
  • Stability patterns and handling flaky tests
  • Async patterns and best practices
  • CI integration and practical workflows

Part 5 – Testcontainers

Testcontainers deep-dive by Simon.

In this part we went deeper into testcontainers, maybe the most interesting piece of testing infrastructure introduced in the last decade. How to write more realistic tests against an actual database and how to tackle the age-old testing issue: how to make sure the database is in exactly the shape your tests expect.

We went beyond the typical database testcontainers into how they can also be used in a Microservice landscape, using, for example, WireMock or rolling out your own fake services.

Why this track works

check_circle_outline

Better testing decisions

Choose the right tests for the right purpose — not just more tests.

check_circle_outline

Faster feedback loops

Keep builds and CI fast with smart test layering and stable patterns.

check_circle_outline

Confident delivery

Ship quicker without sacrificing quality, thanks to maintainable test practices.

Interested in running this Testing Track for your team?

Discover more events