Les Tests Unitaires

Programming, Software Testing · course

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