Effectuez des tests unitaires et d'intégration¶
Dans cet exercice, vous allez analyser et tester le code Java et Angular de l’application EduBibliothèque, à l’aide des outils de test suivants:
- Mockito et JUnit pour tester le code back-end en Java
- Jest pour les tests unitaires et d’intégration du front-end Angular
- Cypress pour les tests end-to-end (E2E) du front-end en Angular
Cet exercice est entièrement guidé.
Vous pouvez suivre les étapes ci-dessous.
Étape 1 – Analysez le code de test fourni dans le back-end
Étape 1 – Analysez le code de test fourni dans le back-end¶
Lisez attentivement les fichiers de test déjà fournis dans le back-end. Recherchez les mécanismes de test déjà mis en place pour tester certains services et controllers.
Prérequis
Avoir:
- relu l’ensemble du code concerné;
- étudié et exécuté les tests de service et de controller pour mieux comprendre leur fonctionnement.
Résultat attendu
- Vous avez identifié les tests déjà mis en place.
Recommandations
- Lisez le code comme un reviewer.
- Les tests déjà disponibles vous serviront d’exemples pour réaliser vos propres tests unitaires et d’intégration.
Étape 2 – Écrivez un plan de tests
Étape 2 – Écrivez un plan de tests¶
Créez un plan simple de tests à écrire: unitaires, intégration, etc. pour le back et le front.
Prérequis Avoir:
- compris les cas de tests existants;
- identifié les comportements attendus.
Résultat attendu
- Une liste de cas de tests à écrire (avec entrées/sorties attendues)
Recommandations
- Utilisez la pyramide des tests.
- Commencer avec les tests les plus simples.
Points de vigilance
- Ne testez pas les cas d’erreur.
- Ne vérifiez pas les effets de bord.
Étape 3 – Implémentez les tests unitaires et d’intégration du back-end
Étape 3 – Implémentez les tests unitaires et d’intégration du back-end¶
Écrivez les tests unitaires et d’intégration pour tester les nouvelles fonctionnalités du back-end.
Vous utiliserez les outils Mockito et JUnit.
Prérequis Avoir:
- fait la liste des tests unitaires et d’intégration à réaliser;
- bien lu les ressources concernant Mockito et JUnit.
Résultat attendu
- Tous les services sont testés avec des tests unitaires.
- Les nouveaux controllers sont testés avec des tests d’intégration.
- Le rapport de couverture de code du back-end est généré: le taux de couverture du back-end a atteint le seuil minimum de 80 %.
Recommandations
- Chaque test doit se focaliser sur un cas ou une fonctionnalité précis.
- Commencez par les tests unitaires sur les services:
- Identifiez les services les plus simples et ajoutez-y les cas de test.
- Ensuite, testez les services plus complexes.
- Pour chaque service testé, pensez à ajouter assez de tests pour couvrir le plus grand nombre de cas possibles.
- Passez aux tests d’intégration sur les controllers:
- Des cas de tests d’intégration sont proposés dans la classe
UserControllerTest.java.- Pour couvrir toute la chaîne de traitement (du controller jusqu’à la base de données), une base de données MySQL est utilisée sous forme de container Docker pour que les cas de test puissent interagir avec une source de données quasi-réelle.
- Vous pouvez vous inspirer de cette configuration pour concevoir vos tests d’intégration
- Identifiez les controllers les plus simples et commencez à les tester
- Ensuite, passez aux controllers plus complexes.
- Pour couvrir toute la chaîne de traitement (du controller jusqu’à la base de données), une base de données MySQL est utilisée sous forme de container Docker pour que les cas de test puissent interagir avec une source de données quasi-réelle.
- Ajoutez des commentaires dans les tests pour expliquer le test réalisé.
- Assurez-vous que le cas de test s’exécute avec succès avant de passer à un autre cas de test.
Ressources
- Les cours OpenClassrooms:
- Moyenne Avec Spring Framework et Spring Boot, développez des applications Java évolutives et performantes! Apprenez à utiliser les bons starters, à structurer votre projet avec les packages, le configurer, le déployer et le tester.
- Moyenne Assurez-vous que votre application Java fonctionne en réalisant des tests automatisés! Découvrez les principes des tests unitaires, d'intégration et de bout en bout et du test-driven design.
- Chapitre du cours "Testez votre code Java pour réaliser des applications de qualité": Utilisez les fonctions avancées de Mockito
- Mockito Series | Baeldung
- Getting Started with Mockito @Mock, @Spy, @Captor and @InjectMocks | Baeldung
Étape 4 – Implémentez les tests unitaires et d’intégration du front-end
Étape 4 – Implémentez les tests unitaires et d’intégration du front-end¶
Ecrivez les tests unitaires et d’intégration pour tester les composants et services du front-end.
Vous utiliserez l’outil Jest.
Prérequis
- Avoir lu la documentation sur Jest pour monter en compétences.
Résultat attendu
- Tous les services et les composants sont couverts par les tests.
- Tous les tests s’exécutent avec succès.
- Le rapport montre une couverture de test de 80 % minimum sur la partie front-end.
Recommandations
- Commencez toujours par les cas de tests les plus simples.
- Réalisez les tests des services.
Ressources
- Chapitre du cours "Testez vos applications Front End avec JavaScript": Réalisez vos premiers tests unitaires avec Jest
- Documentation officielle Jest: Getting Started (contenu rédigé en anglais)
- Unit Testing with Mocks and Spies
Étape 5 – Implémentez les tests E2E du front-end
Étape 5 – Implémentez les tests E2E du front-end¶
Écrivez les tests E2E pour tester les écrans du front-end.
Vous utiliserez l’outil Cypress.
Prérequis
- Avoir lu la documentation sur Cypress.
Résultat attendu
- Tous les écrans sont couverts par les tests E2E.
- Tous les tests E2E s’exécutent avec succès.
- Le rapport montre une couverture de test de 80 % minimum sur la partie E2E.
Recommandations
- Commencez les tests E2E par les formulaires les plus simples tels que la création de compte et la connexion.
- Évoluez ensuite vers les pages plus complexes.
- Mockez les appels d’API pour faire fonctionner les tests E2E
Points de vigilance
- Avant de passer à l’implémentation d’un nouveau test E2E, assurez-vous que le précédent fonctionne normalement.
Ressources
- Cours OpenClassrooms Automatisez des tests fonctionnels pour le web avec Cypress
- Autres ressources (en anglais):
- End-to-end testing with Cypress – Testing Angular
Vérifiez votre travail et faites le point avec votre mentor
Vérifiez votre travail et faites le point avec votre mentor¶
Pour vérifier que vous n’avez rien oublié dans la réalisation de votre exercice, téléchargez et complétez la fiche d’autoévaluation.
Parlez-en avec votre mentor durant votre session de bilan.