Le code produit pour une application est rarement celui qu'on avait prévu de prime abord. De plus, ce code va dans la plupart des cas évoluer au fil du temps et des changements du besoin.
Les tests unitaires permettent de s'assurer de la non régression du code sur les fonctionnalités existantes. Le TDD permet de se servir de cette possibilité pour en plus itérer sur de petites unités de code et pour découvrir son architecture au fil du développement.
Au travers d'un exemple en PHP, nous verrons d'abord le principe du TDD et ses avantages. Nous aborderons ensuite le principe de l'architecture hexagonale pour voir en quoi celle-ci permet au TDD de fonctionner à son plein potentiel. Enfin, nous reverrons les types de tests à notre disposition et nous verrons en quoi l'utilisation de ces différents types nous permet de développer le code le moins sujet à bugs possible.