Droits
Préface
Présentation des auteurs
- Antonio Gomes Rodrigues
- Bruno Demion (Milamber)
- Philippe Mouawad (Philippe M.)
Démarrer rapidement avec JMeter
- Quelles étapes ?
- Préparer son arbre d’enregistrement JMeter
- Configurer son navigateur
- Enregistrer sa session modèle
- Valider son script avec un seul utilisateur
- Paramétrer son test de charge et lancer le tir
- Lancer son test de charge et l’analyser
Présentation de JMeter
- Présentation de JMeter
- Types de tests de charge supportés
- Protocoles de test supportés
- Rapports de test
Concevoir un scénario de test
- Introduction
- Warning
- Type de test de charge
- Test de performance (Performance/Load Test)
- Test de stress (Stress Test)
- Test d’endurance (Soak/Endurance Test)
- Test de robustesse (Failover/Resilience Test)
- Spike Test
- Autres
- Modèle de charge
- Nombre de VU concurrents fixe (Closed model)
- Contrôle du nombre de transactions
- Contrôle du débit d’arrivée des VU (Open model)
- Décomposition d’un scénario de test
- Ramp Up ou montée en charge
- Plateau
- Ramp Down ou descente de charge
- Exemple : test de charge par palier
- Identifier les scénarii « métiers » à scripter
- Fréquents
- Vitaux
- Risqués
- Combien d’utilisateurs virtuels pour son test de charge ?
- Paramètres à prendre en compte lors de la réalisation d’un scénario
- Varier les entrées utilisateurs
- Réutiliser les mêmes valeurs
- Varier le type des utilisateurs
- Varier et ajuster les temps de réflexion
- Ajuster la durée de la montée en charge (Ramp up)
- Ajuster la durée du test
- Gestion des erreurs
- Type de connexion utilisateur
- Taille des scénarii
- Point de rendez-vous
- Gestion des cookies
- Gestion du cache
- Conclusion
Préparer les environnements de tests (injecteurs et système testé)
- Introduction
- Préparation des injecteurs
- Pas d’injecteurs sur les mêmes serveurs que le système testé
- Calibrage de son test
- Superviser l’injection
- IP Spoofing
- Utiliser la dernière version
- Configuration mémoire de JMeter
- Éviter de tirer derrière un proxy
- Préparation du système testé
- Un environnement testé
- Un environnement cohérent avec la cible
- Jeux de données
- Prendre en compte les appels à un service extérieur
- Désactiver les systèmes de protection
- Environnement isolé
- Gestion des licences
- Supervision
- Conclusion
Gagner en productivité lors de la création d’un script
- Introduction
- Bonnes pratiques lors de l’enregistrement
- Ne pas hésitez à utiliser l’élément HTTP(S) Test Script Recorder
- BlazeMeter Chrome Extension
- Pré remplir HTTP Request Defaults avant l’enregistrement du script
- Ressources statiques
- Mettre des timeouts
- Choix d’une nomenclature pour le nom des transactions/requêtes
- Assertion générale
- Mutualiser des morceaux de script
- HTTPS
- Raccourci clavier
- Debugger un script
- Utilisation de l’élément View Results Tree
- Capture les requêtes en erreur
- Debug Sampler
- jp@gc - Dummy Sampler
- Log Viewer
- BlazeMeter Step-by-step Debugger
- À l’ancienne dans la console
- Utiliser un outil tiers
- Finaliser un script
- Changer le label d’une transaction en fonction d’un paramètre
- Partager une variable entre différents Thread Groups
- Exploiter au mieux les fichiers CSV
- Marquer une réponse comme étant une erreur
- Utilisation de l’élément Regular Expression Extractor sur un contenu avec des espaces et plusieurs lignes
- Exécuter une action en fonction du statut de la précédente
- Ajouter des entêtes à nos requêtes HTTP
- Attendre avec l’élément While Controller
- Le bon Extractor au bon moment
- Manipuler les cookies
- Conclusion
Tester un site web
- Un peu de théorie
- Mise en place avec JMeter
- Méthodologie
- Mise en pratique avec JMeter
- Exemple 1 : Simuler une charge réaliste
- Exemple 2 : Tests techniques avec Byteman
- Exemple 3 : Tests techniques avec JProfiler
- Exemple 4 : Passer des captcha avec une Requête Java
- Conclusion
Tester les web-services
- Un peu de théorie
- Web-services WS-*
- Web-services REST (REpresentational State Transfer)
- Mise en place avec JMeter
- Méthodologie
- Mise en pratique avec JMeter
- Web-service SOAP/XML-RPC
- Web-service REST : Forum de discussion REST
- Web-service REST : Customer Database
- Conclusion
Tester un serveur de bases de données
- Un peu de théorie
- Mise en place avec JMeter
- Méthodologie
- Mise en pratique avec JMeter
- Exemple 1 : test de charge d’une base de données
- Exemple 2 : Preuve de faisabilité
- Exemple 3 : ETL
- Conclusion
Tester une messagerie orientée message via JMS
- Un peu de théorie
- Messages asynchrones
- Découplage
- Back pressure
- Modèles de communication
- Composition d’un message
- Mise en place avec JMeter
- Installation des librairies du MOM
- JMS Point-to-Point
- Publish/Subscribe
- Méthodologie
- Mise en pratique avec JMeter
- Exemple 1 : Test de la configuration d’un serveur MOM avec du JMS Point à point
- Exemple 2 : Tester les performances de notre consumer avec du JMS Publish/Subscribe
- Exemple 3 : Test de la configuration d’un serveur MOM avec du JMS Publish/Subscribe
- Exemple 4 : Tester n’importe quel MOM
- Conclusion
Exécuter un test de charge
- Introduction
- Méthodologie
- Tester son script avec l’interface graphique
- Exécuter son test en ligne de commande
- Exécuter son test en ligne de commande avec Taurus
- Exécuter son test à partir d’Apache Ant
- Exécuter son test à partir d’Apache Maven
- Exécuter son test depuis Jenkins
- Bonnes pratiques
- Avoir des injecteurs bien préparés
- Générer les rapports à la fin du test
- Bonne utilisation de l’élément Extracteur Expression régulière
- Bonne utilisation des Assertions
- Bonne utilisation de JSR223 Sampler
- Conclusion
Voir ses résultats
- Introduction
- Visualiser ses résultats avec un récepteur « tableau »
- Le récepteur View Results in Table
- Le récepteur Arbre de résultats
- Le récepteur Summary Report
- Le récepteur Aggregate Report
- Visualiser ses résultats avec un récepteur « graphique »
- Visualiser ses résultats avec le récepteur Backend Listener
- Visualiser ses résultats en fin de tir à l’aide du Report Dashboard
- Particularités de la visualisation de ses résultats pour un tir distribué
- Configuration du Plan
- Configuration du tir
- Visualiser ses résultats avec un logiciel tiers
- Conclusion
JMeter et DevOps
- Introduction
- Exemple 1 : Intégration à Jenkins avec Apache Ant
- Exemple 2 : Intégration à Jenkins avec Apache Maven
- Exemple 3 : Test de non régression de la consommation mémoire avec EJ JProfiler
- Exemple 4 : Recherche de fuite mémoire lors d’un test d’endurance avec EJ JProfiler
- Exemple 5 : Test de non régression des API Web avec Dynatrace APM
- Exemple 6 : Récupération des requêtes SQL exécutées lors d’un test de charge avec YourKit Java Profiler
- Exemple 7 : Analyse du fichier de log du Ramasse Miettes (GC) avec GCViewer
- Conclusion
L’écosystème d’Apache JMeter
- Introduction
- Plugin polyvalent
- JMeter Plugins
- JMeter dans le cloud
- BlazeMeter
- Tricentis Flood
- Redline 13
- OctoPerf (anciennement Jellly.IO)
- JMeter EC2
- DevOps
- Aide à la supervision et au diagnostic
- Dynatrace APM
- Loadosophia.org
- D’autres protocoles
- UbikLoadPack
- DSL (Domain specific language)
- Ruby based DSL for JMeter
- Conclusion