Tests unitaires

Page 1 sur 22Lecteur de document UniversityLib

Tests unitaires

Software Engineering · notes

Voir tous les documents en génie logiciel

Tests unitaires

Gr gory Bonnet, Yann Mathet, Bruno Zanuttini

Lundi 2 novembre 2015

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

1/22

Validation vs v rication

Validation :

(cid:73) sassurer quon a r alis le bon logiciel

(cid:73) respect du cahier des charges

(cid:73) tests de recette

(cid:73) d veloppeurs + utilisateurs

V rication :

(cid:73) sassurer quon a bien r alis le logiciel

(cid:73) absence de d fauts, de bugs

(cid:73) d veloppeurs

(cid:73) v rier une librairie crite par un tiers (p.ex. r cup r e sur le Web)

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

2/22

Port e des tests

Tests unitaires :

(cid:73) portions de code ind pendamment des autres

(cid:73) fonctions, m thodes, classes. . .

Tests dint gration :

(cid:73) bonne int gration des composants entre eux

(cid:73) int gration avec le syst me, les librairies ext rieures. . .

(cid:73) respect des interfaces, protocoles. . .

Tests sp ciques :

(cid:73) mont e en charge

(cid:73) temps de r ponse. . .

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

3/22

Types de tests unitaires

Tests black box :

(cid:73) v rier le respect des sp cications

(cid:73) p.ex. : JavaDoc dune m thode

(cid:73) v rier absence de bugs

(cid:73) utiliser la m thode sur di rentes entr es

(cid:73) v rier sortie conforme aux sp cications

(cid:73) entr es choisies selon sp cications

Tests white box :

(cid:73) toujours v rier respect des sp cications et absence de bugs

(cid:73) concevoir entr es en fonction du code

(cid:73) p.ex. : entr es stimulant if et else

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

4/22

Publicité

R alisation de tests unitaires

Conception de tests unitaires

Tests al atoires

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

5/22

Que teste-t-on ?

(cid:73) Valeurs de retour correctes

(cid:73) Pas dexceptions ou derreurs sur des donn es attendues

(cid:73) Exceptions eectivement lev es dans les situations annonc es

(cid:73) Eets de bords attendus

(cid:73) Pas deets de bord inattendus

(cid:73) . . .

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

6/22

Quest-ce quun test unitaire ?

Composants :

(cid:73) stimulus : donn es sur lesquelles on teste

(cid:73) arguments (m thodes), v nements ( couteurs), etc.

(cid:73) comportement attendu : comportement selon sp cications, doc.

(cid:73) valeur de retour correcte (m thodes), eets de bord, etc.

(cid:73) programme qui eectue le test

R alisation :

(cid:73) lancement du code tester avec le stimulus

(cid:73) r cup ration du comportement (retour, eets de bord, erreurs. . .)

(cid:73) comparaison avec le comportement attendu

(cid:73) automatique et reproductible

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

7/22

Exemples

Tests unitaires sur un impl mentation de x 7 1/x :

(cid:73) stimulus 2, 5, valeur de retour attendue : 0, 4

(cid:73) stimulus 106, valeur de retour attendue : 106

(cid:73) stimulus 0, ArithmeticException attendue (selon sp c.)

Tests unitaires sur une m thode de tri de liste sur place :

(cid:73) stimulus = (4, 1, 5, 12, 31, 7), attendu : = (7, 1, 4, 5, 12, 31)

(cid:73) stimulus = (), attendu : = ()

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

8/22

Impl mentation avec assertions

print "Test de la fonction inverse... "

stimuli=(2.5, 106, . . . )

attendu=(0, 4, 106, . . . )

for i=0,1,. . .

stimulus=stimuli

resultat=appel(stimulus)

Publicité

assert(resultat==attendu )

x=0, exception=false

try appel(x)

catch (ArithmeticException e) exception=true

assert(exception)

print "OK"

Attention : En Java, passer loption -ea la JVM pour que les assertions

soient v ri es.

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

9/22

Jeu de tests

(cid:73) Ensemble de tests couvrant les sp cications

(cid:73) Programme mettant ces tests en Suvre

(cid:73) R sultat des tests v riable instantan ment

(cid:73) Tests reproductibles (graines pour al a)

(cid:73) R cup ration des erreurs : nombre, localisation. . .

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

10/22

Exemple

Tri de cha nes de caract res

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

11/22

R alisation de tests unitaires

Conception de tests unitaires

Tests al atoires

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

12/22

Tester dans toutes les situations possibles ?

Parfois possible :

(cid:73) alors, le faire

(cid:73) exemple : tester une fonction qui met une lettre en majuscule

G n ralement impossible :

(cid:73) fonction qui multiplie deux entiers : INT_MAX INT_MAX tests

(cid:73) tri dune liste : nombre potentiellement inni de tests

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

13/22

Comportement nominal

Stimuli standards

Exemples :

(cid:73) noms de famille :

Martin, Dupont, Smith, votre nom, LHermite, du Ch teau. . .

(cid:73) entiers : 1, 12, -27, 5 470, -712 456 054. . .

(cid:73) chiers PDF : chier dune page, image scann e, livre, manuel. . .

Gr gory Bonnet, Bruno Zanuttini

Publicité

G nie logiciel

14/22

Tests avec de grandes donn es

Un composant peut fonctionner

(cid:73) avec des donn es raisonnables

(cid:73) mais pas avec de trop grandes donn es

(cid:73) trop peu de m moire allou e, types inadapt s. . .

Exemples de grandes donn es :

(cid:73) entiers : INT_MAX, 100 . . . 00 (binaire). . .

(cid:73) listes : plusieurs dizaines de milliers d l ments

(cid:73) chiers PDF : plusieurs milliers de pages

(cid:73) adapter au contexte, au syst me, au langage. . .

(cid:73) cf. g n ration al atoire

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

15/22

Tests aux limites

Les bugs se cachent dans les coins :

(cid:73) conditions darr t mal g r es

(cid:73) confusions < et <=

(cid:73) mauvaises initialisations (1 au lieu de 0)

(cid:73) liste vide non pr vue. . .

Exemples de stimuli aux limites :

(cid:73) de fa on g n rale : bornes des domaines de d nition

(cid:73) entiers :

INT_MAX, INT_MIN, 0 + INT_MAX-1,INT_MIN+1,-1,1. . .

(cid:73) listes : vide, 1 l ment, 2 l ments, tr s grande. . .

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

16/22

Test des cas derreur

Exceptions :

(cid:73) lancement des exceptions annonc es

(cid:73) absence deets de bords ind sirables

(cid:73) chiers ferm s, donn es non modi es. . .

Cas sp ciques :

(cid:73) coupure communication pour composant lisant des donn es

(cid:73) chier inexistant

(cid:73) pas de droit de lecture. . .

(cid:73) v rier que les cons quences sont raisonnables (selon contexte)

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

17/22

R alisation de tests unitaires

Conception de tests unitaires

Tests al atoires

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

18/22

Publicité

Principes g n raux

Avantages :

(cid:73) utilisation de tr s nombreux stimuli

(cid:73) variabilit des stimuli

(cid:73) liminent certains biais (nom de famille Xiln Mbret dr K)

Attention :

(cid:73) doivent tre reproductibles (graines)

(cid:73) ne touchent pas les limites en g n ral

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

19/22

Tests avec oracles

Oracle = moyen de v rier le r sultat

Oracle de v rication :

(cid:73) v rier 1/x : v rier resultat x == 1

(cid:73) v rier tri : m mes l ments et dans lordre

Oracle de comparaison :

(cid:73) autre composant, s r et donnant le r sultat attendu

(cid:73) oracle = impl mentation moins ecace

(cid:73) oracle = programme commercial

(cid:73) oracle = impl mentation dans un autre langage. . .

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

20/22

G n ration al atoire biais e

d faut doracle :

(cid:73) particuli rement adapt aux pr dicats, mais pas seulement

(cid:73) g n rer donn es positives et v rier r sultat = true

(cid:73) g n rer donn es n gatives et v rier r sultat = false

Exemple pour une fonction testant quun entier est premier :

(cid:73) g n rer x , y al atoirement, poser z = xy

(cid:73) v rier fonction(z)==false

Exemple pour une fonction testant si un l ment est dans une liste :

(cid:73) poser = (x )

(cid:73) ajouter des l ments al atoirement

(cid:73) v rier fonction(, x )==true

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

21/22

Exemples

Tri de cha nes de caract res

Gr gory Bonnet, Bruno Zanuttini

G nie logiciel

22/22