# Vegeta (logiciel)

Vegeta est un outil HTTP de test de charge écrit en Go, utilisable en tant que commande dans une interface en ligne de commande ou comme bibliothèque logicielle. Le programme effectue des tests sur le comportement d'une application HTTP lorsque plusieurs utilisateurs s'y connectent en même temps par le biais d'un chargement en arrière-plan de requêtes GET. Vegeta est utilisé pour générer un nombre constant de requêtes par seconde afin de savoir combien de temps un service peut maintenir une charge à son maximum avant que sa performance s'effondre.
En plus du test de charge préventif, le programme peut également être sollicité pour du shadow testing, une méthode d'essai où la fréquentation de la version live d'une application est dupliquée dans une version test. L'objectif est de déterminer le moyen de gérer la même charge de personnes connectées, sans porter préjudice à la version live de l'application. Ce processus est réalisé ainsi dans le but d'analyser la performance escomptée du serveur.
Vegeta est disponible à l'utilisation par des services d'hébergement Internet comme Scaleway pour utiliser des requêtes diverses et variées permettant d'effectuer un test de résistance sur des services de client HTTP. Il est aussi utilisé avec des services de plateformes dédiés au test de charge comme BlazeMeter.

## Utilisation

L'utilisation de la ligne de commande correspond à vegeta [global flags] <command> [command flags]. Les trois options principales sont -cpus int, qui spécifie le nombre de processeurs à utiliser, -profile string, qui active le profilage, et -version, qui affiche la version logicielle avant de quitter le programme.
Les commandes disponibles sont attack, encode, plot, et report, chacune possédant leurs propres options de commande. L'entrée attack et la sortie report peuvent être toutes deux réalisées dans un format optionnel json lorsqu'elles sont spécifiées avec l'option appropriée.
Vegeta peut spécifier des URL comme cibles dans un fichier séparé avec des en-têtes et des requêtes optionnelles, des options pouvant être saisies sur la ligne de commande par la suite.

### Exemple

Par exemple, une utilisation possible serait de taper "GET http://localhost/" | vegeta attack -duration=5s | tee results.bin | vegeta report dans la ligne de commande. Cet exemple utilise la commande echo pour obtenir la sortie GET http://localhost/, puis exécute la commande attack pour cette dernière pendant cinq secondes. Après cela, la commande tee est sollicitée dans le but d'obtenir les résultats dans un fichier appelé results.bin avant de lancer la commande report afin d'afficher la sortie des résultats d'attack.

## Sources

* ↑ « Release 12.12.0 », 29 juillet 2024 (consulté le 8 août 2024)
* 1 2 3 « Load Testing with Vegeta » [archive du 16 octobre 2021], sur Scaleway, 26 mai 2022 (consulté le 27 août 2022)
* ↑ Andreas Eiermann, Mathias Renner, Marcel Großmann et Udo R. Krieger, Innovations for community services : 17th International Conference, I4CS 2017, Darmstadt, Germany, June 26-28, 2017, Proceedings, Cham, Switzerland, 2017, 83 p. (ISBN 978-3-319-60447-3, OCLC 990058133, lire en ligne), « On a Fog Computing Platform Built on ARM Architectures »
* ↑ Brajesh De, API management : an architect's guide to developing and managing APIs for your organization, New York, 2017, First éd., 161 p. (ISBN 978-1-4842-1305-6, OCLC 978273106, lire en ligne [archive du 28 août 2022])
* ↑ Nat Welch, Real-world SRE : the survival guide for responding to a system outage and maximizing uptime, Birmingham, UK, Packt, 2018, 137 p. (ISBN 978-1-78862-644-6, OCLC 1056157467, lire en ligne)
* ↑ « Application deployment and testing strategies », sur Google Cloud, 5 février 2020 (consulté le 28 août 2022)
* ↑ Lin Qi, Zhihong Qiao, Aowei Zhang, Hui Qi, Weiwu Ren, Xiaoqiang Di et Rui Wang, Mobile wireless middleware, operating systems and applications : 9th EAI International Conference, MOBILWARE 2020, Hohhot, China, July 11, 2020, Proceedings, Cham, Switzerland, 2020, 70 p. (ISBN 978-3-030-62205-3, OCLC 1225562925, lire en ligne [archive du 28 août 2022]), « Performance Analysis of QUIC-UDP Protocol Under High Load »
* ↑ Sorin Dumitrescu, « Black Friday. 0 downtime. How Bunnyshell & Vegeta & UiPath can help » [archive du 28 août 2022], sur BunnyShell.com, 10 juillet 2020 (consulté le 27 août 2022)
* ↑ Alla Levental, « Vegeta Load Testing » [archive du 28 août 2022], sur BlazeMeter, 26 août 2021 (consulté le 27 août 2022)
* 1 2 3 Tomás Senart, « GitHub - tsenart/vegeta: HTTP load testing tool and library. It's over 9000! » [archive du 11 août 2022], sur GitHub, 11 octobre 2020 (consulté le 27 août 2022).
* ↑ Paul Osman, Microservices development cookbook : design and build independently deployable, modular services, Birmingham, UK, Packt, 2018, 210 p. (ISBN 978-1-78847-636-2, OCLC 1055162428, lire en ligne [archive du 28 août 2022])