Aller au contenu
AFUP AFUP Day 2025 Baromètre Planète PHP PUFA
 

Augmentez votre couverture : supprimez des tests !

Description

Dans notre équipe nous avons des tests fonctionnels pour garantir le comportement de notre API à nos clients. Notre application est installée "On Premise" dans une typologie hétérogène de clients. Pour nous assurer du bon fonctionnement de notre API dans un large ensemble de données, nous nous sommes tournés vers le Property Based Testing (qui nous a déjà permis d'éviter certains bugs en production).

Après 3 ans, nous avons 700 tests (pour 7000 assertions) qui s'exécutent en 50 minutes. Mais l'ajout de fonctionnalités devient compliqué car les interactions entre celles-ci génèrent un nombre exponentiel de scénarios à tester.

Le Property Based Testing nous vient de la programmation fonctionnelle et nous offre une solution linéaire pour couvrir un nombre exponentiel de tests. Le concept de cette approche est d'utiliser la génération aléatoire de données à chaque exécution pour couvrir statistiquement tout un ensemble de scénarios. Le résultat est qu'au plus on joue nos tests, au plus la confiance dans le bon comportement de l'application augmente. Et lorsque l'outil trouve un cas d'erreur, on le fige grâce à un test de non régression. En plus de générer des données nous pouvons maintenant réutiliser les tests existants pour initialiser les nouveaux. Et donc couvrir statistiquement l'ensemble des interactions entre nos fonctionnalités.

Cette conférence est un retour d'expérience de l'application de cette technique qui nous a permis d'augmenter notre couverture en écrivant moins de tests, et donc diminuer le temps d'exécution des tests. On verra notamment comment écrire ce type de tests dans PHPUnit.

Conférence donnée lors du Forum PHP 2023, ayant eu lieu les 12 et 13 octobre 2023.

Informations complémentaires

Vidéo

Le speaker

Baptiste LANGLADE

Baptiste Langlade est un architecte logiciel (certifié symfony) passionné par indexer Internet, la programmation fonctionnelle, les graphes et les neurosciences.