Les Aventures d'Alice 
la Révolte des Tests 
Ly-Jia Goldstein – Arolla 
@Ly_Jia
Que dit un test unitaire en 
entrant dans un bar ?
Assert-moi un vert !
Assert-moi un vert !
Développeuse 
@Ly_Jia 
Paris 
Software Craftsmanship 
.NET/C# 
TDD 
BDD 
DDD 
http://lyjia.net 
Jeux vidéo 
XP MeetUp
Test unitaire ?
Procédure permettant de vérifier le bon fonctionnement d'une 
partie précise d'un logiciel ou d'une portion d'un programme...
À quoi sert un 
test unitaire ?
Non-régression
Non-régression 
Feedback
Non-régression 
Feedback 
Documentation
Calendrier 
● Ajout d'évènements 
● Pas de chevauchement entre les évènements 
● Pas d'ajout d'évènement dans le passé 
● ...
In the movies...
But in real life...
But in real life...
Let's check the code!!!
Tests morts
Tests morts
Coupez-leur 
la tête !
Tests morts
Tests liés à l'implémentation
Tests liés à l'implémentation
Tests liés à l'implémentation
Documentation
Logique
Logique 
Plusieurs assertions
Tests trop gros 
Logique 
Plusieurs assertions
Plus c'est petit, 
Plus c'est mignon
Plus c'est petit, 
Plus c'est mignon
Attention ! 
Parfois il est normal 
d'avoir plusieurs asserts 
dans un seul test !
Duplication de code !
Factorisation
SetUp / TearDown
Attention aux variables
Attention aux abus 
de fixture !
Builders
Builders
Builders
Utilisation du code de production
Tests inconsistants
Tests inconsistants 
● Random 
● DateTime.Now 
● Ordre des tests 
● Tests non unitaires (ex : dépendance 
à une base de do...
Granularité > Classe / Couplage
Mock
Mock
Mock
STUB
STUB
Mélanger Mock et Stub
Plusieurs Mocks 
dans un seul test
Récapitulatif des Pièges courants 
● Tests morts 
● Tests liés à l'implémentation 
● Trop de vérifications dans un seul te...
Lisibilité 
Maintenabilité 
Fiabilité
Fluent ASSERTIONS
Jouer les tests le 
plus souvent possible
Code de production 
et code de test sont 
amis pour la vie
Red 
Green 
Refactor
Red 
Green 
Refactor 
Refactor your tests
qui garde 
les gardes ?
Mutation testing
Mutation testing 
Rapport pitest 
Source : http://pitest.org/
Mutation testing
Mutation testing 
Attention aux 
ressources
Comment gérer 
le code de test 
legacy ?
Revue de 
code de test
Lisibilité 
● Un test ne teste qu'une chose 
● Les asserts sont séparés des actions (ie sur différentes lignes) 
● Des val...
maintenabilité 
● Les tests sont isolés les uns des autres et sont répétables 
● Tester des méthodes privées ou protected ...
fiabilité 
● Les tests unitaires sont séparés des tests d'intégration 
● Utiliser que des valeurs fixes (éviter DateTime.N...
Sinon...
Coupez-leur 
la tête !
Frameworks et outils 
● Nunit, Xunit 
● Moq, RhinoMocks 
● NFluent 
● NinjaTurtles, OpenMutate 
● ContinuousTest / MightyM...
Bibliographie 
The Art of Unit Testing – Roy Osherove, http://artofunittesting.com/ 
TDD By Example – Kent Beck 
Mocks & S...
Merci
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Prochain SlideShare
Chargement dans…5
×

Les Aventures d'Alice - la Révolte des Tests

664 vues

Publié le

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.

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
664
Sur SlideShare
0
Issues des intégrations
0
Intégrations
15
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Les Aventures d'Alice - la Révolte des Tests

  1. 1. Les Aventures d'Alice la Révolte des Tests Ly-Jia Goldstein – Arolla @Ly_Jia
  2. 2. Que dit un test unitaire en entrant dans un bar ?
  3. 3. Assert-moi un vert !
  4. 4. Assert-moi un vert !
  5. 5. Développeuse @Ly_Jia Paris Software Craftsmanship .NET/C# TDD BDD DDD http://lyjia.net Jeux vidéo XP MeetUp
  6. 6. Test unitaire ?
  7. 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
  8. 8. À quoi sert un test unitaire ?
  9. 9. Non-régression
  10. 10. Non-régression Feedback
  11. 11. Non-régression Feedback Documentation
  12. 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
  13. 13. In the movies...
  14. 14. But in real life...
  15. 15. But in real life...
  16. 16. Let's check the code!!!
  17. 17. Tests morts
  18. 18. Tests morts
  19. 19. Coupez-leur la tête !
  20. 20. Tests morts
  21. 21. Tests liés à l'implémentation
  22. 22. Tests liés à l'implémentation
  23. 23. Tests liés à l'implémentation
  24. 24. Documentation
  25. 25. Logique
  26. 26. Logique Plusieurs assertions
  27. 27. Tests trop gros Logique Plusieurs assertions
  28. 28. Plus c'est petit, Plus c'est mignon
  29. 29. Plus c'est petit, Plus c'est mignon
  30. 30. Attention ! Parfois il est normal d'avoir plusieurs asserts dans un seul test !
  31. 31. Duplication de code !
  32. 32. Factorisation
  33. 33. SetUp / TearDown
  34. 34. Attention aux variables
  35. 35. Attention aux abus de fixture !
  36. 36. Builders
  37. 37. Builders
  38. 38. Builders
  39. 39. Utilisation du code de production
  40. 40. Tests inconsistants
  41. 41. Tests inconsistants ● Random ● DateTime.Now ● Ordre des tests ● Tests non unitaires (ex : dépendance à une base de données)
  42. 42. Granularité > Classe / Couplage
  43. 43. Mock
  44. 44. Mock
  45. 45. Mock
  46. 46. STUB
  47. 47. STUB
  48. 48. Mélanger Mock et Stub
  49. 49. Plusieurs Mocks dans un seul test
  50. 50. 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
  51. 51. Lisibilité Maintenabilité Fiabilité
  52. 52. Fluent ASSERTIONS
  53. 53. Jouer les tests le plus souvent possible
  54. 54. Code de production et code de test sont amis pour la vie
  55. 55. Red Green Refactor
  56. 56. Red Green Refactor Refactor your tests
  57. 57. qui garde les gardes ?
  58. 58. Mutation testing
  59. 59. Mutation testing Rapport pitest Source : http://pitest.org/
  60. 60. Mutation testing
  61. 61. Mutation testing Attention aux ressources
  62. 62. Comment gérer le code de test legacy ?
  63. 63. Revue de code de test
  64. 64. 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 ● ...
  65. 65. 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 ● …
  66. 66. 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) ● ...
  67. 67. Sinon...
  68. 68. Coupez-leur la tête !
  69. 69. Frameworks et outils ● Nunit, Xunit ● Moq, RhinoMocks ● NFluent ● NinjaTurtles, OpenMutate ● ContinuousTest / MightyMoose, Giles ● Opencover ● Junit ● EasyMock, Mockito, JMock ● AssertJ ● Pitest ● Infinitest ● Cobertura
  70. 70. 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/
  71. 71. Merci

×