Chapitre 6 : Tests et validation
7.1. Stratégie de tests
La validation de SOS Communautaire repose sur une
stratégie de tests rigoureuse, intégrant des tests unitaires,
d'intégration et fonctionnels pour garantir la fiabilité, la
sécurité et la performance du système. Cette approche
s'aligne avec les standards de développement logiciel (IEEE 829) et les
bonnes pratiques Agile.
7.1.1. Tests unitaires (Jest, Mocha)
Les tests unitaires visent à valider les composants
individuels du code, en isolant chaque fonction ou méthode pour
vérifier son comportement attendu.
· Backend (Node.js) :
Utilisation de Mocha et Chai pour tester les fonctions
critiques :

· Frontend (Flutter) :
Utilisation de flutter test pour tester les widgets et les
interactions utilisateur :

7.1.2. Tests d'intégration (Postman, Swagger)
Les tests d'intégration vérifient les
interactions entre les composants du système, notamment les
requêtes API et les services externes.
· API REST :
Utilisation de Postman pour tester les endpoints critiques :
· POST /incidents : Vérifie la création d'un
incident avec géolocalisation et médias.
· GET /incidents/proches : Valide la
récupération des incidents dans un rayon de 5 km.
· POST /incidents/:id/confirm : Teste la validation
communautaire et la mise à jour du statut.
Exemple de collection Postman :

Documentation Swagger :
Génération automatique de la documentation via
Swagger UI, permettant de tester les endpoints directement dans le navigateur
:

7.2. Résultats des tests
7.2.1. Couverture des fonctionnalités
Les tests couvrent 92 % des fonctionnalités clés,
avec un focus sur les workflows critiques :

Outils de mesure :
· Istanbul pour la couverture du backend Node.js.
· Flutter Driver pour les tests fonctionnels du frontend
mobile.
7.2.2. Analyse des bugs et corrections
Pendant les phases de test, 37 bugs ont été
identifiés, classés par gravité :
Gravité
|
Nombre de Bugs
|
Exemples
|
Corrections
|
Critique
|
5
|
Échec de géolocalisation en zone rurale
|
Intégration de la géolocalisation par
réseau mobile (cell ID
|
Élevée
|
12
|
Notifications push non reçues en cas de
perte de connexion
|
Relance automatique via une file d'attente (Redis)
|
Moyenne
|
15
|
Décalage des marqueurs sur la carte en cas
de zoom élevé
|
Optimisation du rendu
des marqueurs avecMarkerClusterLayer (Flutter)
|
Faible
|
5
|
Texte coupé sur les notifications push
|
Ajustement du nombre de caractères
affichés
|
|
Exemple de correction critique :

7.3. Retours utilisateurs
|