Aller au contenu principal

02 - Tests automatisés

Imgur

Votre objectif

Tester votre application afin d'en assurer la qualité et le bon fonctionnement.

Détails de la tâche

Valant pour 20% de la note finale, vous aurez à créer des tests pour votre application.

Vous aurez aussi à remettre un plan de test à la semaine 3, valant pour 5% de la note finale.

Vous devez développer des tests pour tester le bon fonctionnement de votre application, ainsi que des tests pour vérifier les correctifs apportés suite à la revue de code de l'autre équipe.

attention

Bien que vous deviez créer autant des tests unitaires que d'intégration, il est de votre responsabilité de choisir le bon type de test en fonction de ce que vous avez à tester:

  • Test unitaire
  • Test d'intégration
  • Test d'intégration E2E (ex.: Playwright)

Il est aussi de votre responsabilité de choisir combien de tests unitaires vs. intégration.

Type de testNombre de tests / coéquipierTests totaux pour une équipe de 3Tests totaux pour une équipe de 4
Tests de fonctionnalités, scénarios, composants ou fonctions82432
Tests des correctifs en lien avec la revue de code268
TOTAL103040

Création d'un plan de tests

Avant de vous lancer à l'aveuglette dans la création de tests, prenez le temps d'évaluer ce que vous testerez (fonctions, fonctionnalités, cas de figures/d'utilisation, quels aspects du backend, quels aspects du frontend, etc.) et de vous répartir le travail.

Consignez le tout dans un fichier partagé (Google Sheets, Airtable, Excel, etc.). De plus, maintenez-le à jour lorsqu'un test est complété ou que vous apportez une modification à ce que vous testez.

Cela constituera votre plan de tests: il résumera les tests et sera utilisé lors de la correction.

La première version de votre plan de test sera à remettre à la semaine 3 et devra comprendre, pour chaque test planifié:

  • Fonction ou fonctionnalité à tester
  • Identification de s'il s'agit du frontend ou du backend
  • Type de test: unitaire ou intégration
  • Qui (coéquipier) est responsable du test

Tests unitaires

  • Vous devez développer des tests unitaires démontrant que vos fonctionnalités ou composants font ce qu’elles sont censées faire.
  • Les tests doivent être répartis dans le code: ils doivent toucher des fonctions dans plusieurs portions de l'application.
  • Vous devez tester autant le back-end que le front-end.
  • Les tests doivent être faits à l’aide d’un outil automatisé. (ex : xUnit, bUnit, JustMock, Jasmine, etc. )
important

Les tests unitaires sont réalisés pour vérifier le bon fonctionnement des composants individuels d'un logiciel. Ils permettent de vérifier que chaque fonction ou méthode fonctionne correctement et produit les résultats attendus.

Un test unitaire teste généralement une portion isolée de l'application, soit une couche (UI, Business Logic, Data Layer, etc.). Les dépendances aux autres couches ou autres portions de l'application sont simulées à l'aide de mock.

Tests d'intégration et tests End-to-End

  • Vous devez développer des tests d'intégration démontrant que certaines fonctionnalités de l'application fonctionnent comme attendu.
  • Les tests doivent être faits à l’aide d’un outil automatisé (ex. : xUnit, IcuBlazor, PlayWright, Angular Protractor, etc.)
important

Les tests d'intégration sont effectués pour vérifier la façon dont les différents composants ou modules d'une application interagissent entre eux. Ils permettent de détecter les problèmes d'interface, de communication et de coordination entre les différentes parties du logiciel.

Un test d'intégration teste au moins 2 couches d'une application. Par exemple, un contrôleur qui communique avec un service de la couche Application, voire même la chaine complète du contrôleur jusqu'à une base de données de test. On essaie le plus possible de se rapprocher d'un cas réel, touchant à toutes les couches utilisées par la fonctionnalité qu'on cherche à tester.

On peut pousser le test d'intégration plus loin en utilisant un outil de test permettant de simuler un utilisateur dans un navigateur (Cypress, Playwright, ...). On teste ainsi la chaine complète, de l'interface utilisateur au backend. Ce genre de test peut être qualifié de test End-to-End, mais cela reste un test d'intégration.

Tests des correctifs en lien avec la revue de code

De la semaine 2 à 5, une revue de code sera faite par une autre équipe.

  • Pour chaque bug trouvé dans le code, vous devez corriger le code.
  • Vous devez effectuer le ou les tests nécessaires pour vérifier que le bug est corrigé.
  • Vous devez faire minimum 2 tests par coéquipier (pour des bugs différents évidemment).
  • Le test doit démontrer que le problème est corrigé et que la fonctionnalité a le comportement attendu.
  • Vous devez indiquer le # de l’issue dans le code du test.
  • Le merge request doit faire référence à l'issue et le code du test doit indiquer le # de l’issue.

Les tests développés ne comptent pas comme tests unitaires ou tests d'intégration.

Précisions sur les tests

Vous serez évalués sur la qualité, la couverture, la pertinence et le respect de la quantité requise de tests.

Les tests doivent être...

  • pertinents et vérifier quelque chose (bien essayé avec Assert.True(true)!)
  • exécutés dans n'importe quel ordre
  • descriptifs et indiquer le problème testé
  • documentés (nom et/ou commentaire)
  • non triviaux

De plus, ils doivent...

  • couvrir plusieurs composants/fonctionnalités
  • couvrir autant le back-end que le front-end
  • couvrir les fonctionnalités clés de l'application

Le but n’est pas d’avoir une couverture complète, mais de démontrer que vous comprenez les différents types de tests et êtes capable de tester plusieurs scénarios.

important

Un test, bien qu'au singulier, teste habituellement plusieurs scénarios. Par exemple, pour un test d'intégration permettant l'inscription d'un utilisateur:

  • Le test vérifiera évidemment qu'il est possible d'inscrire un utilisateur avec les données attendues (courriel, mot de passe, etc.)
  • Le test pourrait ensuite vérifier qu'inscrire un utilisateur avec un courriel déjà pris empêche l'inscription et génère une erreur
  • Il pourrait aussi tester qu'une tentative d'inscription avec des données inadéquates (manque un champ, longueur maximale ou minimale d'un champ non respectée, etc.) ne permet pas l'inscription et que les validations échouent.
attention

Vous devez inclure dans votre readme comment exécuter les tests. Ce guide doit indiquer comment installer, si nécessaire, la bibliothèque de tests, et comment exécuter les tests.

Modalités de remise

  • Remis via Gitlab et Confluence
  • Votre fichier de plan de tests et de récapitulatif dans une section Remise Finale de votre Confluence
  • Une section Tests ou équivalent ajoutée au readme pour les précisions quant à l'exécution des tests
  • À remettre avant le 28 février 2025 23:59

Grille d'évaluation

Plan de test (semaine 3)

CritèrePoints
Identification et pertinence des tests à effectuer60%
Distribution backend/frontend et types de test30%
Partage des responsabilités10%

Tests (semaine 6)

CritèrePoints
Mise à jour du plan de test10%
Couverture, variété et pertinence des tests20%
Qualité des tests50%
Tests des correctifs en lien avec la revue de code20%