Amélioration de la qualité de Jami

Tests unitaires

  • Il est plus difficile de faire un test unitaire sur le projet Jami en raison des conditions de course sur la dépendance à plusieurs niveaux.

  • Il y a environ 30 tests unitaires et une couverture de 26%. En raison de la forte demande de Jami pour donner de nouvelles fonctionnalités à l’utilisateur rapidement, elles ne sont pas maintenues par les développeurs ou par un département de QA.

  • Nous utilisons lcov pour la couverture, vous pouvez trouver la configuration de lcovs dans le daemons Makefile.am.

  • Un système doit être mis en place pour commencer à convaincre l’équipe de faire un test unitaire pour un nouveau code avant de fusionner

  • Vous pouvez les lancer en faisant make check dans le dossier daemon ou séparément dans le dossier test unitaire avec gdb: gdb ut_media_encoder

  • L’environnement doit être réglé avec –disable-shared pendant la commande./configurer

Tests de cadre

  • Vous pouvez trouver des tests de framework dans le daemon Makefile.am et le déjeuner avec make integration. Cela appelle le script jami_test.py dans le dossier outils/dringctrl. Il utilise dringctrl.py et controller.py qui vous permettent de contrôler Jami via bash.

  • Cela fait une série d’appels pour s’assurer que le réseau ouvert de Jami” est stable.

  • D’autres tests-cadres doivent être mis en œuvre à l’avenir pour tester les fonctionnalités de Jami dans leur ensemble.

Tests d’intégration

  • Chaque commande passe par des tests d’intégration dans les dockers des machines de construction. Vous pouvez trouver les détails à: jenkins.jami.net

  • Le code-révision est effectuée par un développeur collègue, parfois le code est révisé par le même développeur, cela doit être évité pour mettre l’accent sur la loi Linus.

  • Sonarqube permet à Jenkins de construire Jami et de vérifier le linting. Vous pouvez trouver des filtres et des résultats à: sonar- jami.savoirfairelinux.net Sonar utilise clang-tidy comme un préprocesseur de linting compilateur, vous pouvez trouver des filtres clangs dans le fichier.clang-tidy dans le dossier daemon.

  • Sur sflvault sonarqube peut être trouvé au service m#2637 et aux connexions d’administration au service s#7169

Doc et les commentaires:

  • Vous pouvez trouver toute la documentation sur docs.jami.net

  • Les problèmes sont posés par les développeurs ou les utilisateurs sur git.jami.net

Surveillance

  • Un script est appelé toutes les 30 minutes sur une machine virtuelle jami-monitorpeervm-01. Vous pouvez le trouver sur le service s#7209 et appelle un autre client virtuel jami-monitorpeer-02 (service s#7224). Une série d’appels est faite et il renvoie le taux d’échec. Vous pouvez trouver tous les détails à https://wiki.savoirfairelinux.com/wiki/Jami-monitorpeervm-01.mt.sfl.

  • Si nécessaire, la commande manuelle est./script.sh peer 031acbb73f2a3385b2babc7161f13325be103431

  • Il suit un graphique de point par point en temps réel sur https://monitoring.savoirfairelinux.com/grafana/dashboard/script/dyndash.js?host=jami-monitorpeervm-01.mtl.sfl&service=Check%20JamiCall&panelId=1&fullscreen&orgId=1

Tests de fumée

Avant de sortir, chaque client doit passer par une liste de scénarios.

Les scénarios sont décrits ici: [test de fumée de Jami]

Ils sont examinés par QA dpt. avant de l’envoyer aux développeurs si nécessaire.

Si une version contient un commande réseau qui a été fusionné, le département d’AQ doit être en mesure d’automatiser les différents tests de connectivité (comme décrit ci-dessous dans les configurations Appels)

Il appelle les configurations.

Voici la liste des configurations de réseau à tester:

(IPv4! IPv6) + (TURN!! TURN) + (STUN!! STUN) + (UPnP!! UPnP) pour les deux côtés.

Si les deux parties sont IPv4 uniquement sans TURN/STUN/UPnP, l’appel doit être local.

Note spéciale: FDroid

Le script pour générer MR est dans le repo client-android (fdroidMergeRequest.sh)

Ce qui doit être fait

  • Poussez la couverture à 60%

  • Établir un système au sein de l’équipe pour assurer la maintenance et la création de tests unitaires.

  • Chaque fonctionnalité majeure doit être testée dans son ensemble en ajoutant un test cadre (c’est-à-dire en s’assurant que le message a été reçu, que l’appel a été terminé bien des deux côtés, etc…)

  • Chaque nouvelle fonctionnalité doit être testée sur chaque plateforme avant de la fusionner pour réduire la régression.

  • Intégrer sonarqube sur chaque client

  • Automatiser le test du comportement de Jami sur la compatibilité réseau

  • Faites un script make_ring.py adapté aux fenêtres aussi