d5:a02

D5-A02 : Les tests unitaires

Durée estimée : 4 heures

Important: Travail validé par la présentation de sa validation(au moins 1 test) à la classe le vendredi 26/09 à 11h

Un test automatisé est un programme qui se découpe en trois phases dites AAA pour Arrange, Act, Assert :

  1. Arrange : La mise en place de l’environnement : création et initialisation des objets nécessaires à l’exécution du test.
  2. Act : Le test proprement dit.
  3. Assert : La vérification des résultats obtenus par le test.

Le sous-système (l’ensemble des objets) éprouvé par le test est parfois appelé SUT (System Under Test).

  • Comprendre la différence entre tests unitaires, d’intégration, fonctionnels et de performance.
  • Savoir écrire et exécuter des tests avec un framework (en Java avec JUnit / en PHP avec PHPUnit).
  • Prendre conscience de l’importance de l’automatisation et des bonnes pratiques de validation.

Vous travaillez pour une startup qui développe une application de gestion de bibliothèque. L’application doit permettre :

  • La gestion d’un catalogue de livres.
  • L’ajout et la suppression d’utilisateurs.
  • La gestion des emprunts (règle : un utilisateur ne peut pas emprunter plus de 3 livres).

L’application a un fonctionnement actuel minimal et nous allons nous concentrer sur la gestion des livres.

Objectif : améliorer la qualité et la sécurité des données via les tests unitaires, d’intégration et fonctionnels.

Vous allez développer et tester progressivement ce projet.

  • récupérer le projet sur gitea

Attention: Dans Netbeans :

  1. créer votre branche -votre prénom- et ne travailler que sur votre branche
  2. commiter avec un commentaire précis et pusher sur votre branche personnelle uniquement

Travail à faire1

  1. Étudier la classe Livre et la classe de tests unitaires correspondante (LivreTest)
  2. Identifier les 3 parties AAA de chaque test
  3. Que vérifient les tests ?
  4. Ajouter un message clair en cas d'erreur sur chaque test
  5. Qu’est-ce qui n’est pas testé ?
  6. Quels risques pour la sécurité si ces vérifications manquent ?

Vous allez mettre en place de nouveaux tests pour assurer :

  • la validation des champs (titre, auteur, ISBN),
  • la robustesse face aux entrées malveillantes (XSS, caractères interdits),
  • l’intégrité globale des données

Travail à faire2

Chaque étudiant va implémenter une nouvelle règle de validation :

  1. (Emile)-ISBN : doit avoir 13 chiffres (pas de lettres, pas de caractères spéciaux), exemple invalide : “1234ABCD567”.
  2. (Salomé)-Titre : ne doit pas contenir <script> (chevron) (risque XSS).
  3. (Medhi)-Auteur : non vide, pas de caractères spéciaux suspects, de chiffres, espaces autorisés (nom prénom), - autorisé (noms composés)
  4. (Morgann)-Longueur maximale du titre (ex. 200 caractères - l'objectif cybersécurité étant d'éviter surcharge et attaques par dépassement de mémoire (DoS)).
  5. (Steve)-Le titre doit être non vide et contenir au moins 2 caractères alphabétiques (Objectif : éviter les titres vides, réduits à un seul caractère, ou remplis uniquement de chiffres/symboles)

Consignes : Pour chaque règle :

  1. Compléter la méthode prévue dans la classe de contrôle LivreValide
  2. Créer la méthode correspondante dans la classe LivreValideTest avec ses tests unitaire JUnit.
  • d5/a02.txt
  • Dernière modification : 2025/10/03 11:40
  • de dthevenot