Test unitaire

19
TEST UNITAIRE ISEN Dev’

description

Il s'agit d'une initiation a l'utilisation des tests unitaires La formation présentera les éléments suivants : •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 Cette formation est proposée par ISEN Dev, un projet associatif étudiant de l'association Isen Engineering. Elle est réalisé en 2013 par SAEZ Jonathan

Transcript of Test unitaire

Page 1: Test unitaire

TEST UNITAIRE

ISEN Dev’

Page 2: Test unitaire

1

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

Page 3: Test unitaire

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.

2

Source : IEE

Page 4: Test unitaire

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

Page 5: Test unitaire

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

Page 6: Test unitaire

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

Page 7: Test unitaire

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

Page 8: Test unitaire

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

Page 9: Test unitaire

TEST UNITAIRE : OUTIL DE TEST

PHP JS SQL JAVA

PHPUnit

SimpleTest1

JSUnit SQLUnit JUnit

8 1 : Fonctionnement similaire a JUnit

Page 10: Test unitaire

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

Page 11: Test unitaire

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

Page 12: Test unitaire

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.

11

Rédaction des tests 1 et 2

Code pour faire valider le test 1

Code pour faire valider le test 2

Page 13: Test unitaire

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

Page 14: Test unitaire

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]();

13

Préfixe

souvent imposé

Page 15: Test unitaire

TEST UNITAIRE : UTILISATION DE JUNIT

14

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).

Page 16: Test unitaire

TEST UNITAIRE : UTILISATION DE JUNIT

15

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

Page 17: Test unitaire

TEST UNITAIRE : UTILISATION DE JUNIT

16

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

Page 18: Test unitaire

TEST UNITAIRE : CONCLUSION

17

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

Page 19: Test unitaire

TEST UNITAIRE

Merci a tous !

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

18