Doublures de tests


Le pouvoir du Doppelgänger


Franck Arrecot & Kevin Ottens

Bazar du Libre 2015

knarf

UPS ~ Zanshin ~ KDAB

ervin

KDE ~ PhD ~ UPS ~ KDAB

TDD !!!

Doublures de tests

Pour les tests unitaires automatisés, il peut être nécessaire d’utiliser des objets ou des procédures qui ressemblent et se comportent comme leurs équivalents en production, mais sont en fait des versions simplifiées qui réduisent la complexité et facilitent le test.

(Wikipedia)

continuum

Doppelgängers?

Dans la fiction et le folklore, un doppelgänger est le double d’une personne vivante, parfois représenté comme un phénomène paranormal […]

(Wikipedia)

Dummies

Les dummies sont utilisés quand un paramètre est nécessaire pour la méthode à tester mais sans avoir besoin d’utiliser le paramètre

Franck? Il est temps de montrer du code!

  • ✔ Peut être aussi simple que `nullptr`
  • ✔ Réduit la quantité de collaborateurs dans les tests
  • ✘ Ne force aucune vérification
  • ✘ Le code testé doit être préparé à recevoir des dummies

Stubs

Les stubs sont utilisés pour fournir au code testé une entrée indirecte

Franck? La scène est à toi!

  • ✔ Pousse à créer des tests simples et lisibles
  • ✔ Peut être créé avec un framework de mocking
  • ✘ Aucune idée du calcul du résultat
  • ✘ Peut pousser à écrire des classes supplémentaires

Mocks

Les mocks sont utilisés pour vérifier la sortie indirecte du code testé

Franck! Fonce!

  • ✔ Meilleure isolation des tests
  • ✔ Valide les protocoles entre objets
  • ✘ Code de test plus verbeux
  • ✘ Rend les refactoring plus difficiles

Fakes

Les fakes sont utilisés comme une implémentation plus simple d’un système (par exemple une base de données en mémoire)

Franck? Impressionne nous avec le dernier exemple!

  • ✔ Simplifie le code de test
  • ✔ Potentiellement permet d'accélérer le code de test
  • ✘ Beaucoup de code supplémentaire à maintenir
  • ✘ Dispose généralement de sa propre suite de tests

Pas de panacée??

Non…

Approche proposée

Utilisez les dummies…

Sinon:

préférez les stubs

Mockez temporairement

Les fakes sont un investissement

Merci!