đŸ’» TP − DĂ©velopper des tests automatisĂ©s (dĂ©couverte)

1. Introduction

Dans ce TP nous allons dĂ©couvrir le test logiciel automatisĂ© Ă  l’aide d’un framework de test : JUnit 5. Une classe simple Ă  tester vous est fournie, et vous devrez implĂ©menter les scripts de test qui couvrent tous les scĂ©narios de test demandĂ©s.

Objectifs :

  • ImplĂ©menter des scĂ©narios de test avec JUnit 5,

  • (Optionnel) Proposer des scĂ©narios de test additionnels pertinents.

2. Classe Ă  tester

Vous devez tester une classe appelĂ©e BasicSortedList, qui est l’implĂ©mentation d’une interface Java appelĂ©e SortedList. L’interface SortedList est ici notre document de conception pour le logiciel. Une SortedList est spĂ©cifiĂ©e au comme Ă©tant une collection Java qui est toujours triĂ©e, et qui donc s’assure que tout Ă©lĂ©ment ajoutĂ© soit ajoutĂ© au bon emplacement de la liste.

Vous trouverez tout le code Java dans un projet disponible dans un projet Gitlab dédié.

Ce projet contient :

  • Une interface SortedList qui est la spĂ©cification de la classe qu’on souhaite tester,

  • Une classe BasicSortedList qui est la classe que nous souhaitons tester,

  • Une classe de test BasicSortedListTest qui implĂ©mente un unique scĂ©nario de test unitaire.

  • Un fichier de configuration Maven pom.xml qui inclut la dĂ©pendance requise Ă  JUnit 5.

3. Préparation

Avec git clone, rĂ©cupĂ©rez le projet depuis le dĂ©pĂŽt git donnĂ© plus haut .

4. Exercices

4.1. Question 1 — exĂ©cuter un premier scĂ©nario de test

  1. Soit le scénario de test S1 suivant :

    • DonnĂ©es d’entrĂ©es :

      • this : SortedList = [1,2,4]

      • e : Integer = 3

    • ProcĂ©dure d’exĂ©cution : this.add(e)

    • Oracle : this == [1,2,3,4]

    Une implĂ©mentation de ce scĂ©nario de test vous est fournie. Compilez le code et exĂ©cutez les tests Ă  l’aide de la commande mvn test, et observez le rĂ©sultat. Normalement l’exĂ©cution est une rĂ©ussite.

  2. Dans le fichier BasicSortedList.java, allez dans la mĂ©thode add et commentez la ligne qui effectue le sort. ExĂ©cutez Ă  nouveau votre scĂ©nario de test : normalement l’exĂ©cution est dĂ©sormais un Ă©chec. Cela signifie que le scĂ©nario arrive avec succĂšs Ă  dĂ©celer une dĂ©faillance, dĂ©clenchĂ©e par le dĂ©faut que vous venez d’introduire !

4.2. Question 2 — autres scĂ©narios de test

ImplĂ©mentez les scĂ©narios de test suivants. N’oubliez pas de les exĂ©cuter !

4.2.1. Méthode add

  • S2

    • DonnĂ©es d’entrĂ©es :

      • this : SortedList = []

      • e : Integer = null

    • ProcĂ©dure d’exĂ©cution : this.add(e)

    • Oracle : une IllegalArgumentException est envoyĂ©e — attention cet oracle nĂ©cessite l’assertion assertThrows

  • S3

    • DonnĂ©es d’entrĂ©es :

      • this : SortedList = [0,8,32]

      • e : Integer = -1

    • ProcĂ©dure d’exĂ©cution : this.add(e)

    • Oracle : this == [-1,0,8,32]

4.2.2. Méthode isEmpty

  • S4

    • DonnĂ©es d’entrĂ©es :

      • this : SortedList = []

    • ProcĂ©dure d’exĂ©cution : this.isEmpty()

    • Oracle : result == true

  • S5

    • DonnĂ©es d’entrĂ©es :

      • this : SortedList = [4,6,9]

    • ProcĂ©dure d’exĂ©cution : this.isEmpty()

    • Oracle : result == false

4.2.3. Méthode clear

  • S6

    • DonnĂ©es d’entrĂ©es :

      • this : SortedList = [3,45,23,9]

    • ProcĂ©dure d’exĂ©cution : this.clear()

    • Oracle : this == []

4.3. Optionnel — dĂ©finition de nouveaux scĂ©narios de test

Proposez et implémentez vos propres scénarios de test pour les opérations remove et contains.