| Cartographie fonctionnelle de LoGeAs Informations sur la version en cours Proc#145 : Procédure de Gestion des Versions |
|
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.
Ce document constitue une pièce du dossier de certification NF Logiciel. Il répond à trois questions principales :
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.
Les tests unitaires ne garantissent pas l'absence de défauts.
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.
Les tests d'interface constituent donc un complément indispensable aux tests unitaires, mais ne les remplacent pas.
Dans LoGeAs on en distinct deux catégories :
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)
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 :
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.
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.
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.
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.
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é.
Le rapport distingue deux origines possibles :
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.
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.
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.
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.
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.
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.
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 ».
Tout rapport validé, avec ou sans réserves, est publié simultanément à sa validation.
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.
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.
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.
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.
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.
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.
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.
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.
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.