Table des matières

Retour au dossier de maintenance
Sujets connexesCartographie fonctionnelle de LoGeAs
Informations sur la version en cours
Proc#145 : Procédure de Gestion des Versions

Méthodologie des tests

Présentation

Ce document est un document de référence stable, commun à toutes les versions de LoGeAs Web.
Il décrit la méthodologie des tests appliqués au logiciel, les garanties qu'ils apportent, leurs limites et les modalités de lecture et de validation des rapports qualité de version.
Les résultats des tests sont présentés dans chaque rapport qualité de version, accessible depuis l'écran « Rapports de version » de la cartographie fonctionnelle.

1. Objet

Ce document constitue une pièce du dossier de certification NF Logiciel. Il répond à trois questions principales :

2. Les tests unitaires

2.1. Définition

Un test unitaire vérifie le comportement d'une unité de code isolée, telle qu'une fonction, une méthode ou un composant.
Les dépendances réelles (serveur, base de données ou autres écrans) sont remplacées par des simulations (*mocks*).
Les tests unitaires s'exécutent en quelques millisecondes. Cette rapidité permet d'en réaliser plusieurs centaines et de les relancer à chaque modification du code.

2.2. Ce que les tests unitaires permettent de vérifier

2.3. Limites des tests unitaires

Les tests unitaires ne garantissent pas l'absence de défauts.

2.4. Listes, compte rendu d'exécution

https://cartographie-fonctionnelle.logeas-web.fr/UniversTests?niveau=1

3. Les tests d'interface (E2E)

3.1. Définition

Un test de bout en bout (*End-to-End* ou E2E) vérifie le comportement de l'application complète, du point de vue d'un utilisateur.
Un navigateur est piloté automatiquement par Playwright.
Il charge l'interface réelle, effectue des actions (clics, saisies de texte, navigation) et vérifie les résultats effectivement affichés à l'écran.
Ces tests utilisent les véritables composants de l'application, les échanges réseau, les serveurs, la base de données et le mécanisme d'authentification. Aucune de ces couches n'est simulée.
Contrairement aux tests unitaires, qui isolent les composants pour permettre une exécution rapide, les tests E2E vérifient leur fonctionnement conjoint dans des conditions proches de l'utilisation réelle.

3.2. Ce que les tests d'interface permettent de vérifier

3.3. Limites des tests d'interface

Les tests d'interface constituent donc un complément indispensable aux tests unitaires, mais ne les remplacent pas.

3.4. Listes, compte rendu d'exécution

Dans LoGeAs on en distinct deux catégories :

4. Tests automatiques

4.1. Définition

A chaque “Génération des écritures”, opération qui consiste à transformer dans LoGeAs les saisies comptables en écritures comptable, mais aussi lors du charge de la base des tests sont réalisés.
Leur vocations est de vérifier la bonne santé des données que l'origine soit une erreur de développement (par exemple : une personne non lié à une famille) ou une erreur de l'utilisateur (par exemple : une écriture comptable non équilibrée)

4.2. Listes, compte rendu d'exécution

https://cartographie-fonctionnelle.logeas-web.fr/UniversTests?niveau=3

5. Complémentarité des tests

Les tests unitaires et les tests d'interface répondent à des objectifs différents et complémentaires.

Type de test Périmètre vérifié Vitesse d'exécution Outils et emplacement dans LoGeAs Web
Test unitaire Une unité de code isolée, avec des dépendances simulées Quelques millisecondes Jest, dépôts logeas-web (application) et logeas-lib (bibliothèques partagées)
Test d'interface (E2E) L'application complète, pilotée par un navigateur réel De quelques secondes à plusieurs minutes Playwright, dossier tests/ du dépôt logeas-web
Test de charge et de stress L'application complète, pilotée par un navigateur réel, mais dans des volumes limites De quelques minutes à quelleques heures Playwright, dossier tests-chargestress/ du dépôt logeas-web
Test de “génération” Réaliser automatiquement dans le courant de l'usage du logiciel De quelques secondes à plusieurs minutes divers dossiers


Les tests unitaires permettent de vérifier rapidement un grand nombre de cas.
Les tests d'interface en vérifient un nombre plus limité, mais dans des conditions réelles d'utilisation.
les test de génération vérifie dans l'usage les problèmes pouvant survenir de la part du logiciel et/ou de l'utilisateur

Aucun de ces types de tests ne remplace :

6. Organisation et exécution des tests

6.1. Une exécution complète par version

Un script unique permet d'exécuter automatiquement l'ensemble des tests d'une version, dans l'ordre suivant :

Cette procédure permet de disposer d'un rapport consolidé des différents types de tests réalisés sur une version candidate.

6.2. Organisation des tests d'interface

Les scénarios de tests d'interface sont organisés en groupes exécutés successivement :

Les règles d'exécution sont les suivantes :

Par exemple, le fichier 03-T92-reponse-ticket-client.spec.ts correspond au test numéro 92 de la cartographie.
Le résultat de chaque scénario est enregistré automatiquement dans le suivi des tests de la cartographie fonctionnelle.

7. Lecture d'un rapport qualité de version

Chaque rapport qualité de version présente les informations nécessaires à l'identification du code testé, à l'interprétation des résultats et à leur validation.

7.1. Version

La version indiquée correspond à la version candidate, c'est-à-dire à la prochaine version bêta que deviendra le code testé.
Il ne s'agit donc pas nécessairement de la dernière version bêta déjà livrée.

7.2. Clé du code

La clé du code identifie précisément les éléments ayant fait l'objet des tests :

Un rapport qualité de version ne vaut que pour la clé de code qu'il identifie.
Deux situations particulières sont signalées :

Ces informations sont importantes pour apprécier la représentativité des résultats par rapport au code destiné à être livré.

7.3. Origine de l'exécution

Le rapport distingue deux origines possibles :

7.4. Verdict

Le verdict synthétise le résultat de l'exécution :

Le verdict doit être interprété en tenant compte des éventuelles suites non exécutées et des tests instables.

7.5. Suites de tests unitaires non exécutées

Une suite de tests unitaires non exécutée correspond à un fichier de tests qui n'a pas pu démarrer, par exemple en raison d'une erreur de compilation ou d'un plantage.
Il ne s'agit pas d'un test en échec, mais d'un ensemble de tests qui n'a effectué aucune vérification.
Cette situation doit être analysée au même titre qu'un échec de test.

7.6. Tests d'interface instables

Un test d'interface est considéré comme instable lorsqu'un scénario échoue lors d'une première exécution, puis réussit lors d'une nouvelle exécution.
Cette situation doit faire l'objet d'une analyse afin d'identifier une éventuelle instabilité de l'environnement ou un défaut intermittent.

7.7. Sections d'analyse

Le rapport comporte plusieurs sections d'analyse :

Ces sections sont rédigées à partir des résultats des tests, de l'historique du code et du rapport de la version précédente.
Elles font ensuite l'objet d'une relecture et d'une validation par l'équipe.

7.8. Historique des rapports

Les rapports historiques repris des anciens rapports de release présentent uniquement les chiffres des tests unitaires.
Ils ne comportent ni analyse ni validation. Il convient donc de tenir compte de cette différence lors de leur consultation et de leur comparaison avec les rapports qualité actuels.

8. Validation des rapports qualité de version

8.1. Principe de validation

Chaque rapport qualité de version est validé dans l'écran « Rapports de version » de la cartographie fonctionnelle.
La validation est réalisée par un utilisateur connecté et comporte les informations suivantes :

La validation porte sur une exécution précise des tests et sur le code correspondant.

8.2. Nouvelle exécution des tests

Si les tests sont relancés sur une même version, un nouveau rapport est généré.
Ce nouveau rapport doit faire l'objet d'une validation distincte.
Les rapports précédents restent consultables et sont marqués comme « remplacés ».

8.3. Publication du rapport

Tout rapport validé, avec ou sans réserves, est publié simultanément à sa validation.

8.4. Conditions de validation avec réserves

Une validation avec réserves n'est admise que si chaque échec est rattaché :

Tout échec nouveau par rapport au dernier rapport validé entraîne un refus de validation.
Un commentaire est obligatoire pour toute validation avec réserves ou tout refus.

9. Chaîne de qualification et de livraison

9.1. Principe général

Aucune version ne peut être livrée sans disposer d'un rapport qualité validé correspondant exactement au code concerné.
La chaîne de qualification et de livraison comprend les étapes suivantes.

9.2. Étape 1 : qualification

La qualification est réalisée à l'aide du script qualifier-version. Les conditions suivantes doivent être réunies :

Une fois ces conditions vérifiées, le script exécute l'ensemble des tests et produit le rapport qualité de la version candidate.

9.3. Étape 2 : validation du rapport

Le rapport de qualification doit être validé dans l'écran « Rapports de version » de la cartographie fonctionnelle.
Cette validation constitue un préalable obligatoire à la production de la version bêta.

9.4. Étape 3 : livraison de la version bêta

La production de la version bêta est réalisée par le script livrer-beta.
Cette étape constitue une porte bloquante : la bêta ne peut être produite que si un rapport de qualification validé correspond exactement au code présent dans les deux dépôts.
La livraison de la bêta est automatiquement inscrite dans la trace du rapport.

9.5. Étape 4 : recette de la version bêta

Après le déploiement de la bêta sur le serveur de test, une recette est réalisée dans l'écran « Rapports de version » de la cartographie fonctionnelle.
Cette recette repose sur une liste de contrôle minimale.
Chaque point de cette liste doit être :

Une recette déclarée non conforme nécessite obligatoirement un commentaire.

9.6. Étape 5 : livraison de la version client

La livraison de la version client (release) est réalisée par le script livrer-release.
Cette étape constitue également une porte bloquante.
Les conditions suivantes doivent être réunies :

Le rapport qualité publié constitue alors la pièce qualité de la release.

9.7. Gestion des correctifs après livraison d'une bêta

Tout correctif apporté après la production d'une bêta, même mineur, impose une nouvelle qualification et la production d'une nouvelle bêta.
Cette règle garantit que la version livrée a bien été testée et validée sur la base du code exact qui la constitue.

9.8. Gestion des livraisons d'urgence

Une livraison réalisée en dehors de cette chaîne reste possible en cas d'urgence.
Dans ce cas, le rapport de release et l'écran « À propos » de LoGeAs Web indiquent explicitement que la version est non qualifiée.
Cette mention permet de distinguer une version ayant suivi l'ensemble de la procédure de qualification d'une version livrée exceptionnellement en dehors de celle-ci.