Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - qualité

Fil des billets

jeudi 18 mars 2021

Nos efforts qualité

Lizmap a près de 10 ans. 10 ans de code, d'ajout de nouvelles fonctionnalités, de rédaction de documentation, de sortie de nombreuses versions. Des montées de versions de librairies, de nombreux contributeurs (31 si j'en crois GitHub) et contributions plus tard, nous avons sorti la version 3.4 fin 2020.

Lors de ce cycle de release entre les differentes versions RC et la version finale, nous nous sommes rendu compte d'un manque dans notre processus de release. Nous n'étions pas sûrs de la qualité de lizmap au moment de cette sortie et nous n'avions pas assez de moyens pour évaluer le risque d'avoir une version qui contiendrait des régressions.

Afin de rendre le produit plus fiable lors de mise-à-jour et de pouvoir être plus serein lors de nos prochaines sorties de version, nous avons mis en place un certain nombre de points afin d'améliorer la qualité.

Le premier est de ne plus accepter de contributions sans tests. Des tests automatiques, c'est bien, mais des procédures manuelles de tests, c'est bien aussi. Nous avons donc maintenant une règle qui dit "pas de patch sans test". Nous préférons les tests automatiques qui seront joués lors de l'intégration continue. Mais nous avons aussi conscience que tout n'est pas testable de manière automatique. Et donc qu'un certain nombre de tests devront se jouer de manière manuelle. Nous maintenons donc une liste de tests à jouer. Ces projets de tests sont présents dans les branches 3.4 et pour la prochaine version 3.5 (aka master).

Le deuxième est de mettre en place un processus de release qui intègre une phase de test. Nous consacrons maintenant un jour ou deux afin de pouvoir jouer tous les tests et de valider qu'aucune régression n'est présente. Pour les versions majeures, nous avons alloué encore plus de temps afin de pouvoir intégrer le retour de nos utilisateurs.

Troisième point dans lequel nous avons investi, la participation communautaire aux tests. Il est désormais très simple d'avoir un Lizmap avec un ou plusieurs projets. Il suffit d'utiliser notre stack docker, d'ajouter votre projet et de voir si tout fonctionne comme prévu. Si un problème survient, il est alors possible d'ouvrir au plus vite un ticket avec le maximum d'information pour que nous puissions le corriger. Nous souhaiterions que plus de personnes participent aux tests de nos Release Candidates (RC), afin de détecter avant les sorties les régressions sur vos projets.

Quatrièmement, nous mettons en place des processus internes pour que notre code soit plus facile à tester (cf la stack docker), mais aussi plus lisible par l'utilisation de linters. Nous avons également ajouté un analyseur de code pour le backend, PHP Static Analyser afin de nous prévenir de possibles erreurs côté PHP.

Cinquièmement, nous venons de passer du temps à mettre à jour la plate-forme de démo https://demo.lizmap.com; les projets ont été dépoussiérés et mis à jour. Ces mises à jour facilitent l'adoption de nos démos comme un référentiel de tests avec de vraies données.

Nous avions pris conscience en juin 2020 d'un déficit dans nos processus qualité. Nous avions donc dirigé un stage afin de refactoriser la librairie Lizmap pour qu'elle soit plus facile à tester de manière automatique. De nombreux tests ont été ajoutés lors de cette refactorisation. Ces changements ont été intégrés dans la future branche 3.5 de Lizmap. C'était trop de travail pour l'intégrer dans les branches 3.3 et 3.4 - elles seront donc légèrement moins bien testées de manière automatique par la CI.

La partie backend PHP étant mieux couverte et mieux testable, nos efforts dans les mois à venir vont se focaliser sur la partie front-end (Javascript, inteface Web...), avec des mises à jour de librairies, de la refactorisation de code et l'ajout de nombreux tests. Une stagiaire en fera le sujet de son stage, on ajoutera grâce à l'outil cypress des tests end2end automatiques.

Les tests backend PHP ainsi que frontend end2end Javascript, ainsi que les linters PHP et Javascript sont lancés sur le dépôt GitHub avec Actions.

Tous ces changements n'ont été possibles qu'en allouant plus de ressources au projet Lizmap au sein de 3liz, par l'arrivée de nouvelles personnes dans l'équipe.