INTRODUCTION -----------------------------------------------------------

	Créé par Stefano Mazzocchi de la Apache Software Foundation

	$ java -h
	S'il ne répond rien, installer machine virtuelle Java

	Télécharger JMeter depuis jmeter.apache.org
	aller dans le dossier bin, lancer jmeter.bat

FROM COMMAND LINE ------------------------------------------------------
	Dans une console
	jmeter -n -t ../../projet.jmx -l ../../test.csv

pour voir l'état d'avancement dans le result tree
	Utiliser des Transaction controler(clic droit thread group) entre les Simple controlers.

NON GUI FROM COMMAND LINE ----------------------------------------------

	Créer le projet en GUI.
	Ajouter un thread-group
	Ajouter un sampler HTTP request pour chaque requête et leur donner u nom
			http://163.172.31.206:8180/petclinic/owners/264
			http://163.172.31.206:8180/petclinic/owners/264/pets/65/edit
	Ajouter un Assertions/Response Assertion, Response code EQUALS 200
	Ajouter un Listener/View Results tree
	Enregistrer, lancer
	Dans groupthread, mettre 20 threads (users) 

NAVIGATEURS ------------------------------------------------------------

	Travailler en mode fenêtre navigation privée

	F12
		Chrome : ne sélectionner que XHR doc other
		firefox: HTML XHR et autre

TEST RECORDER ----------------------------------------------------------
	https://www.youtube.com/watch?v=amEHuq8auTU&index=21&list=PLhW3qG5bs-L-zox1h3eIL7CZh5zJmci4c
	http://jmeter.apache.org/usermanual/component_reference.html#HTTP(S)_Test_Script_Recorder
	clic droit sur projet/add/non-test elements/HTTP test script recorder. Mettre port sur 8181.
	clic droit sur group thread/logic controller/recording controler
	configurer le navigateur web pour utiliser un proxy localhost:8181
	Test script recorder:cliquer sur start: il crée le certificat. Si HTTPS installer le certificat
	naviguer sur le web: le recorder enregistre
	stop

ASSERTIONS -------------------------------------------------------------
	https://www.blazemeter.com/blog/how-use-jmeter-assertions-three-easy-steps

	Assertion					CPU/Memory Usage	Notes
	--------------------------------------------------------------------
	Response Assertion			Moderate			Regular Expressions
	Duration Assertion			Low	
	Size Assertion				Low	
	XML Assertion				High				Builds XML DOM Documents
	Beanshell Assertion			Variable			Depends on the script logic
	MD5Hex Assertion			Low	
	HTML Assertion				High				Parses the HTML Response
	XPath Assertion				High				Builds XML DOM Documents
	XML Schema Assertion		High				Builds XML DOM Documents
	JSR223 Assertion			Variable			Depends on the script logic
	Compare Assertion			High				Parses responses and compares them
	SMIME Assertion				Moderate	
	Json Assertion				High				Parses the Json document

SERVICE WEB ------------------------------------------------------------

	https://samples.openweathermap.org/data/2.5/forecast?q=marseille&appid=b1b15e88fa797225412429c1c50c122a1

GENERER RAPPORT HTML ---------------------------------------------------
	la doc: https://jmeter.apache.org/usermanual/generating-dashboard.html
	https://www.youtube.com/watch?v=aHV5IizW7u4&list=PLhW3qG5bs-L-zox1h3eIL7CZh5zJmci4c&index=11

	Dans une console
	jmeter -n -t projet.jmx -l test.csv -e -o "output folder"
	jmeter -n -t ../../Report-From-Cmd.jmx -l ../../test.csv -e -o ../../html

GENERER UN RAPPORT DEPUIS UN FICHIER CSV -------------------------------
	jmeter -g "xxx.csv" -o "output folder"
	jmeter -g "../../test.csv" -o "../../html2"

PLUGINS ----------------------------------------------------------------
	télécharger le jar https://jmeter-plugins.org/wiki/PluginsManager/
	et le mettre dans jmeter/libs/ext
	ensuite il est visible dans le menu options

HOW TO READ DATA FROM CSV TEMPLATE FILE --------------------------------
	Créer un CSV: 1re ligne c'est les noms des paires nom=valeur du querystring
	city		;appid	; country
	Marseille	;fsdfds	; France
	Moscou		;fsdfds	; Russie

	Add/Config Element/CSV data set config
		renseigner chemin du csv
	Puis dans le HTTP request remplacer par ${city} ${appid}

VARIABLES --------------------------------------------------------------
	matching is case-sensitive

	VARIABLES GLOBALES
		Clic droit sur le projet: on peut ajouter des variables globales au projet
	VARIABLES LOCALES
		Thread group/Config element/User defined variables fait la même chose,
			mais la portée est différente
			et ces variables override les autreS

	https://jmeter.apache.org/usermanual/functions.html
	voir aussi Menu Options/Menu helper dialog
	${__threadNum}  numéro de thread
	${__intSum(2,3)}  affichera 5
	${__intSum(2,3, result)}  result vaudra 5. Afficher avec ${result}
	${__intSum(2,result)} affichera 7

	Variables are local to a thread;
	properties are common to all threads, and need to be referenced using the __P or __property function.
		${__P(tir,1)}
		propriété LOOPS: ${__P(loops,10))}

REGULAR EXPRESSION EXTRACTOR -------------------------------------------
	Reference name: nom de la variable dans laquelle sera stockée le résultat
	Reg exp: name="Token" value="(.+?)"
	Template: $0$

	HTML
		<h2>Welcome user2</h2>
		session id: 83259d419d01ded3130393bbb826cd12
assertion connecté : matches <h2>Welcome (.+?)</h2> extraction sid : session id: (.+?)
JSON EXTRACTOR --------------------------------------------------------- https://www.testingexcellence.com/parse-json-response-using-jmeters-json-extractor/ Test Plan –> Add –> Post Processors –> JSON Extractor CREER UN TEMPLATE------------------------------------------------------- enregistrer un projet l'enregistrer dans bin/templates éditer templates.xml pour ajouter le nouveau template UPLOAD DE FICHIER ------------------------------------------------------ tinyupload.com permet d'uploader une image créer projet HTTP request Dans l'onglet fileupload, cliquer sur add, browse et choisir le fichier à uploader, il veut un "parameter name" donc inspecter le bouton input type="file" sur le formulaire et mettre "uploaded_file" mettre aussi le type mime Ajouter un listener/ results tree et lecture FILE DOWNLOAD ---------------------------------------------------------- Créer group thread et HTTP request. Renseigner serveur, port, ressource ajouter un view results tree tester add listener/save response to a file. filename prefix: ../../image im mettra l'extension HOW TO DEBUG ----------------------------------------------------------- projet HTP request avec result tree (obligatoire) add/sampler/debug sampler RECORD LOGIN TEST ------------------------------------------------------ add plugin blazemeter extension to chrome lancer enregistrement se connecter stopper enregistrement et enregistrer jmx si pas jmx: chercher dans google blazemeter converter http://converter.blazemeter.com/