JMeter Fundamentals

From Training Material
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

What is JMeter

  • Open Source Project (released March 2001)
  • Created for Automated Performance testing saves time and money
  • Functional (though it is not the best tool, Regression and Load testing from
  • JMeter files are simple XML
  • Strong community
  • Constant updates and improvements
  • http://jmeter.apache.org/

What can you test in JMeter

  • JMeter tests all kind of application (not only Java)
    • Web Application
    • SOAP Web Services, REST, XML-RPC
    • JAR files
    • LDAP
    • Databases (via JDBC)
    • JMS
    • SMTP
    • FTP

Installing JMeter

Windows

Linux

  • apt-get install jmeter
  • run jmeter
  • If you want to have the newest version download it from the jmeter site

JMeter and Logs

  • JMeter does not use pop-ups
  • All errors and status is spewed out into a log file
  • Log file is always located in the directory the jmeter command was invoked

Running JMeter Tests in Windows

GUI

  • jmeterw.cmd - run JMeter in GUI using javaw (no terminal window)
  • jmeter.bat - run JMeter in GUI mode
  • jmeter-t.cmd - drop a JMX file on this to load it in GUI mode (t for Test)

CLI (Non GUI)

  • jmeter-n.cmd - drop a JMX file on this to run a non-GUI test (n for non-GUI)
  • jmeter-n-r.cmd - drop a JMX file on this to run a non-GUI test remotely
  • jmeter-server.bat - start JMeter in server mode
  • shutdown.cmd - Run the Shutdown client to stop a non-GUI instance gracefully
  • stoptest.cmd - Run the Shutdown client to stop a non-GUI instance abruptly

Note: the special name LAST can be used with jmeter-n.cmd, jmeter-t.cmd and jmeter-n-r.cmd and means the last test plan that was run interactively.

Running JMeter Tests in Unix

  • jmeter - run JMeter in GUI (JVM options specified)
  • jmeter.sh - very basic JMeter script with no JVM options specified.
  • jmeter-server - start JMeter in server mode
  • shutdown.sh - Run the Shutdown client to stop a non-GUI instance gracefully
  • stoptest.sh - Run the Shutdown client to stop a non-GUI instance abruptly

The Elements of a JMeter Test Plan

  • Test Plan and WorkBench
  • Thread Group
  • Samplers
  • Listeners
  • Assertions
  • Cookie Controller
  • HTTP Defaults
  • HTTP Headers Defaults

Test Plan vs WorkBench

  • Test Plan is saved and where can run the script
  • WorkBench is not saved with the Test Plan

Thread Group

  • a group of instructions or actions representing one “actor” using your application
  • always process instructions within them in chronological order
  • allow you to specify simultaneous testing scenarios

Samplers

  • Only within a Thread Group
  • Samplers perform the actual work of JMeter
  • Each sampler (except Test Action) generates one or more sample results
  • The sample results can be viewed in listeners

Listeners

  • Report back test results to you (in GUI or save them to a file)
  • Listeners can work real time or use saved results

Assertions

  • These are criteria you can set which the test must meet in order to pass
  • E.g. Results of a samplers should not contain "Critical Error" phrase

Simple Controles

TODO Description TODO Screen shot

Creating Simple Test Plan

  • Create a Thread Group
  • Create a Sampler hitting localhost root page
  • Run the test
  • Check the log files
  • Add the View Results Tree Listener and analyse the result

TODO: Put a screenshot here and jmx file

Running the Test Plan

  • Top Right Corner of the GUI will show e.g. 20/40
  • 40 is the total number of concurrent threads
  • 20 is the number of concurrent threads currently running

TODO: Put a screenshot here

Recording Scenario

  • Create a Proxy Server
  • Configure Your Browser
  • Use "1st Sample only"
  • Start Recording
  • Rename Samples are you record

Using different options of Proxy Server

TODO

Timers

  • Specify a delay before an action (usually sampler) can occur
  • Times should mimic human (or system) waiting time
  • The best idea is to use logs to determine the distribution and distribution parameters of the waiting time
  • Timers can be put in scope
  • If two timers are put in the same level, the execution time add up

Saving Results

  • Save results to a file
  • Use another instance of JMeter to analyse results
  • Saving Errors Only
  • Saving Full Responses for one sample or group of samples

JMeter - Simple Data Writer.png JMeter - Results In Separate Instance.png

Biscuits manager

  • Try to record the scenario where user:
    • logs
    • browses the front page
    • logs out
  • Play the scenario
  • Check wether the user really was logged in

Assertions

  • Create an assertion which checks wether user is really logged in
  • Apply the assertion to all of the samples

Testing different Browsers

  • HTTP Headers
  • HTTP Headers defaults

Switching Servers

  • HTTP Defaults


Functional Testing

  • Run Thread Groups consecutively (one group at a time)

JMeter Running Threads Consecutively.png

Reusing Elements

  • Merging (Merge Proxy Server)
  • Module Controller
  • Include Controller (don't use it)

Variables

  • Config Elements > User Defined Variables
  • ${VARIABLENAME}

Variables from command line

HOST             ${__P(host,www.example.com)}
THREADS          ${__P(threads,10)}
LOOPS            ${__P(loops,20)}
jmeter ... -Jhost=www3.example.org -Jloops=13

 jmeter-n "Test Plan1.jmx" -JCNT=10

Variable Substitution During Recording

  • Setup a variable USER and set it to admin
  • Login as an admin
  • Look into the recorded samples

Dynamic Variables

  • Pre Processors > User Parameters
  • CSV

Running Test Periodically

  • Run Test From Command Line
  • ./jmeter -n -t TestPlan.jmx -j /dev/console
  • JTL Report
  • Creating User Report

Extractors

  • Extractors allows you to save part of response in a variable for the future use
  • Common Uses
    • Security Tokens
    • Dynamic data creation

Extractors Examples

Text in HTML:

name="file" value="readme.txt"

RegExp:

name="file" value="(.+?)"
  • ( and ) - brackets enclose the portion of the match string to be returned
  • . - match any character
  • + - one or more times
  • ? - don't be greedy, i.e. stop when first match succeeds

Extractors Exercises

  • Record and run following sequence (remember about Cookie Manager)
  • User access the content (node/add)
  • User atrainer logs into the application
  • User access the content (node/add)
  • User logs out
  • User access the content (node/add)

Loops and Counters

  • Define a counter
  • Create a page with title "Tile 1", "Title 2".... "Title 10"
  • Run the script consecrative
  • Create a script which runs it in parallel (extra exercise)

Stress Testing

  • Ramp-up Time
  • Summary Report
  • Graph Summary

Understanding Statistics

JMeter Average Standard Devaition and Median.jpg