header background

Plongez dans les coulisses de notre stratégie qualité

Le

Plongez dans les coulisses de notre stratégie qualité

Le code source de Linphone et Flexisip évolue rapidement. Tous les quelques mois, de nouvelles fonctionnalités sont ajoutées, et presque chaque jour, des correctifs sont publiés pour résoudre les problèmes signalés par nos clients via notre service de support. Le code source est régulièrement refactorisé afin de favoriser des avancées en matière de compacité, de lisibilité et d’optimisation des performances.

Réaliser tout cela tout en évitant le risque d’introduire une régression ou un nouveau défaut représente un défi majeur.

Nous estimons qu’environ un tiers des efforts de nos développeurs est consacré exclusivement à l’amélioration de nos procédures de non-régression et à la maintenance de notre infrastructure de test pour en garantir la fiabilité et l’efficacité.

Dans cet article, nous présentons un aperçu de notre stratégie d’entreprise en matière de tests de non-régression et de procédures qualité, que nous divisons en plusieurs catégories :

  1. Tests automatisés de bas niveau, par composant
  2. Tests automatisés sophistiqués (tests d’intégration) pour nos produits Linphone SDK et Flexisip
  3. Tests automatisés de l’interface utilisateur (UI) pour les applications
  4. Tests manuels (réalisés par de vraies personnes 🙂) pour les applications Linphone et les produits serveurs

Tous les tests automatisés sont exécutés via GitLab à chaque modification du code source, dans le cadre du processus de « Merge Request », qui inclut également une revue de code par un autre développeur.

Nous détaillons chaque catégorie ci-dessous.

1. Tests automatisés de bas niveau, par composant

Linphone SDK et Flexisip sont constitués de plusieurs composants logiciels assemblés entre eux. Par exemple : oRTP est notre bibliothèque d’implémentation du protocole RTP (Real-Time Transport Protocol), belr est une petite bibliothèque utilisée pour l’analyse syntaxique des langages de protocole et mediastreamer2 est notre bibliothèque de diffusion audio et vidéo sur le réseau. Ces composants disposent chacun de leur propre suite de tests intégrée à leur code source. Ces tests, conçus et maintenus par les développeurs, permettent de valider leur bon fonctionnement de base. Lorsqu’une couche réseau est impliquée, nous utilisons un réseau de bouclage local, simple à comprendre pour toute personne familière avec le développement logiciel.

2. Tests automatisés sophistiqués

Liblinphone est une bibliothèque dédiée aux appels VoIP, conférences et messagerie instantanée (IM). Un appel VoIP dans des conditions réelles implique de nombreux éléments : protocoles de signalisation, diffusion multimédia, réseau, routeurs/firewalls, et serveurs. Notre objectif est de créer des tests automatisés qui reflètent au mieux l’usage réel de Liblinphone. C’est pourquoi nous avons conçu, en plus des tests basés sur l’API Liblinphone, une infrastructure complète dédiée aux tests automatisés, comprenant nos produits serveurs :

  • Flexisip Account Manager : permet aux suites de tests d’enregistrer leurs propres utilisateurs SIP aléatoires.
  • Flexisip Proxy : permet aux tests d’initier des appels authentifiés et routés via le réseau.
  • Flexisip Conference Server : permet la création de discussions de groupe et de conférences audio/vidéo.

Cette infrastructure serveur de test est déployée à l’aide de scripts Ansible.

Nous avons également développé des outils spécifiques en complément des suites de tests Liblinphone pour évaluer la performance et la qualité des appels, conférences et flux de messagerie instantanée :

  • Un module de simulation de réseau, permettant d’introduire perte de paquets, gigue, et latence réseau ;
  • Un outil de comparaison de fichiers audio, permettant de vérifier que le contenu est transmis sans dégradation perceptible.

La suite de tests Liblinphone comprend environ 1 700 tests, incluant des appels, conférences et flux de messagerie instantanée en temps réel. Ils couvrent à la fois les usages classiques des utilisateurs finaux, mais aussi des cas plus avancés comme les transferts d’appels ou des scénarios SIP spécifiques à certains clients. Comme chaque appel dure généralement entre 5 et 10 secondes, les tests sont parallélisés sur plusieurs threads pour optimiser la durée d’exécution. L’ensemble de la suite peut être exécutée en environ 20 minutes, en adéquation avec notre stratégie de développement agile.

Les résultats de ces tests sont publiés pour chaque version (y compris les versions mineures) sur notre page de téléchargement (voir par exemple [le rapport de la version 5.2 de Liblinphone]).

La logique de la suite de tests pour Flexisip est similaire : des flux d’appels SIP générés par Liblinphone sont passés à une instance Flexisip à tester, afin de simuler des scénarios incluant toute la pile réseau. La suite modélise également l’usage de Flexisip dans un système réel avec bases de données MariaDB et Redis, ce qui permet des tests automatisés proches des déploiements en production.

Notre infrastructure de test évolue en permanence : nous sommes par exemple en train d’ajouter une compilation avec Address Sanitizer, qui permettra de détecter instantanément des erreurs ou fuites mémoire.

3. Tests automatisés de l’interface utilisateur (UI)

Notre équipe UI a développé un framework de tests automatisés applicatifs, qui simule des interactions (taps) sur des appareils Android et iOS réels ou émulés, et qui vérifie le rendu de l’interface. Les scénarios de test automatisés reproduisent des cas d’usage typiques : création ou configuration d’un compte SIP, émission ou réception d’appel, envoi de message instantané, etc.

4. Tests manuels
Même si presque tout peut être automatisé, il arrive que le coût de l’automatisation dépasse celui du test manuel. C’est pourquoi notre processus de publication d’application inclut également une campagne de tests manuels intense de deux jours, effectuée sur une large variété d’appareils : iPhones, téléphones Android de différentes marques, ordinateurs portables sous macOS, Windows et Linux, ainsi que des périphériques Bluetooth.

Conclusion
L’extrême complexité combinatoire des scénarios de communication rend indispensables les tests automatisés pour l’ensemble de nos produits. Au fil des années, nous avons mis en place une infrastructure de test complète, capable d’exécuter un nombre impressionnant de cas réalistes en moins de 30 minutes. Cette infrastructure est essentielle pour garantir une évaluation qualité rigoureuse et une livraison rapide de nos versions, en particulier dans le cadre de notre service de support.

N’hésitez pas à contacter notre équipe pour en savoir plus !

👉 Partagez sur les réseaux