Testing - Tablify-Developement/Tablify-Web GitHub Wiki

Résumé coaching 8

PAR GROUPE
+ Le groupe présente bien, sur le wiki, la stratégie de testing mise en place : Quels tests (unitaire, intégration, API, end2end, …) et pourquoi?  
+ Tous les étudiants comprennent les différences entre les types de tests utilisés

+ Les étudiants ont mis en place au moins des tests unitaires
+ Les étudiants indiquent s'ils ont mis d'autres types de tests en place : tests d'intégration, d'API, End2End et montre des exempes
+ Sur le wiki, le groupe présente le choix de l'outil pour chaque type de tests
+ Le groupe indique ce qu'ils ont utilisé comme DB pour leurs tests (autre que production?)

INDIVIDUEL
+ Chaque étudiant a mis des tests unitaires en oeuvre pour son US personnelle (ou une autre au besoin, en concertation avec le coach).   
+ Chaque étudiant a écrit sur le wiki un bilan des tests qu'il a réalisés, sur base d'un rapport de testing et de son interprétation, avec le code coverage.
+ Chaque étudiant a réfléchi aux valeurs d'input à utiliser pour les tests, et présente cette analyse dans la page "Tests" du wiki, notamment en fournissant un tableau valeurs d'input/résultat attendu
+ Les tests sont intéressants, couvrent bien l'US et passent.  L'étudiant est capable de les expliquer. 

1. Présentation globale des tests

Notre stratégie de tests repose sur plusieurs niveaux de vérification :

Type de test Objectif Outil utilisé
Tests unitaires Valider les fonctions/services isolés Jest + Supertest
Tests d’intégration Vérifier les routes API avec la base de données Supertest + PostgreSQL dockerisé
Tests end-to-end Scénarios utilisateurs complets (non réalisés) Non mis en œuvre

Nous avons choisi Jest pour sa simplicité d’utilisation avec Node.js et son intégration avec TypeScript.


2. Tests effectués

2.1 Tests unitaires : Outils et Bilan

  • Framework : Jest
  • Fichiers testés : reservationController.ts, reservationModel.ts
  • Couverture estimée :
    • Statements : ~65 %
    • Functions : ~60 %
    • Branches : ~50 %

Méthodologie

  • Tests sur flux principaux et flux d’erreur
  • Vérification des valeurs limites et comportements en cas d’erreur
  • Validation des méthodes statiques et règles du modèle
Cas de test Input Output attendu
Création de réservation valide infos réservation valides 201 + objet réservation
Conflit réservation (même créneau) tableId déjà réservé 409 + message d’erreur
Mauvais restaurantId/tableId ID inexistant 404
Création sans données requises données manquantes 400

📎 *Lien vers les tests de reservation


2.2 Tests d’intégration et d’API

  • Outil : Supertest
  • Base de données : PostgreSQL locale dans un conteneur Docker (db de test dédiée)
  • Routes testées :
    • POST /api/reservations
    • GET /api/reservations/:id
    • DELETE /api/reservations/:id

2.3 Tests end-to-end

Pas réalisés pour ce projet, faute de temps et de besoin prioritaire.


3. Rapport de test et interprétation

  • Les tests couvrent les cas critiques de la gestion des réservations
  • Bon niveau de fiabilité sur la logique métier (modèle + contrôleur)
  • Quelques tests complémentaires à ajouter sur les erreurs serveur internes
  • La couverture reste à augmenter sur les contrôleurs secondaires (utilisateurs, horaires…)

4. Tests individuels

4.1 Noah Rogier

Cas de test Input Output attendu
Réservation d’une table libre données valides 201 + objet réservation
Conflit sur une table déjà réservée tableId déjà pris à la même heure 409 + message "Table déjà réservée"
Création avec mauvais ID de restaurant/table ID inexistant 404 + message "Not found"
Validation du schéma reservationModel création avec données invalides Erreur de validation mongoose
  • Nombre de tests réalisés : 10+
  • Fichiers concernés : reservationController.ts, reservationModel.ts
  • Tests réalisés dans backend/tests/reservation.test.ts

📎 Branche GitHub : testUnitaire_reservation

4.2 Étudiant 2

(à compléter)

4.3 Étudiant 3

(à compléter)

4.4 Étudiant 4

(à compléter)


✅ Le projet inclut des tests unitaires et d’API robustes couvrant les cas les plus courants
🧪 Des améliorations futures pourront porter sur les tests end-to-end et l’augmentation de la couverture sur les contrôleurs