Si vous voulez des exemples plus complet je vous laisse lire le wiki du projet.
Comment installer Gatling ?
Plusieurs pre-requis pour vous faciliter la vie avec Gatling
mvn clean install
Si vous utilisez un proxy pour vous connecter à Internet vous pouvez comme dans la capture d'écran ci dessus renseigner les informations liées. Une fois que vous avez renseigné les informations de connection, le nom de votre classe de test vous pouvez passer à l'étape suivante en cliquant sur le bouton Start en bas à droite. L’étape suivante consiste à paramétrer votre navigateur web pour appeler le recorder
Par exemple dans Firefox vous pouvez le faire à partir des préférences
Il ne reste plus qu'à commencer l'enregistrement de votre scénario en tapant l'URL de votre application à tester. Pour mon exemple je suis allez sur mon site http://javamind-fr.blogspot.fr et j'ai lancé une première recherche sur le mot clé java puis une deuxième sur gatling.
Comment installer Gatling ?
Plusieurs pre-requis pour vous faciliter la vie avec Gatling
- une version de Java. Il faut savoir que Gatling est écrit en Java 6 pour la version 1.X et Java 7 pour la version 2.
- une version de maven pour pouvoir utiliser l’archetype maven (version >= 3.0.4 dans mon exemple)
- votre IDE favori avec un plugin Scala (voir IntelliJ, Netbeans, Eclipse)
- l’archive Gatling disponible sous https://github.com/excilys/gatling/wiki/Downloads que vous devrez dézipper dans un répertoire de travail (sans espace dans le nom si possible). Je nommerai ce répertoire [GATLING_HOME] dans le reste de cet article
Générer un projet de tests
L’archive Gatling donne les outils pour exécuter les scénario de tests et générer des rapports d’exécution mais vous devez écrire ces scénarios… en Scala… Agggggghhhhhh mais je ne connais pas Scala…
Si c’est la même chose pour vous, pas de panique car un archetype Maven permet de créer tous les éléments nécessaires pour lancer un Recorder permettant d’écouter les différentes requêtes HTTP et générer des scénarios de tests.
Placez vous dans votre répertoire de projets et lancez la commande suivante pour créer un projet de tests nommé example
J’utilise l’archetype pour Gatling 1.5.2. La liste de tous ceux disponibles est présente à l’adresse suivante.
Vous allez devoir adapter votre fichier de configuration de maven (settings.xml) pour accéder aux archetypes et aux dépendances liées mis à disposition sur le repository Maven Gatling.
L’archive Gatling donne les outils pour exécuter les scénario de tests et générer des rapports d’exécution mais vous devez écrire ces scénarios… en Scala… Agggggghhhhhh mais je ne connais pas Scala…
Si c’est la même chose pour vous, pas de panique car un archetype Maven permet de créer tous les éléments nécessaires pour lancer un Recorder permettant d’écouter les différentes requêtes HTTP et générer des scénarios de tests.
Placez vous dans votre répertoire de projets et lancez la commande suivante pour créer un projet de tests nommé example
mvn archetype:generate -DinteractiveMode=fals -DgroupId=com.javamind.gatling -DartifactId=example -Dversion=1.0 -DpackageName=com.javamind.gatling -DarchetypeGroupId=com.excilys.ebi.gatling.highcharts -DarchetypeArtifactId=gatling-highcharts-maven-archetype -DarchetypeVersion=1.5.2
J’utilise l’archetype pour Gatling 1.5.2. La liste de tous ceux disponibles est présente à l’adresse suivante.
Vous allez devoir adapter votre fichier de configuration de maven (settings.xml) pour accéder aux archetypes et aux dépendances liées mis à disposition sur le repository Maven Gatling.
<repository> <id>gatling</id> <name>Excilys Repository</name> <url>http://repository.excilys.com/content/groups/public</url> </repository>A la suite de la génération du projet vérifiez qu’il se construit en lançant la commande
mvn clean install
Vous pouvez maintenant ouvrir le projet de tests dans votre IDE
Génération d’un scénario de tests
Prenons un exemple simple avec l’ouverture d’une page web, la saisie d’une valeur et sa soumission. L'exemple est assez simple mais mon but n'est pas de rentrer dans les méandres du produit.
Nous allons enregistrer un scénario en lançant la classe Recorder située dans le répertoire src/test/scala qui permet d’exécuter le module Gatling Recorder.
Prenons un exemple simple avec l’ouverture d’une page web, la saisie d’une valeur et sa soumission. L'exemple est assez simple mais mon but n'est pas de rentrer dans les méandres du produit.
Nous allons enregistrer un scénario en lançant la classe Recorder située dans le répertoire src/test/scala qui permet d’exécuter le module Gatling Recorder.
Si vous utilisez un proxy pour vous connecter à Internet vous pouvez comme dans la capture d'écran ci dessus renseigner les informations liées. Une fois que vous avez renseigné les informations de connection, le nom de votre classe de test vous pouvez passer à l'étape suivante en cliquant sur le bouton Start en bas à droite. L’étape suivante consiste à paramétrer votre navigateur web pour appeler le recorder
Par exemple dans Firefox vous pouvez le faire à partir des préférences
Il ne reste plus qu'à commencer l'enregistrement de votre scénario en tapant l'URL de votre application à tester. Pour mon exemple je suis allez sur mon site http://javamind-fr.blogspot.fr et j'ai lancé une première recherche sur le mot clé java puis une deuxième sur gatling.
Nous avons maintenant notre premier scénario de tests. Pour ceux qui ont peur de Scala, il faut savoir que vous n'avez pas besoin de connaître le langage pour la plupart des cas. En fait Gatling utilise Scala comme langage de script ce qui lui permet d'exécuter les scénarios sans avoir à les compiler. Le DSL proposé est simple et bien documenté. L'avantage de passer par un langage de programmation est de bénéficier des outils offerts par les IDE (complétion, refactoring, validation....).
Revenons à notre scénario généré qui est un peu compliqué car tous les échanges avec le serveur ont été capturés : chargement des images, des feuilles de styles.... Nous allons faire un peu de ménage pour ne garder que le minimum
Exécuter le scénario
Il ne vous reste plus qu’à copier le fichier Scala généré dans le répertoire des scénarios Gatling [GATLING_HOME]/user-files/simulation
Revenons à notre scénario généré qui est un peu compliqué car tous les échanges avec le serveur ont été capturés : chargement des images, des feuilles de styles.... Nous allons faire un peu de ménage pour ne garder que le minimum
class JavamindSimulation extends Simulation { val httpConf = httpConfig .baseURL("http://safebrowsing-cache.google.com") .proxy("proxy.javamind.com", 8080).httpsPort(8080) .credentials("ehret_g", "MonPassword") .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") .acceptEncodingHeader("gzip, deflate") .acceptLanguageHeader("fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3") .connection("keep-alive") .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Firefox/24.0") val headers_1 = Map(
"Accept" -> """text/plain, */*; q=0.01""",
"If-Modified-Since" -> """Mon, 21 Oct 2013 18:09:36 GMT""", "If-None-Match" -> """"72026f1a-82bd-4541-8be7-a1cc784bf592"""", "Proxy-Authorization" -> """Basic ZzeezezTTTzpJb3JnYSswOA==""", "X-Requested-With" -> """XMLHttpRequest""" ) val headers_2 = Map( "If-Modified-Since" -> """Mon, 21 Oct 2013 18:09:36 GMT""", "If-None-Match" -> """"72026f1a-82bd-4541-8be7-a1cc784bf592"""", "Proxy-Authorization" -> """Basic ZzeezezTTTzpJb3JnYSswOA==""" ) val scn = scenario("Recherche article Javamind") .exec( http("ouverture blog") .get("http://javamind-fr.blogspot.fr/") .headers(headers_1) ) .pause(2000 milliseconds) .exec( http("Recherche article java") .get("http://javamind-fr.blogspot.fr/search") .headers(headers_2) .queryParam( """q""", """java""") ) .pause(2000 milliseconds) .exec( http("Recherche article gatling") .get("http://javamind-fr.blogspot.fr/search") .headers(headers_2) .queryParam( """q""", """gatling""") )
setUp(scn.users(1).protocolConfig(httpConf)) }Comme je le disais plus haut au delà du langage la seule chose qui nous intéresse ici est le DSL proposé. Nous avons à notre disposition un grand nombre de méthodes pour
- décrire les actions des utilisateurs (scenario) : exec, pause
- injecter des données dans votre scénario (feeder) : pas utilisé dans mon exemple mais utile par exemple pour utiliser des utilisateurs différents quand on simule des connections
- configurer le scénario (scenario configuration) : users
- définir les requête HTTP envoyées par le scénario (http action) : http, get, headers, queryParam
- vérifier les réponses (checks)
- configurer les appels HTTP (http configuration) : httpConfig, proxy, credentials...
- contrôler que le résultat correspond aux attentes (assertions)
Exécuter le scénario
Il ne vous reste plus qu’à copier le fichier Scala généré dans le répertoire des scénarios Gatling [GATLING_HOME]/user-files/simulation
Lancez ensuite [GATLING_HOME]/bin/gatling.bat. Gatling liste tous les scénarios disponibles. Vous devez choisir le numéro du scénario de test que vous voulez exécuter et définir un id d’exécution
Laissez la simulation s’exécuter.
Résultats des tests
Par défaut, Gatling ne propose pas de résultats en temps réel. Il existe cependant un plugin basé sur Graphite qui permet d’avoir des graphes en temps réel. Je ne parlerai ici que des rapports générés en fin d’exécution et disponible sous [GATLING_HOME]/user-files/simulation
Voici des captures d’écran de ces rapports d'exécution
L'exemple montré dans cet article est un peu simplet mais il a le mérite de montrer les différentes étapes pour en place un scénario de tests.
Aucun commentaire:
Enregistrer un commentaire
Remarque : Seul un membre de ce blog est autorisé à enregistrer un commentaire.