Ceci est une ancienne révision du document !
Ressources
Rappel
Un test automatisé est un programme qui se découpe en trois phases dites AAA pour Arrange, Act, Assert :
- Arrange : La mise en place de l’environnement : création et initialisation des objets nécessaires à l’exécution du test.
- Act : Le test proprement dit.
- 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).
A02 : Les tests (unitaires et d'intégration)
Durée estimée : 4 heures
Objectif pédagogique
- 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.
Contexte fil rouge : Bibliothèque numérique
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 :
- créer votre branche -votre prénom- et ne travailler que sur votre branche
- commiter avec un commentaire précis sur votre branche uniquement
Travail à faire1
- Étudier la classe Livre et les tests unitaires créés
- Identifier les 3 parties AAA
- Que vérifient les tests ?
- Ajouter un message clair en cas d'erreur sur chaque test
- Qu’est-ce qui n’est pas testé ?
- Quels risques pour la sécurité si ces vérifications manquent ?
Evolution du contexte : nouveaux tests unitaires
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 (unicité dans la bibliothèque).
Travail à faire2
Chaque étudiant va implémenter une nouvelle règle de validation :
- ISBN : doit avoir 13 chiffres (pas de lettres, pas de caractères spéciaux), exemple invalide : “1234ABCD567”.
- Titre : ne doit pas contenir <script> (risque XSS).
- Auteur : non vide, pas de caractères spéciaux suspects, de chiffres.
- 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)).
Consignes : Chaque règle = une nouvelle méthode dans BookValidator + son test unitaire JUnit.
Important: Travail validé par la présentation de sa validation(au moins 1 test) à la classe le vendredi 26/09 à 11h