Vous êtes sur la page 1sur 4

Université

 d’Evry  Val  d’Essonne     M1  MIAGE  

Test de logiciel – TD 1

Pour la partie implantation de ce TD, créez un projet java TEST_TD1 dans Eclipse. Ensuite vous allez
créer un package relatif à chaque exercice, par exemple exercice1, puis un package pour les tests
unitaires si cela est nécessaire (par exemple exercice1.test).

Exercice 1
La classe PGCD doit fournir une opération permettant de calculer le pgcd (plus grand commun
diviseur) de deux entiers positifs à lʼaide de lʼalgorithme dʼEuclide qui calcule le pgcd de 2 nombres.
Dans le cas de données dʼentrée invalides, une exception de type RuntimeException sera renvoyée.
La signature de lʼopération calcul est :

public int calcul(int x, int y) throws RuntimeException

1. Déterminez un ensemble de données de test fonctionnel pour tester cette opération suivant une
approche Boite Noire. Utilisez pour cela un partitionnement des données de test en classes
dʼéquivalence et pensez aux tests aux limites.

2. Créez la classe PGCD contenant une opération calcul retournant toujours la valeur 1 et implantez
à lʼaide de JUnit les cas de tests fonctionnels que vous avez déterminés à la question 1. Cela
nécessite que vous déterminiez le résultat attendu de chacun de vos tests. Lancez vos tests.
Normalement, seuls quelques tests doivent être vérifiés.

3. Lʼalgorithme suivant est fourni pour lʼopération calcul. Complétez votre code avec cet algorithme.
Rejouez vos tests jusquʼà ce quʼils fonctionnent tous (ce qui peut entrainer de modifier la définition
(i.e. le corps) de lʼopération calcul.

4. A lʼaide du plugin Eclipse EclEmma, regardez le taux de couverture de votre code. Que pouvez-
vous en déduire ?

5. Dessinez le graphe de flot de contrôle de lʼalgorithme donné à la question 3 (ou le votre si vous
lʼavez modifié à la question 3). Pensez à numéroter les nœuds de votre graphe. Ensuite, pour
chaque donnée de test définie en Boite Noire à la question 1 :
a. Indiquez le chemin sensibilisé ;
b. Indiquez si cʼest le cas quel critère de couverture il assure (tous les nœuds, tous les arcs).

6. Enfin, calculez le nombre cyclomatique de votre graphe de flot de contrôle, indiquez les chemins
indépendants correspondants et pour chaque chemin, proposez une DT le sensibilisant. Si une
DT proposée ne correspond pas à un test déjà implanté dans votre suite de tests, ajouter ce test.
Université  d’Evry  Val  d’Essonne     M1  MIAGE  

Exercice 2
1. Dessinez le graphe de flot de contrôle correspondant à lʼalgorithme suivant.

2. Exhiber une ou plusieurs donnée(s) de test permettant de couvrir tous les nœuds du graphe.
Implantez ce test à lʼaide de JUnit et vérifier à lʼaide dʼEclEmma que la couverture de toutes les
instructions a bien été réalisée.

3. Faites de même pour le critère « tous les arcs ».

4. Calculez le nombre cyclomatique du graphe puis déterminez des données de tests pour chaque
chemin indépendant et implanter les tests unitaires JUnit correspondants.

5. Pour chaque variable du programme, à savoir tab, x, min, max et milieu, indiquez :
a. Les nœuds où ces variables sont définies ;
b. Les nœuds et/ou les arcs où elles sont c-utilisées et p-utilisées.

6. Pour chacune des variables tab, x, min, max et milieu, déterminez les chemins de définition –
usage (ou du-path).

7. Déterminez des chemins dʼexécution permettant de couvrir tous les chemins du-path.

Exercice 3
Nous considérons lʼopération cherche qui consiste à prendre en entrée un tableau dʼentiers tab et un
entier x et qui retourne true si x est un élément de tab et false sinon.

1. Indiquez des cas tests fonctionnels à effectuer pour vérifier le comportement de lʼopération
cherche.

2. Considérez le code suivant comme lʼimplantation de lʼopération cherche à tester. Vérifier que vos
tests unitaires fonctionnels passent avec cette implantation (au moyen de JUnit). Notez que ce
code contient une erreur, vos tests de la question 1 lʼont ils mise à jour ? Indiquez pourquoi.
Université  d’Evry  Val  d’Essonne     M1  MIAGE  

Corrigez le code

3. Dessinez le graphe de flot de contrôle correspondant.

4. Calculez le nombre cyclomatique du graphe puis, si vous le pouvez, déterminez des données de
tests pour chaque chemin indépendant et implanter les tests unitaires JUnit correspondants.

5. Pour chaque variable du programme, à savoir tab, x, found, nb_items et compteur, indiquez :
a. Les nœuds où ces variables sont définies ;
b. Les nœuds et/ou les arcs où elles sont c-utilisées et p-utilisées.

6. Pour chacune des variables tab, x, found, nb_items et compteur, déterminez les chemins de
définition – usage (ou du-path). Un chemin du-path pour une variable v est un chemin [n1, n2, ...,
nj, nk] tel que :
- v soit défini en n1 ;
- v soit c-utilisé en nk ou que lʼarc [nj, nk] p-utilise v ;
- [n1, n2,..., nj] soit sans cycle et sans redéfinition de v.

7- Déterminez des chemins dʼexécution permettant de couvrir tous les chemins du-path. Pouvez
vous trouver pour chaque chemin, une DT le sensibilisant ?
Université  d’Evry  Val  d’Essonne     M1  MIAGE  

Exercice 4
1. Dessinez le diagramme de flot de contrôle de lʼopération Trier suivant qui effectue un tri par tas
sur un tableau passé en paramètre

2. Calculez le nombre cyclomatique du graphe de contrôle et indiquez un ensemble de chemins


indépendants couvrant le graphe de contrôle.

3. Essayez de définir les données de test correspondantes à chaque chemin indépendant et réalisez
le test unitaire JUnit. Le pouvez-vous ?