Test unitaire

Post on 03-Jul-2015

1.026 views 1 download

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

TEST UNITAIRE

ISEN Dev’

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

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

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

8 1 : Fonctionnement similaire a JUnit

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.

11

Rédaction des tests 1 et 2

Code pour faire valider le test 1

Code pour faire valider le test 2

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

13

Préfixe

souvent imposé

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

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

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

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

TEST UNITAIRE

Merci a tous !

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

18