Files
serv_benchmark/QUICKTEST.md
2025-12-14 10:40:54 +01:00

8.4 KiB

Quick Test Guide - Linux BenchTools v1.1.0

Guide rapide pour tester les nouvelles fonctionnalités après la mise à jour.


🚀 Démarrage Rapide

cd /home/gilles/Documents/vscode/serv_benchmark

# Rebuild et redémarrer
docker compose build backend
docker compose up -d

# Vérifier les logs
docker logs linux_benchtools_backend --tail 20
docker logs linux_benchtools_frontend --tail 20

Tests Backend (v1.0.1)

Test 1 : Health Check

curl http://localhost:8007/api/health
# Attendu: {"status":"ok"}

Test 2 : Stats Endpoint (Fix session DB)

curl http://localhost:8007/api/stats | jq
# Attendu: JSON avec total_devices, total_benchmarks, avg_global_score

Test 3 : Devices Endpoint

curl http://localhost:8007/api/devices?page_size=10 | jq
# Attendu: JSON avec items[], total, page, page_size

Test 4 : Validation des Scores

# Test avec un score invalide (devrait être rejeté)
curl -X POST http://localhost:8007/api/benchmark \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{
    "device_identifier": "test",
    "bench_script_version": "1.0",
    "hardware": {...},
    "results": {
      "global_score": 150  # ❌ Invalide (>100)
    }
  }'
# Attendu: Erreur 422 Unprocessable Entity

Tests Frontend (v1.1.0)

Test 1 : Vérifier les Nouveaux Éléments HTML

# Vérifier la barre de recherche
curl -s http://localhost:8087/ | grep "searchInput"
# Attendu: Ligne avec id="searchInput"

# Vérifier le bouton actualiser
curl -s http://localhost:8087/ | grep "refreshBtn"
# Attendu: Ligne avec id="refreshBtn"

# Vérifier l'horodatage
curl -s http://localhost:8087/ | grep "lastUpdate"
# Attendu: Ligne avec id="lastUpdate"

Test 2 : Vérifier les Fichiers JS/CSS

# Vérifier que dashboard.js contient la fonction de recherche
curl -s http://localhost:8087/js/dashboard.js | grep "filterDevices"
# Attendu: Fonction filterDevices présente

# Vérifier que components.css contient les skeleton loaders
curl -s http://localhost:8087/css/components.css | grep "skeleton"
# Attendu: Classes skeleton présentes

🌐 Tests Manuels dans le Navigateur

Test 1 : Recherche en Temps Réel

  1. Ouvrir http://localhost:8087/
  2. Dans la barre de recherche, taper "lenovo"
  3. Vérifier que seuls les devices avec "lenovo" s'affichent
  4. Effacer le texte
  5. Vérifier que tous les devices réapparaissent
  6. Cliquer sur "Effacer"
  7. Vérifier que le champ est vidé

Test 2 : Bouton Actualiser

  1. Ouvrir http://localhost:8087/
  2. Noter l'horodatage affiché (ex: "Mis à jour: 18:45:32")
  3. Cliquer sur "🔄 Actualiser"
  4. Vérifier que le bouton affiche " Chargement..."
  5. Vérifier que le bouton est désactivé (grisé)
  6. Attendre la fin du chargement
  7. Vérifier que le bouton redevient "🔄 Actualiser"
  8. Vérifier que l'horodatage a changé

Test 3 : Gestion d'Erreurs avec Retry

  1. Arrêter le backend : docker compose stop backend
  2. Ouvrir http://localhost:8087/
  3. Cliquer sur "🔄 Actualiser"
  4. Vérifier qu'un message d'erreur s'affiche
  5. Vérifier le message : "Impossible de se connecter au serveur backend..."
  6. Vérifier qu'un bouton "🔄 Réessayer" est présent
  7. Redémarrer le backend : docker compose start backend
  8. Attendre 5 secondes (démarrage)
  9. Cliquer sur "🔄 Réessayer"
  10. Vérifier que les données se chargent normalement

Test 4 : Protection Anti-Spam

  1. Ouvrir http://localhost:8087/
  2. Ouvrir la console du navigateur (F12)
  3. Aller dans l'onglet "Network"
  4. Cliquer rapidement 10 fois sur "🔄 Actualiser"
  5. Vérifier qu'une seule requête /api/devices apparaît
  6. Vérifier que le bouton reste désactivé pendant le chargement

Test 5 : Auto-Refresh (30 secondes)

  1. Ouvrir http://localhost:8087/
  2. Noter l'horodatage (ex: "Mis à jour: 18:45:32")
  3. Attendre 30 secondes sans toucher à rien
  4. Vérifier que l'horodatage se met à jour automatiquement
  5. Ouvrir l'onglet Network (F12)
  6. Vérifier qu'une requête /api/devices apparaît toutes les 30 secondes

Test 6 : Responsive Design (Optionnel)

  1. Ouvrir http://localhost:8087/
  2. Redimensionner la fenêtre du navigateur
  3. Vérifier que les cartes stats s'adaptent (grid responsive)
  4. Vérifier que la toolbar reste utilisable
  5. Tester sur mobile (F12 → Toggle device toolbar)
  6. Vérifier que tout est accessible

🧪 Tests avec Données Réelles

Test 1 : Exécuter un Benchmark

# Sur une machine Linux (ou la machine hôte)
curl -s http://localhost:8087/scripts/bench.sh | bash -s -- \
  --server http://localhost:8007/api/benchmark \
  --token "YOUR_TOKEN_FROM_ENV" \
  --device "test-machine"

Test 2 : Vérifier dans le Dashboard

  1. Ouvrir http://localhost:8087/
  2. Vérifier que "Total Devices" s'incrémente
  3. Vérifier que "Total Benchmarks" s'incrémente
  4. Vérifier que la nouvelle machine apparaît dans le tableau
  5. Rechercher la machine par son nom
  6. Vérifier qu'elle apparaît dans les résultats

Test 3 : Modifier un Device

  1. Aller sur http://localhost:8087/devices.html
  2. Cliquer sur un device
  3. Modifier la description
  4. Sauvegarder
  5. Vérifier dans les logs backend :
    docker logs linux_benchtools_backend --tail 50
    
  6. Vérifier qu'une requête PUT /api/devices/{id} apparaît
  7. Retourner au dashboard
  8. Vérifier que le timestamp updated_at a bien changé (Fix Bug #1)

📊 Tests de Performance

Test 1 : Temps de Chargement Initial

# Mesurer le temps de chargement de la page
curl -o /dev/null -s -w 'Total: %{time_total}s\n' http://localhost:8087/
# Attendu: < 1 seconde

Test 2 : Temps de Réponse API

# Stats endpoint
time curl -s http://localhost:8007/api/stats > /dev/null
# Attendu: < 200ms

# Devices endpoint
time curl -s http://localhost:8007/api/devices?page_size=50 > /dev/null
# Attendu: < 500ms

Test 3 : Recherche avec Beaucoup de Devices

  1. Insérer 100+ devices dans la base (script de test)
  2. Ouvrir http://localhost:8087/
  3. Taper dans la barre de recherche
  4. Vérifier que le filtrage est instantané (< 100ms ressenti)
  5. Vérifier qu'il n'y a pas de lag

🐛 Tests de Régression

Test 1 : Fonctionnalités Existantes

  • Dashboard affiche les stats correctement
  • Tableau des devices affiche tous les devices
  • Scores sont affichés avec les bonnes couleurs
  • Navigation entre pages fonctionne
  • Liens "Voir" dans le tableau fonctionnent
  • Page device_detail fonctionne

Test 2 : Style Monokai

  • Thème sombre est appliqué
  • Couleurs sont cohérentes
  • Badges de scores ont les bonnes couleurs
  • Pas de régression visuelle

Checklist Finale

Backend

  • /api/health fonctionne
  • /api/stats fonctionne (Fix Bug #2)
  • /api/devices fonctionne
  • Validation des scores rejette les valeurs invalides (Fix Bug #4)
  • Timestamp updated_at se met à jour (Fix Bug #1)
  • Aucune erreur dans les logs backend

Frontend

  • Barre de recherche présente et fonctionne
  • Bouton "🔄 Actualiser" présent et fonctionne
  • Horodatage s'affiche et se met à jour
  • Bouton "Effacer" fonctionne
  • Erreurs affichent un bouton "🔄 Réessayer" (Fix Bug #3)
  • Protection anti-spam fonctionne
  • Auto-refresh fonctionne (30s)
  • Aucune erreur dans la console du navigateur

Documentation

  • CHANGELOG_2025-12-13.md créé
  • BUGFIXES_2025-12-13.md créé
  • FRONTEND_IMPROVEMENTS_2025-12-13.md créé
  • QUICKTEST.md créé (ce fichier)

🎉 Validation Finale

Si tous les tests ci-dessus passent :

echo "✅ Linux BenchTools v1.1.0 - PRODUCTION READY"

Si des tests échouent :

echo "❌ Des problèmes ont été détectés. Vérifier les logs."
docker logs linux_benchtools_backend --tail 100
docker logs linux_benchtools_frontend --tail 100

📞 Support

En cas de problème :

  1. Vérifier les logs : docker logs linux_benchtools_backend --tail 100
  2. Vérifier la console du navigateur (F12)
  3. Consulter la documentation :

Version testée : 1.1.0 Date : 13 décembre 2025 Status : Prêt pour tests