Back to skills

Experience

Testing and code quality

I do not treat code quality as the last step before delivery. Tests, static analysis, and architectural checks give me fast feedback throughout development.

  • PHPUnit 13
  • PHPStan Max
  • PHPStan Strict Rules
  • ECS
  • Deptrac

Every kind of check has a different job.

Unit tests protect rules and edge cases in a small part of a system. Integration tests verify actual behaviour at the boundaries — for example, collaboration with a database, Redis, or external infrastructure.

PHPStan, coding standards, and Deptrac complement tests with things that are easy to miss in manual review: incorrect types, unintended dependencies, broken layer boundaries, or inconsistent style.

What each check covers

Multiple layers of protection for different kinds of errors.

  1. Unit tests

    Rules, decisions, and edge cases

    I use unit tests for small, fast, and well-isolated verification. They suit domain rules, value objects, data transformations, and scenarios that need confidence with every change.
  2. Integration tests

    Database, Redis, and infrastructure

    Where real collaboration between components matters, a mock alone is not enough. Integration tests verify contracts at application boundaries, including database operations, Redis locks, or the HTTP layer.
  3. Static analysis

    Types and errors before execution

    PHPStan at a high level and strict rules catch many problems before the application runs. This is especially valuable when changing interfaces, refactoring, or working with more complex data types.
  4. Architecture and style

    Code that remains readable and maintainable

    CodeSniffer, ECS, and Deptrac keep shared rules and dependencies between layers in check. Playwright E2E tests add the perspective of the user’s real browser journey.

Continuous feedback

I choose checks according to risk and the nature of a change.

Not every change needs the full set of tests. For a domain-rule change, I prioritise a unit test; for an infrastructure change, an integration test; and for a user flow, browser verification.

Static analysis, standards, and architectural rules run alongside tests — they do not replace them, but catch a different class of errors.

Application change

Fast development feedback

  1. Unit test for the relevant rule
  2. Integration test of a boundary
  3. PHPStan and coding standards
  4. Deptrac for architectural dependencies

User flow

Verifying external behaviour

  1. HTTP or feature test
  2. Checking the database result
  3. Playwright in the browser
  4. Automated CI check

Tools I use

Testing, analysis, and architectural checks

  • PHPUnit 13
  • PHPStan Max
  • PHPStan Strict Rules
  • PHP_CodeSniffer
  • Slevomat Coding Standard
  • ECS
  • Deptrac
  • Playwright

Want to evolve an existing application more safely?

I can help introduce meaningful tests and quality checks or review where important feedback is currently missing.

Request a call

I will call you on the next working day between 9:00 and 17:00.

You can also call me directly.

+420 605 181 728

Leave your phone number and send a callback request.

By sending, you agree to processing your data in order to handle your request.