Historiquement, la performance des logiciels était vérifiée après la partie fonctionnelle principale - les développeurs exécutaient soit des scripts manuellement, soit collectaient des mesures à l'aide d'outils comme JMeter. Avec la transition massive vers DevOps et CI/CD, le besoin d'automatiser ces processus et d'obtenir des métriques à chaque étape de livraison a émergé.
Le problème est compliqué par le fait que l'automatisation des tests de charge n'est pas simplement une exécution de tests prêts, mais un réglage fin des scénarios de charge, la reproduction du profil des utilisateurs, l'émulation de réseaux réels, la prise en compte de la latence et les limitations du matériel de test.
La solution moderne consiste à intégrer des outils spécialisés (par exemple, Gatling, Locust, k6), à créer des scénarios avec paramétrage des profils utilisateurs, à intégrer les tests de performance dans les pipelines CI, et à automatiser la collecte et l'analyse des métriques, avec des alertes en cas de dégradation des performances.
Caractéristiques clés :
Est-il vrai que l'automatisation des "testeurs de charge" n'est autorisée que en production ?
Non. Les tests automatiques de performance et de stress peuvent être réalisés sur une application ou une plateforme dédiée pour ne pas violer les SLA. Leur automatisation est au contraire préférable avant la mise en production.
Si les tests automatisés de charge passent, peut-on être sûr de l'expérience utilisateur réelle ?
Non - les tests automatisés ne fournissent qu'une image moyennée. Le comportement des utilisateurs réels peut différer en raison des conditions réseau, des plateformes utilisées et d'autres facteurs difficiles à émuler exactement.
Faut-il se concentrer uniquement sur la moyenne des temps de réponse ?
Non. Il est extrêmement important de prendre en compte le percentile (par exemple, 95ème, 99ème), car les moyennes peuvent être biaisées par des valeurs extrêmes, et les valeurs seuils influencent souvent l'UX.
Une entreprise a mis en place des tests de performance uniquement pour l'entrée dans le système : des scripts exécutaient 1000 connexions, analysaient le temps de réponse moyen, pensaient que le problème était résolu. Lors du premier lancement réel, il y avait de nombreux time-outs - il a été découvert que certaines opérations métiers "lourdes" n'avaient pas été prises en compte, l'API tombait sous charge.
Avantages :
Inconvénients :
Dans une autre équipe, tout le profil de charge était basé sur la surveillance de la production, des scripts distincts émulaient l'activité de pointe depuis différents appareils et réseaux. Tous les résultats étaient automatiquement comparés à une référence, avec des écarts supérieurs à 5 % générant une alerte et une suspension de la publication.
Avantages :
Inconvénients :