SlideShare une entreprise Scribd logo
TEST UNITAIRE
ISEN Dev’
SOMMAIRE
•
•
•
•
•
•
•
•
•
•
•
•

Qu’est ce qu’un test ?
Définition
Quelques règles
Avantage et intérêt
Outil de test
Cas à tester
Les résultats
Test Driven Development
Mock
Convention nommage
Utilisation Junit
Conclusion

1
QU’EST CE QU’UN TEST ?
Un test est un ensemble de cas à tester
éventuellement accompagné d'une procédure
d'exécution. Il est lié à un objectif.
Source : IEE

2
QU’EST CE QU’UN TEST ?
Il existe différents niveaux de test :

Test unitaire
 Test d’intégration
 Test de charge
 Test fonctionnel
 Test sécurité
 ….


3
TEST UNITAIRE : DÉFINITION
Un test unitaire est une procédure permettant de
vérifier le bon fonctionnement d'une partie
précise d'un logiciel. Il s’agit d’un code.
En POO  on teste au niveau des classes
Pour chaque classe on a une classe de test.

4
TEST UNITAIRE : QUELQUES RÈGLES








Doit être isolé : il doit être indépendant
N’est pas un test de bout en bout : il agit que sur
une portion de code

Doit être déterministe : le résultat doit être le
même pour les mêmes entrées

Est le plus petit et simple possible
5
TEST UNITAIRE : QUELQUES RÈGLES










Ne teste pas d'enchainement d’action
Etre lancé le plus souvent possible : intégration
continue

Etre lancé le plus tôt possible : détection des bug
plus rapide
Couvrir le plus de code possible
Etre lancé a chaque modification

6
TEST UNITAIRE : AVANTAGE ET
INTÉRÊT

Garantie la non régression
 Détection de bug plus facile
 Aide a isoler les fonctions
 Aide a voir l’avancement d’un projet (TDD)


7
TEST UNITAIRE : OUTIL DE TEST

PHP

JS

SQL

JAVA

PHPUnit
SimpleTest1

JSUnit

SQLUnit

JUnit

1 : Fonctionnement similaire a JUnit

8
TEST UNITAIRE : CAS A TESTER
Lors de l’utilisation de test unitaire on se doit de
tester différents cas.
Cas en succès : fonctionnement normal
 Cas d’erreur : test sur la gestion d’erreur
 Cas aux limites : test de la robustesse


9
TEST UNITAIRE : LES RÉSULTATS
Un test unitaire peux renvoyer 4 résultats
différents :
Success : test réussi
 Error : erreur inattendue a l’exécution
 Failure : au moins une assertion est fausse
 Incomplete / skipped ( à éviter)


10
TEST UNITAIRE : TDD
On peut piloter un projet par les test (Test Driven
Development). On voit l’avancement du projet par
l’avancement des test validés.
Pour cela on réalise les test avant le code.
A ce moment le test échoue, on implémente le code
et pour qu’il se valide.
Rédaction des
tests 1 et 2

Code pour faire
valider le test 2

Code pour faire
valider le test 1

11
TEST UNITAIRE : MOCK
Quelques fois un test a besoin d’un composant pour
s’exécuter.
Par exemple pour tester le parseur XML il faut du
XML et dans l’application le XML provient
d’internet. Il est alors utile d’utiliser des bouchons
(MOCK) pour isoler le test.

De plus un bouchon permet de tester tout les cas
(valeur correcte, erroné etc.)
12
TEST UNITAIRE : CONVENTION NOMMAGE
Il est recommandé d’utiliser une même convention
de nommage pour tout les test unitaire. Par
exemple

test[nomMethode][cas][resultat/comportementAttendu]();
Préfixe
souvent imposé
13
TEST UNITAIRE : UTILISATION DE JUNIT
Il n'y a pas de limite au nombre de tests au sein de notre classe
de test.

On écris au moins un test par méthode de la classe testée.
Pour désigner une méthode comme un test, il suffit d’utiliser
l'annotation @Test (a partir de JUnit4).

14
TEST UNITAIRE : UTILISATION DE JUNIT
Au sein des tests on utilise des assertions pour valider ou non un
test. Quelques assertions indispensable :
Assertion

Action

assertEquals()

Vérifie l’egalité entre deux entités

assertNotEquals()

Vérifie l’inégalité entre deux entités

assertFalse()

Vérifie que la valeur fourni en
paramètre est fausse

assertTrue()

Vérifie que la valeur fourni en
paramètre est vrai

assertNull()

Vérifie que la valeur fourni en
paramètre est l’objet NULL

assertNotNull()

Vérifie que la valeur fourni en
paramètre n’est pas l’objet NULL

15
TEST UNITAIRE : UTILISATION DE JUNIT
Nous allons écrire un classe de test très simple.

1 : import pour les assertions
2 : import de Junit
7 : test 1 portant sur la somme
10 : assertion ok si les deux
parties sont égales
14 : test 2 portant sur le début
d’une chaine
16 : assertion ok la méthode
renvoie la valeur vrai
16
TEST UNITAIRE : CONCLUSION
Il est donc fortement conseillé d’utiliser les test unitaire
au sein de vos projets :
• Pour éviter les régressions
• Valider son code
• Voir l’avancement d’un projet

17
TEST UNITAIRE
Merci a tous !

Présentation réalisé pour ISEN Dev le 28/11/2013

18

Contenu connexe

Tendances

Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
Nathaniel Richand
 
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
Christophe Rochefolle
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
Heithem Abbes
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vieHarun Mouad
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
Abdoulaye Dieng
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
Oussama BEN KHIROUN
 
Tests & recette - Les fondamentaux
Tests & recette - Les fondamentauxTests & recette - Les fondamentaux
Tests & recette - Les fondamentaux
COMPETENSIS
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
Youness Boukouchi
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logicieldanaobrest
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
ENSET, Université Hassan II Casablanca
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
Antoine Rey
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
Aziz Darouichi
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
Cynapsys It Hotspot
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
Jean-Baptiste Vigneron
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
Amir Souissi
 
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
Christophe Rochefolle
 
Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...
Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...
Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...
Pierre
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
Microsoft
 
DEVOPS
DEVOPSDEVOPS
DEVOPS
TayssirLimem
 

Tendances (20)

Tests Logiciel
Tests LogicielTests Logiciel
Tests Logiciel
 
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
 
Cours java
Cours javaCours java
Cours java
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
2.2 cycles de vie
2.2 cycles de vie2.2 cycles de vie
2.2 cycles de vie
 
Introduction à React JS
Introduction à React JSIntroduction à React JS
Introduction à React JS
 
Design patterns - Exemples en Java
Design patterns - Exemples en JavaDesign patterns - Exemples en Java
Design patterns - Exemples en Java
 
Tests & recette - Les fondamentaux
Tests & recette - Les fondamentauxTests & recette - Les fondamentaux
Tests & recette - Les fondamentaux
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Qualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du LogicielQualification Et Cycle De Vie Du Logiciel
Qualification Et Cycle De Vie Du Logiciel
 
Support POO Java première partie
Support POO Java première partieSupport POO Java première partie
Support POO Java première partie
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Cours Visual Basic.NET
Cours Visual Basic.NETCours Visual Basic.NET
Cours Visual Basic.NET
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
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
 
Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...
Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...
Ingénierie des exigences - Principes de base de GenSpec (la théorie derrière ...
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
DEVOPS
DEVOPSDEVOPS
DEVOPS
 

Similaire à Test unitaire

Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
Idriss Neumann
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptx
ManalAg
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
Mohamed Akrouh
 
J Unit
J UnitJ Unit
Test unitaire
Test unitaireTest unitaire
Test unitaire
Hamza Ouni
 
Types de tests vs techniques de tests
Types de tests vs techniques de testsTypes de tests vs techniques de tests
Types de tests vs techniques de tests
Sabrine MASTOURA
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
Christophe Keromen
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
Marine Karam
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
Frederic Hardy
 
TDD avec ou sans mock
TDD avec ou sans mockTDD avec ou sans mock
TDD avec ou sans mock
Yannick Ameur
 
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
Denis Voituron
 
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLes Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
Ly-Jia Goldstein
 
13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel
lauraty3204
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
Cyrille Grandval
 
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
Pascal Laurin
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
Christophe Villeneuve
 
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
 

Similaire à Test unitaire (20)

Bbl sur les tests
Bbl sur les testsBbl sur les tests
Bbl sur les tests
 
testUnitaire (1).pptx
testUnitaire (1).pptxtestUnitaire (1).pptx
testUnitaire (1).pptx
 
Test unitaires
Test unitairesTest unitaires
Test unitaires
 
J Unit
J UnitJ Unit
J Unit
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
Types de tests vs techniques de tests
Types de tests vs techniques de testsTypes de tests vs techniques de tests
Types de tests vs techniques de tests
 
Flex Unit Testing
Flex Unit TestingFlex Unit Testing
Flex Unit Testing
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
 
Anatomie du test
Anatomie du testAnatomie du test
Anatomie du test
 
Les tests-unitaires-en-java
Les tests-unitaires-en-javaLes tests-unitaires-en-java
Les tests-unitaires-en-java
 
TDD avec ou sans mock
TDD avec ou sans mockTDD avec ou sans mock
TDD avec ou sans mock
 
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
 
Les Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des TestsLes Aventures d'Alice - la Révolte des Tests
Les Aventures d'Alice - la Révolte des Tests
 
13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel13-Cours de Géniel Logiciel
13-Cours de Géniel Logiciel
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
PHPTour Lyon 2014 - Conférence - Tests unitaires Je veux mes 80% de couvertur...
 
Test unitaire
Test unitaireTest unitaire
Test unitaire
 
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
 
Valider par des tests - Blend
Valider par des tests - BlendValider par des tests - Blend
Valider par des tests - Blend
 
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...
 

Test unitaire

  • 2. SOMMAIRE • • • • • • • • • • • • Qu’est ce qu’un test ? Définition Quelques règles Avantage et intérêt Outil de test Cas à tester Les résultats Test Driven Development Mock Convention nommage Utilisation Junit Conclusion 1
  • 3. QU’EST CE QU’UN TEST ? Un test est un ensemble de cas à tester éventuellement accompagné d'une procédure d'exécution. Il est lié à un objectif. Source : IEE 2
  • 4. QU’EST CE QU’UN TEST ? Il existe différents niveaux de test : Test unitaire  Test d’intégration  Test de charge  Test fonctionnel  Test sécurité  ….  3
  • 5. TEST UNITAIRE : DÉFINITION Un test unitaire est une procédure permettant de vérifier le bon fonctionnement d'une partie précise d'un logiciel. Il s’agit d’un code. En POO  on teste au niveau des classes Pour chaque classe on a une classe de test. 4
  • 6. TEST UNITAIRE : QUELQUES RÈGLES     Doit être isolé : il doit être indépendant N’est pas un test de bout en bout : il agit que sur une portion de code Doit être déterministe : le résultat doit être le même pour les mêmes entrées Est le plus petit et simple possible 5
  • 7. TEST UNITAIRE : QUELQUES RÈGLES      Ne teste pas d'enchainement d’action Etre lancé le plus souvent possible : intégration continue Etre lancé le plus tôt possible : détection des bug plus rapide Couvrir le plus de code possible Etre lancé a chaque modification 6
  • 8. TEST UNITAIRE : AVANTAGE ET INTÉRÊT Garantie la non régression  Détection de bug plus facile  Aide a isoler les fonctions  Aide a voir l’avancement d’un projet (TDD)  7
  • 9. TEST UNITAIRE : OUTIL DE TEST PHP JS SQL JAVA PHPUnit SimpleTest1 JSUnit SQLUnit JUnit 1 : Fonctionnement similaire a JUnit 8
  • 10. TEST UNITAIRE : CAS A TESTER Lors de l’utilisation de test unitaire on se doit de tester différents cas. Cas en succès : fonctionnement normal  Cas d’erreur : test sur la gestion d’erreur  Cas aux limites : test de la robustesse  9
  • 11. TEST UNITAIRE : LES RÉSULTATS Un test unitaire peux renvoyer 4 résultats différents : Success : test réussi  Error : erreur inattendue a l’exécution  Failure : au moins une assertion est fausse  Incomplete / skipped ( à éviter)  10
  • 12. TEST UNITAIRE : TDD On peut piloter un projet par les test (Test Driven Development). On voit l’avancement du projet par l’avancement des test validés. Pour cela on réalise les test avant le code. A ce moment le test échoue, on implémente le code et pour qu’il se valide. Rédaction des tests 1 et 2 Code pour faire valider le test 2 Code pour faire valider le test 1 11
  • 13. TEST UNITAIRE : MOCK Quelques fois un test a besoin d’un composant pour s’exécuter. Par exemple pour tester le parseur XML il faut du XML et dans l’application le XML provient d’internet. Il est alors utile d’utiliser des bouchons (MOCK) pour isoler le test. De plus un bouchon permet de tester tout les cas (valeur correcte, erroné etc.) 12
  • 14. TEST UNITAIRE : CONVENTION NOMMAGE Il est recommandé d’utiliser une même convention de nommage pour tout les test unitaire. Par exemple test[nomMethode][cas][resultat/comportementAttendu](); Préfixe souvent imposé 13
  • 15. TEST UNITAIRE : UTILISATION DE JUNIT Il n'y a pas de limite au nombre de tests au sein de notre classe de test. On écris au moins un test par méthode de la classe testée. Pour désigner une méthode comme un test, il suffit d’utiliser l'annotation @Test (a partir de JUnit4). 14
  • 16. TEST UNITAIRE : UTILISATION DE JUNIT Au sein des tests on utilise des assertions pour valider ou non un test. Quelques assertions indispensable : Assertion Action assertEquals() Vérifie l’egalité entre deux entités assertNotEquals() Vérifie l’inégalité entre deux entités assertFalse() Vérifie que la valeur fourni en paramètre est fausse assertTrue() Vérifie que la valeur fourni en paramètre est vrai assertNull() Vérifie que la valeur fourni en paramètre est l’objet NULL assertNotNull() Vérifie que la valeur fourni en paramètre n’est pas l’objet NULL 15
  • 17. TEST UNITAIRE : UTILISATION DE JUNIT Nous allons écrire un classe de test très simple. 1 : import pour les assertions 2 : import de Junit 7 : test 1 portant sur la somme 10 : assertion ok si les deux parties sont égales 14 : test 2 portant sur le début d’une chaine 16 : assertion ok la méthode renvoie la valeur vrai 16
  • 18. TEST UNITAIRE : CONCLUSION Il est donc fortement conseillé d’utiliser les test unitaire au sein de vos projets : • Pour éviter les régressions • Valider son code • Voir l’avancement d’un projet 17
  • 19. TEST UNITAIRE Merci a tous ! Présentation réalisé pour ISEN Dev le 28/11/2013 18