Les tests unitaires
Bureau E204
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
PLAN DU COURS
– Introduction
– Tests Unitaires
– Utilisation de JUNIT
– Place à la Pratique
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
2
INTRODUCTION
• Il existe différents niveaux de test :
– Test unitaire
– Test d’intégration
– Test de charge
– Test fonctionnel
– Test sécurité
– ….
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
3
Test d’intégration
• L'intégration, c'est assembler plusieurs composants
logiciels élémentaires pour réaliser un composant de
plus haut niveau.
• Exemple: Une classe Client et une classe Produit pour
créer un module de commande sur un site marchant,
c'est de l'intégration !
• Un test d'intégration vise à s'assurer du bon
fonctionnement de la mise en œuvre conjointe de
plusieurs unités de programme, testés unitairement au
préalable.
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
4
Test de régression
• Les tests de régression sont les tests exécutés sur un
Publicité
programme préalablement testé mais qui a subit une
ou plusieurs modifications.
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
5
Test de montée en charge
• Test de montée en charge (Test de capacité ) : il s'agit
d'un test au cours duquel on va simuler un nombre
d'utilisateurs sans cesse croissant de manière à
déterminer quelle charge limite le système est capable
de supporter.
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
6
Test de sécurité
• Le test de sécurité est un type de test de logiciel qui
vise à découvrir les vulnérabilités du système et à
déterminer que ses données et ressources sont
protégées contre d'éventuels intrus.
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
7
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 (MyClass), on a une classe de test
(MyClassTest).
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
8
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
Publicité
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
9
TEST UNITAIRE : QUELQUES RÈGLES
• Ne teste pas d'enchainement d’actions
• 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
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
10
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)
- Le test-driven development (TDD) ou en français développement piloté par les tests est
une technique de développement de logiciel qui préconise d'écrire les tests unitaires avant
d'écrire le code source d'un logiciel.
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
11
TEST UNITAIRE : OUTIL DE TEST
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
12
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
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
13
TEST UNITAIRE : LES RÉSULTATS
• Un test unitaire peux renvoyer 3 résultats différents :
– Success : test réussi
Publicité
– Error : erreur inattendue a l’exécution
– Failure : au moins une assertion est fausse
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
14
TEST UNITAIRE : MOCK
• Quelques fois un test a besoin d’un composant donné pour
s’exécuter.
• Par exemple pour tester une fonctionnalité, nous avons
besoin du retour d’un Web Service, qui n’a toujours pas été
développé.
• 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.)
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
15
UTILISATION DE JUNIT
• Il n'y a pas de limite au nombre de tests au sein de
notre classe de test.
• On écrit 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).
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
16
UTILISATION DE JUNIT
• Au sein des tests, on utilise des assertions pour valider
ou non un test. Quelques assertions indispensable :
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
17
UTILISATION DE JUNIT
package tn.esprit.spring;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
Publicité
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class StockServiceImplTest {
@Autowired
IStockService stockService;
@Test
public void testAddStock() {
List<Stock> stocks = stockService.retrieveAllStocks();
int expected=stocks.size();
Stock s = new Stock();
s.setLibelleStock("stock test");
s.setQte(10);
s.setQteMin(100);
Stock savedStock= stockService.addStock(s);
assertEquals(expected+1, stockService.retrieveAllStocks().size());
assertNotNull(savedStock.getLibelleStock());
stockService.deleteStock(savedStock.getIdStock());
}
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
18
Travail à faire
• Optimiser le test d’ajout du stock en évitant la double
récupération de la liste du stock lors du test.
• Implémenter un test permettant de vérifier que la
fonctionnalité de suppression est bien opérationnelle.
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires
19
JUNIT : PLACE A LA PRATIQUE
Développement d’un Projet qui implémente JUNIT
Ajout de JUNIT dans un Projet déjà existant
QUIZ
© 2021-2022 – ESPRIT – Module Architecture ses SI II SPRING – Les tests unitaires