SlideShare una empresa de Scribd logo
1 de 83
Descargar para leer sin conexión
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 
(appelée « unité » ou « module ») 
Source : Wikipédia
À 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é 
● Affichage des évènements 
● Seulement ceux à venir 
● Selon une culture donnée
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 données)
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 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
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 valeurs simples sont utilisées pour vérifier les comportements 
● ...
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 
● …
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) 
● ...
Sinon...
Coupez-leur 
la tête !
Frameworks et outils 
● Nunit, Xunit 
● Moq, RhinoMocks 
● NFluent 
● NinjaTurtles, OpenMutate 
● ContinuousTest / MightyMoose, Giles 
● Opencover 
● Junit 
● EasyMock, Mockito, JMock 
● AssertJ 
● Pitest 
● Infinitest 
● Cobertura
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/
Merci
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests

Más contenido relacionado

La actualidad más candente

Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web modernehalleck45
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application javaAntoine Rey
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techMarine Karam
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringPascal Laurin
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 
XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...
XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...
XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...Publicis Sapient Engineering
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésDjamel Zouaoui
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel Esaie88
 
Commencer avec le tdd
Commencer avec le tddCommencer avec le tdd
Commencer avec le tddEric Hogue
 

La actualidad más candente (16)

Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
 
Les tests en PHP
Les tests en PHPLes tests en PHP
Les tests en PHP
 
Présentation banc_ test
Présentation banc_ testPrésentation banc_ test
Présentation banc_ test
 
Tester unitairement une application java
Tester unitairement une application javaTester unitairement une application java
Tester unitairement une application java
 
Mockito Chti JUG
Mockito Chti JUGMockito Chti JUG
Mockito Chti JUG
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Clean code
Clean code Clean code
Clean code
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...
XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...
XebiCon'17 : Mutation testing, ou évaluer l’efficacité de vos tests ! - Sar...
 
Les tests-unitaires-en-java
Les tests-unitaires-en-javaLes tests-unitaires-en-java
Les tests-unitaires-en-java
 
Présentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisésPrésentation Alt.net - Tests unitaires automatisés
Présentation Alt.net - Tests unitaires automatisés
 
Exposée: Processus de test logiciel
Exposée:  Processus de test logiciel Exposée:  Processus de test logiciel
Exposée: Processus de test logiciel
 
Commencer avec le tdd
Commencer avec le tddCommencer avec le tdd
Commencer avec le tdd
 
Introduction a Java
Introduction a JavaIntroduction a Java
Introduction a Java
 

Destacado

Faire la conception en équipe sans architecte, non mais allô quoi ?
Faire la conception en équipe sans architecte, non mais allô quoi ?Faire la conception en équipe sans architecte, non mais allô quoi ?
Faire la conception en équipe sans architecte, non mais allô quoi ?Ly-Jia Goldstein
 
Testing with Express, Mocha & Chai
Testing with Express, Mocha & ChaiTesting with Express, Mocha & Chai
Testing with Express, Mocha & ChaiJoerg Henning
 
Testing NodeJS with Mocha, Should, Sinon, and JSCoverage
Testing NodeJS with Mocha, Should, Sinon, and JSCoverageTesting NodeJS with Mocha, Should, Sinon, and JSCoverage
Testing NodeJS with Mocha, Should, Sinon, and JSCoveragemlilley
 
Testing Javascript Apps with Mocha and Chai
Testing Javascript Apps with Mocha and ChaiTesting Javascript Apps with Mocha and Chai
Testing Javascript Apps with Mocha and ChaiAndrew Winder
 
Test automation introduction training at Polteq
Test automation   introduction training at PolteqTest automation   introduction training at Polteq
Test automation introduction training at PolteqMartijn de Vrieze
 
Unit testing with mocha
Unit testing with mochaUnit testing with mocha
Unit testing with mochaRevath S Kumar
 
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)Anand Bagmar
 
Appium: Prime Cuts
Appium: Prime CutsAppium: Prime Cuts
Appium: Prime CutsSauce Labs
 
DevOps Pipelines and Metrics Driven Feedback Loops
DevOps Pipelines and Metrics Driven Feedback LoopsDevOps Pipelines and Metrics Driven Feedback Loops
DevOps Pipelines and Metrics Driven Feedback LoopsAndreas Grabner
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm
 
Mudularity and Unit Testing in TypeScript (for ng-bkk #3)
Mudularity and Unit Testing in TypeScript (for ng-bkk #3)Mudularity and Unit Testing in TypeScript (for ng-bkk #3)
Mudularity and Unit Testing in TypeScript (for ng-bkk #3)Suthep Sangvirotjanaphat
 
Documento slideshare
Documento slideshareDocumento slideshare
Documento slideshareNararodriguez
 

Destacado (20)

Faire la conception en équipe sans architecte, non mais allô quoi ?
Faire la conception en équipe sans architecte, non mais allô quoi ?Faire la conception en équipe sans architecte, non mais allô quoi ?
Faire la conception en équipe sans architecte, non mais allô quoi ?
 
Testing with Express, Mocha & Chai
Testing with Express, Mocha & ChaiTesting with Express, Mocha & Chai
Testing with Express, Mocha & Chai
 
Testing NodeJS with Mocha, Should, Sinon, and JSCoverage
Testing NodeJS with Mocha, Should, Sinon, and JSCoverageTesting NodeJS with Mocha, Should, Sinon, and JSCoverage
Testing NodeJS with Mocha, Should, Sinon, and JSCoverage
 
Testing Javascript Apps with Mocha and Chai
Testing Javascript Apps with Mocha and ChaiTesting Javascript Apps with Mocha and Chai
Testing Javascript Apps with Mocha and Chai
 
Test automation introduction training at Polteq
Test automation   introduction training at PolteqTest automation   introduction training at Polteq
Test automation introduction training at Polteq
 
Unit testing with mocha
Unit testing with mochaUnit testing with mocha
Unit testing with mocha
 
Unit Testing TypeScript
Unit Testing TypeScriptUnit Testing TypeScript
Unit Testing TypeScript
 
Agile scrum roles
Agile scrum rolesAgile scrum roles
Agile scrum roles
 
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
The What, Why and How of (Web) Analytics Testing (Web, IoT, Big Data)
 
Appium: Prime Cuts
Appium: Prime CutsAppium: Prime Cuts
Appium: Prime Cuts
 
DevOps Pipelines and Metrics Driven Feedback Loops
DevOps Pipelines and Metrics Driven Feedback LoopsDevOps Pipelines and Metrics Driven Feedback Loops
DevOps Pipelines and Metrics Driven Feedback Loops
 
Alphorm.com Formation TypeScript
Alphorm.com Formation TypeScriptAlphorm.com Formation TypeScript
Alphorm.com Formation TypeScript
 
Mudularity and Unit Testing in TypeScript (for ng-bkk #3)
Mudularity and Unit Testing in TypeScript (for ng-bkk #3)Mudularity and Unit Testing in TypeScript (for ng-bkk #3)
Mudularity and Unit Testing in TypeScript (for ng-bkk #3)
 
Funciones
FuncionesFunciones
Funciones
 
oee impact software - Cranswickk - Caso de éxito
oee impact software - Cranswickk - Caso de éxitooee impact software - Cranswickk - Caso de éxito
oee impact software - Cranswickk - Caso de éxito
 
Plaguicidas
Plaguicidas Plaguicidas
Plaguicidas
 
SEMANA SANTA 2013
SEMANA SANTA 2013SEMANA SANTA 2013
SEMANA SANTA 2013
 
Educación tecnológica1
Educación tecnológica1Educación tecnológica1
Educación tecnológica1
 
Documento slideshare
Documento slideshareDocumento slideshare
Documento slideshare
 
Ascension année b 2015
Ascension année b 2015Ascension année b 2015
Ascension année b 2015
 

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

Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...
Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...
Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...EspritAgile
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)French Scrum User Group
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2Christophe Rochefolle
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringMSDEVMTL
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
Benchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScriptBenchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScriptjwajsberg
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - IntroductionOlivier ETIENNE
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testablemartinsson
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileDenis Voituron
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxNicolas Fédou
 
Pourquoi mes tests automatisés sont durs à maintenir?
Pourquoi mes tests automatisés sont durs à maintenir?Pourquoi mes tests automatisés sont durs à maintenir?
Pourquoi mes tests automatisés sont durs à maintenir?Agile Montréal
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012guillaumeagilr
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1Christophe Rochefolle
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitairesPascal Laurin
 

Similar a Les Aventures d'Alice - la Révolte des Tests (20)

Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...
Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...
Les aventuriers des tests exploratoires : à la poursuite du bug perdu V. Théa...
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
TDD/BDD: ou comment j’ai appris à ne plus m’en faire avec les tests (et la doc)
 
Automatisation des tests - objectifs et concepts - partie 2
Automatisation des tests  - objectifs et concepts - partie 2Automatisation des tests  - objectifs et concepts - partie 2
Automatisation des tests - objectifs et concepts - partie 2
 
L'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoringL'amélioration des tests unitaires par le refactoring
L'amélioration des tests unitaires par le refactoring
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
Benchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScriptBenchmark et comparaison de performance en JavaScript
Benchmark et comparaison de performance en JavaScript
 
Integration continue - Introduction
Integration continue - IntroductionIntegration continue - Introduction
Integration continue - Introduction
 
Une architecture agile et testable
Une architecture agile et testableUne architecture agile et testable
Une architecture agile et testable
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet AgileLes cinq bonnes pratiques des Tests Unitaires dans un projet Agile
Les cinq bonnes pratiques des Tests Unitaires dans un projet Agile
 
Tour d'horizon des tests
Tour d'horizon des testsTour d'horizon des tests
Tour d'horizon des tests
 
Strategie de test à agile tour bordeaux
Strategie de test à agile tour bordeauxStrategie de test à agile tour bordeaux
Strategie de test à agile tour bordeaux
 
Pourquoi mes tests automatisés sont durs à maintenir?
Pourquoi mes tests automatisés sont durs à maintenir?Pourquoi mes tests automatisés sont durs à maintenir?
Pourquoi mes tests automatisés sont durs à maintenir?
 
Bbd dans le flow nov.2012
Bbd dans le flow nov.2012Bbd dans le flow nov.2012
Bbd dans le flow nov.2012
 
Automatisation des tests - objectifs et concepts - partie 1
Automatisation des tests  - objectifs et concepts - partie 1Automatisation des tests  - objectifs et concepts - partie 1
Automatisation des tests - objectifs et concepts - partie 1
 
7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires7 astuces pour améliorer vos tests unitaires
7 astuces pour améliorer vos tests unitaires
 
Université du soir - TDD
Université du soir - TDDUniversité du soir - TDD
Université du soir - TDD
 
Test logiciel
Test logicielTest logiciel
Test logiciel
 

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