Speaker

Julien Braure

Julien Braure

Delia Technologies - CTO

Delia Technologies - CTO

Nantes, France

Actions

Julien est LeadTech, ayant plus de 15 ans d'experience, il evolue dans des stack tant en PHP que Java. Julien aime les choses simples et bien faites. Depuis 2015, il profite de la douceur de vivre nantaise en vélo biporteur.

Julien est LeadTech, ayant plus de 15 ans d'experience, il evolue dans des stack tant en PHP que Java. Julien aime les choses simples et bien faites. Depuis 2015, il profite de la douceur de vivre nantaise en vélo biporteur.

Area of Expertise

  • Information & Communications Technology

Topics

  • Kubernetes
  • java
  • Spring Boot
  • PHP
  • JUnit
  • mutation testing
  • Test Automation
  • API Testing
  • Unit testing
  • API Design
  • OpenAPI
  • REST API
  • REST
  • DevOps
  • IT Security
  • GitLab
  • CI/CD
  • CI/CD Pipelines
  • CI/CD Security
  • Automation & CI/CD
  • Supply chain and CI/CD security

Mutation Testing

Manual testing, on a fait mieux... Automated Unit Testing, un bon début. Integration Testing, un cran plus haut. Et après ?

Lors de nos procédures de tests, le code-coverage est (trop) souvent la metric reine mise en avant. Cependant, c'est plutôt le nombre d'assertions qui prime. Le code-coverage étant surtout le nombre de lignes ayant été exécutées durant les tests.

En poussant à l'extrême, on peut facilement imaginer un code 100% "couvert" par les tests, mais avec 0 assertion... Ces tests "blancs" passeront donc quelques soient les entrées et n'apporteront aucune valeur ajoutée.

Une autre hantise du testeur est de ne jamais faire confiance à un test que l'on a jamais vu "FAIL".

C'est là que le Mutation Testing entre en scène !

Des frameworks existent (Infection en PHP, PIT en Java... ) qui, à partir des 2 "artifacts" déjà présents dans votre projet, le code source et les tests existants, vont simplement :

1. Modifier votre code (1 modification = 1 mutation)
2. Faire tourner les tests
3. S'attendre à ce que vos tests "détectent" cette mutation en reportant au moins 1 test FAIL
4. Répéter avec 1 nouvelle mutation

Cette approche simple et peu coûteuse permet d'avoir un bon retour sur la qualité et la valeur réelle de vos tests. Le tout avec le plaisir infini de tuer des mutants ;-)

TestContainers : Arrêtez de vous "mocker" de vos dépendances

Les tests unitaires c'est bien, les tests d'integration c'est mieux :-)

Les tests d'intégrations nous permettent de vérifier l'interaction de notre système avec ses dépendances externes, comme par exemple une base de données.

Cependant il peut être difficile d'avoir ces dépendances accessibles.

Exemple dans le cas d'une base SQL, il existe des substituts "in-memory" comme H2. Mais ces systèmes ont leurs limites et spécificités et au final ne sont pas exactement identiques à la dépendance réelle.

Dans l'idéal, il serait intéressant de pouvoir démarrer des containers Docker à la demande, au cours de nos test, et contenant les dépendances de nos applications.

C'est maintenant possible avec TestContainers, voyons une demo avec SpringBoot, JUnit5 et MongoDB.

Julien Braure

Delia Technologies - CTO

Nantes, France

Actions

Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.

Jump to top