Aller au contenu principal

Stratégie QA & Tests Vision

Cette section détaille la stratégie de tests, les workflows et les technologies utilisés dans le dépôt firstbreath-vision, qui contient les microservices d'IA et de vision par ordinateur.

🛠 Stack Technologique

  • Langage : Python 3.11
  • Frameworks : PyTorch, OpenCV, Ultralytics YOLO
  • Architecture : Microservices
    • camera-manager : Gestion des flux RTSP et logique caméra.
    • batch-inference : Exécution des modèles IA sur les images vidéo.
    • redis-worker : Traitement asynchrone des tâches.
  • Framework de Test : pytest
  • Linting & Formatage : Black, Flake8, Safety

🧪 Stratégie de Tests

Nous utilisons pytest pour les tests unitaires et d'intégration sur tous les services.

Structure des Tests

Chaque service a son propre répertoire tests/ :

  • services/camera-manager/tests/
  • services/batch-inference/tests/
  • services/redis-worker/tests/

Exécution des Tests en Local

Pour exécuter les tests d'un service spécifique :

cd services/camera-manager
python -m pytest tests/

🔄 Workflows CI/CD

1. Pipeline CI (ci.yml)

Déclenché sur push et pull_request vers main et dev.

Étapes :

  1. Quality Gates :

    • Formatage : Vérifie le style du code avec black.
    • Linting : Exécute flake8 pour détecter les erreurs de syntaxe et les noms non définis.
    • Sécurité : Exécute safety check sur les fichiers requirements.txt pour identifier les dépendances vulnérables.
  2. Tests :

    • Installe les dépendances (versions CPU uniquement de PyTorch pour la rapidité).
    • Exécute pytest avec couverture (--cov) pour chaque service (camera-manager, batch-inference, redis-worker).
  3. Analyse SonarQube (intégrée dans la CI) :

    • Scanne le code et rapporte les métriques de couverture et de qualité à SonarQube.
    • Applique les vérifications du Quality Gate.

2. Build Docker (docker-build-and-push.yml)

  • Compile les images Docker pour les services.
  • Pousse les images vers le registre de conteneurs (si configuré).

♿ Accessibilité

Non applicable pour ces services backend/IA.