Talk présenté à BDX.IO
Alice rêve de tests à ajouter dans son application quand elle aperçoit le Lapin blanc soucieux de qualité. Partie à sa poursuite, elle se trouve propulsée dans un monde ressemblant étrangement à son code, et commence à faire apparaître de nombreux tests unitaires. Pourtant, le Lapin blanc est encore insatisfait ; lesdits tests se rebellent, deviennent incontrôlables et ne veulent plus vérifier ce qu'elle veut. Comment Alice va-t-elle réussir à reprendre la main sur les tests et les faire fonctionner correctement ?
À travers les aventures d'Alice, je vais vous présenter les pièges courants du testing qui découragent souvent les débutants, mais également les bonnes pratiques et des outils pour obtenir des tests fonctionnels et efficaces.
7. Procédure permettant de vérifier le bon fonctionnement d'une
partie précise d'un logiciel ou d'une portion d'un programme
(appelée « unité » ou « module »)
Source : Wikipédia
12. Calendrier
● Ajout d'évènements
● Pas de chevauchement entre les évènements
● Pas d'ajout d'évènement dans le passé
● Affichage des évènements
● Seulement ceux à venir
● Selon une culture donnée
58. Récapitulatif des Pièges courants
● Tests morts
● Tests liés à l'implémentation
● Trop de vérifications dans un seul test
● Logique dans les tests
● Abus du setup/teardown et des fixtures
● Utiliser du code de production pour construire un test
● Non-consistance (DateTime.Now, ordre des tests, random)
● Granularité > classe (couplage avec un tiers)
● Mélange entre Mock et Stub
● Plusieurs mocks dans un seul test
73. Lisibilité
● Un test ne teste qu'une chose
● Les asserts sont séparés des actions (ie sur différentes lignes)
● Des valeurs simples sont utilisées pour vérifier les comportements
● ...
74. maintenabilité
● Les tests sont isolés les uns des autres et sont répétables
● Tester des méthodes privées ou protected ne doit pas être une norme
● Ne pas avoir plus d'un mock par test
● …
75. fiabilité
● Les tests unitaires sont séparés des tests d'intégration
● Utiliser que des valeurs fixes (éviter DateTime.Now par exemple)
● Les tests ne vérifient pas des valeurs qui sont créées dynamiquement
(possibilité de reproduire du code de production dans le test)
● ...
80. Bibliographie
The Art of Unit Testing – Roy Osherove, http://artofunittesting.com/
TDD By Example – Kent Beck
Mocks & Stubs
Mocks Aren't Stubs – Martin Fowler,
http://martinfowler.com/articles/mocksArentStubs.html
Understanding Mock Objects – Roy Osherove,
http://osherove.com/videos/2009/8/25/tdd-understanding-mock-objects.html
Mutation Testing
NinjaTurtles : http://www.mutation-testing.net/
Pitest : http://pitest.org/