anchor.diff:  -----
   
   
  +JMeter - Components
  +-------------------
  +
  +
  +JMeter - Controllers
  +--------------------
  +
  +[horizontal]
  +Once Only Controller:: executed only at the first iteration
  +Loop Controller:: repeat n times (or forever) -> iterations
  +If Controller:: conditional
  +Switch Controller:: alternative
  +
  +NOTE: each Thread Group is an implicit Loop Controller at the same time
  +
  +
  +JMeter - Configuration elements
  +-------------------------------
  +
  +[horizontal]
  +User Defined Variables:: Defines a set of variables with fixed values.
  +CSV Data Set Config:: Defines variables that will change at each _iteration_.
  +HTTP Request Defaults:: predefine parts of the request, like host, port, protocol...
  +HTTP Cookie Manager:: automatic management of cookies
  +
  +
  +JMeter - Timers
  +---------------
  +
  +[horizontal]
  +Random Timers:: simulate end-user "think time"
  +Constant Throughput Timer:: "flat" throughput (but setpoint maybe changed at any time during execution...)
  +jp{nil}@{nil}gc - Throughput Shaping Timer:: variable throughput
  +BeanShell Timer:: explicit computing of the time
  +
  +[WARNING]
  +=====
  +Throughput timers may not work well in extreme conditions (very high or very low throughput).
  +
  +-> *BeanShell Timer* with your own logic
  +=====
  +
  +
  +JMeter - Samplers
  +-----------------
  +
  +[horizontal]
  +HTTP Request:: most often used
  +BeanShell Sampler:: e.g. when you need to use a specific SOAP client (cf. SOAP security)
  +JDBC Request:: calling a DB
  +Debug Sampler:: generate a "dummy" sample with all variables and properties values, very usefull for debugging
  +
  +
  +JMeter - Assertions
  +-------------------
  +
  +* Listeners will collect information about each sampler execution
  +* Each listener is also able to ouput results to a file (CSV or XML format)
  +* When generating statistics, listeners will group samples that have the same "label"
  +  (independantly from the originating sampler)
  +* Useful link for testing regular expressions: https://regex101.com
  +
  +[horizontal]
  +Response Assertion:: verify any part of the HTTP response, including the body
  +XPath Assertion:: sometimes more precise, especially for SOAP
  +BeanShell Assertion:: for more complex verifications
  +
  +
  +JMeter - Listeners
  +------------------
  +
  +_____
  +[horizontal]
  +Aggregate Report:: give a few statistics on each sampler -> ideal for saving the results (enter a filename)
  +View Results Tree:: all request and all responses, very usefull for debugging, but huge memory impact => always remember to disable!
  +jp{nil}@{nil}gc - Active Threads Over Time:: threads count over time, usefull for debugging to verify that the load profile is correct
  +jp{nil}@{nil}gc - Transactions per Second:: throuhgput over time, usefull for debugging to verify that the load profile is correct
  +_____
  +
  +
  +* In GUI mode, Listeners are able to re-read a saved results file and re-draw / re-calculte the stats
  +
  +
   JMeter - Scenario recording
   ---------------------------
   
  
positive.code: * distributed (servers (slave) + one controller)
  
  
  JMeter - Components
  -------------------
  
  [horizontal]
  image:jmeter-images/beaker.gif[height=28] Test Plan:: the whole
  
negative.code: // Standard APi testing (p43-44) + Gattling, LoadRunner ...
  * <<_rtri_jmeter,JMeter>>
  // Jmeter ... (pp45...83, 89...97)
  ** <<_jmeter_structure,Structure>>
  ** <<_jmeter_lifecycle,Lifecycle>>
  ** <<_jmeter_components,Components>>
  // Threading model (p84-89)
  * <<_randomization,Randomization>>
  // ! _random_ parameters
  // ! randomize _before_ run
  // randomize timers
  //** duration
  // statistical representativeness
  //** caching!
  // p27-28
  //** https://regex101.com
  * analysing/graphing/reporting...
  * Mock-Ups
  // (p98-99)
  
  _(link:../0-extra/1-training_plan.html#_presentations[back to course plan])_
  
  