Testing - SaigoNoo/GetTheBeer 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

[Méthodologie globale, liste des types de test (unitaire, intégration, ...), et pour chacun, quelle technologie de test a été utilisée + justification]

2. Tests effectués

2.1 Tests unitaires : Outils et Bilan

[A indiquer :

  • l'outil de test
  • le nombre de test,
  • le code coverage
  • la méthodologie pour le choix des valeurs d'input,
  • les tableaux input/output utilisés pour construire les tests
  • si possible la couverture des tests concernés.
  • Le lien vers le code des tests en question
  • si cela est relevant, l'étudiant qui a mis en place le système permettant d'effectuer les tests. ]

2.2 Tests d'intégration et Tests d'API : Outils et Bilan

Test sur la globalité total des endpoints API

image

2.3 Tests end-to-end : Bilan

[Idem]

3. Rapport de test et interprétation

4. Tests individuels (a priori pour US personnelles)

4.1 Etudiant 1

[Bilan personnel de la réalisation des tests, ce que l'étudiant a testé.]

[Lien vers le code de test produit par l'étudiant]

[Nombre de tests réalisés, avec des Tableaux de valeurs input/output utilisés pour comprendre la philosophie des tests]

4.2 Thomas

J'ai choisi de me concentrer sur les tests liés au gameplay ainsi qu'aux transactions, car c'est principalement sur ces aspects que j'ai travaillé au cours du projet. Étant donné leur nature concrète, la mise en place des tests s'est révélée relativement simple.

Lien vers le code de test

Input Output attendu Objectif
user_id = 1 Liste d'utilisateurs sans user_id = 1, avec beers = 7 Vérifier l'exclusion du joueur actuel
get_user_beer_reserve(uid=1) → 7 Tous les autres joueurs ont beers = 7 Vérifier appel à la fonction de réserve
Input Output attendu Objectif
winner_id = 2, loser_id = 1, beers = 5 {"success": True, "message": "Transaction completed"} Valider la réussite de la transaction
has_enough_beer(uid=1, beers=5) → 1 Vérifier que le loser a assez de bières
how_many_beer(uid=1) → 10, how_many_beer(uid=2) → 5 Vérifier la mise à jour correcte des stocks
Appels à do_beer_transaction et add_transaction Vérifier les appels aux procédures de BDD
Input Output attendu Objectif
winner_id = 2, loser_id = 1, beers = 5 Exception HTTP 405, message : "n'a plus assez de bieres" Vérifier blocage si bières insuffisantes chez le perdant
has_enough_beer(uid=1, beers=5) → 0

4.3 Tristan

Je me suis concentré sur les tests liés à la gestion des utilisateurs : création, connexion, gestion des amis et réinitialisation de mot de passe. Ces tests permettent de garantir la robustesse des interactions utilisateur avec la base de données, notamment en simulant divers scénarios (utilisateur existant, mot de passe incorrect, erreur base de données, etc.).

Récupération des utilisateurs

Input Output attendu Objectif
call_function → [{"username": "user1"}, {"username": "user2"}] Liste contenant "user1" Vérifier le retour de la fonction get_all_users

Récupération de l’e-mail

Input Output attendu Objectif
username = "user1" "[email protected]" Vérifier la récupération correcte de l’e-mail
username invalide None Vérifier le cas d’un utilisateur inexistant
email = None Exception Vérifier la gestion d’un input invalide

Réinitialisation du mot de passe

Input Output attendu Objectif
utilisateur existant + token actif Message indiquant qu’une demande existe déjà Tester un cas déjà traité
utilisateur inexistant Message d’erreur Vérifier la gestion d’un email inconnu
email = None Exception Vérifier la validation des entrées

Création d’un utilisateur

Input Output attendu Objectif
username inexistant Succès + appel à la procédure Vérifier la création d’un nouvel utilisateur
username existant Exception "existe déjà" Empêcher la duplication
Erreur dans call_procedure Exception "Procedure error" Gérer une erreur base de données

Connexion utilisateur

Input Output attendu Objectif
bon username + bon mot de passe Message "connexion réussie" Valider le fonctionnement de login
bon username + mauvais mot de passe Exception Refuser la connexion
utilisateur inexistant Exception Gérer l’erreur d’utilisateur inconnu

Gestion des amis

Input Output attendu Objectif
add_friend(1, 2) Succès + appel procédure add_friend Ajouter un ami s’ils ne sont pas encore amis
add_friend déjà amis Exception Empêcher les doublons
add_friend(1, 1) Exception Empêcher de s’ajouter soi-même
delete_friend(1, 2) Succès + appel procédure delete_friend Supprimer un ami
delete_friend sans lien Exception Gérer le cas d’amis non existants
delete_friend(1, 1) Exception Empêcher de se supprimer soi-même

Gestion des erreurs de base de données

Input Output attendu Objectif
call_function → Exception "DB error" Exception levée Gérer une erreur générique sur appel fonction
call_procedure → Exception "Procedure error" Exception levée Gérer une erreur générique sur procédure

4.4 Etudiant 4