24
A CRUNCHY GUIDE

A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

  • Upload
    others

  • View
    38

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

A CRUNCHY GUIDE

Page 2: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

GET STARTED

1. http://jmeter.apache.org/download_jmeter.cgi

2. http://api.jmeter.ninja/template.jmx

3. bin\jmeter.bat –t template.jmx

Page 3: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

WHY JMETER

• OPENSOURCE - AN APACHE PROJECT

• LICENCES RESTRICTIONS WOULD BE BAD FOR

VOLUME TESTING AND AUTOMATION

• ACTIVE COMMUNITY @APACHEJMETER

• JMETER 3.1 JUST RELEASED SHORTLY AFTER 5TH

ADVERSARY OF JMETER 1.

• CONTINUES TO BE IN DEMAND

• SEE RIGHT

• SIMPLE TO USE

Page 4: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation
Page 5: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

JSON AVAILABLE

FYI, ALL XML EXERCISES ARE ALSO AVAILABLE IN JSON.

JUST CHANGE .xml EXTENSIONS TO .json

GO AHEAD IF YOU HAVE FINISHED AND NEED MORE CHALLENGES WHILE WAITING FOR THE

CLASS OR IF YOU PREFER TO WORK IN JSON AND SO IT’S MORE RELEVANT TO YOU.

Page 6: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 1

1. OPEN THE TEMPLATE IN JMETER

2. SELECT EXAMPLE HTTP REQUEST - SET SERVER NAME TO api.jmeter.ninja AND PATH

TO items/1.xml

3. SELECT VIEW RESULT TREE - UNTICK ERRORS ONLY

4. RUN TEST; USING RUN > START, PRESSING THE RUN ICON, OR PRESS CTRL-R

5. EXAMINE RESULTS IN THE RESULT TREE

6. COMPARE THE RESULT TREE VIEW WITH THE AGGREGATE RESULT VIEW.

Page 7: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: JMETER SAMPLER

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#HTTP_REQUEST

USE THE HTTP SAMPLER FOR:

• GET, POST, PUT….

• HTTP/HTTPS (SSL)

• HTTP 1.0/1.1 OR HTTP 2

• XML, JSON , WWW-FORMS OR ANY TEXT CONTENT

Page 8: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 2

1. DELETE THE GAUSSIAN RANDOM TIMER IN THE EXAMPLE THREAD GROUP

2. ADD A CONSTANT TIMER UNDER THE EXAMPLE THREAD GROUP

3. SET THE THREAD DELAY TO 10000 (10 SECS)

4. RUN THE TESTS AGAIN NOTE THE SLOWER THROUGHPUT

Page 9: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: JMETER TIMER

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#TIMERS

USE TIMERS TO:-

• ADD “THINK” TIME TO GIVE A MORE REALISTIC USER STORY

• THROTTLE LOAD TO THE REQUIRED LEVEL FOR EACH THREAD

• GIVE SERVERS MINIMAL PROCESSING TIME FOR ASYNCHRONOUS OR EVENTUAL CONSISTENT

EVENTS.

Page 10: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 3

1. INSTEAD OF REQUESTING items/1.xml

2. SELECT A RANDOM ITEM FROM 1,20 IN EACH ITERATION USING A JMETER FUNCTION

Page 11: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: FUNCTIONS

HTTP://JMETER.APACHE.ORG/USERMANUAL/FUNCTIONS.HTML

FUNCTIONS:-

Page 12: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 4

1. INTRODUCE A LOOP CONTROLLER TO REPEAT THE SAMPLER 5 TIMES ON EACH ITERATION.

2. PUT A 1 SECOND DELAY BETWEEN EACH SAMPLE

HINT THE SAMPLER AND TIMER MUST GO INSIDE THE CONTROLLER.

Page 13: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: LOGIC CONTROLLERS

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#LOGIC_CONTROLLERS

USE LOGIC CONTROLLERS TO:-

• LOOP (LOOP, FOREACH)

• MAKE DECISIONS (SWITCH, IF)

• ALTERNATE (INTERLEAVE, RANDOM CONTROLLER)

Page 14: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 5

1. USE A HTTP SAMPLES TO GET “/objects.xml”

2. USE THE XPATH EXTRACTOR TO EXTRACT THE VALUE OF

- THE FIRST OBJECT ELEMENT FROM OBJECTS.XML.

1. MAKE A SECOND HTTP GET REQUEST TO THE PATH “/objects/${OBJECT}.xml”

- WHERE OBJECT IS THE VALUE EXTRACTED FROM THE PREVIOUS REQUEST

3. TEST YOU SCRIPT BY RUNNING IT, ENSURE THERE ARE NO ERRORS AND EACH SAMPLER

RETURNS A RESULT.

Page 15: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: POST-PROCESSORS

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#POSTPROCESSORS

POST PROCESSORS :-

• EXTRACT VALUES FROM A SAMPLER RESPONSE OR FROM ANOTHER VARIABLE

• AVAILABLE FOR XPATH (XML), CSS, JSON OR REGEX

• TIP - PREFER XPATH OVER REGEX TO AVOID FRAGILE TESTS

• VARIABLES CAN BE USED ALMOST ANYWHERE INCLUDING URIS, BODIES AND TITLES (NAMES).

• TIP – USE VARIABLES IN COMPONENT NAMES FOR DEBUGGING AND ORGANISING RESULTS.

Page 16: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 6

1. USE A FOREACH CONTROLLER TO LOOP THROUGH EACH OBJECT RETURNED IN THE OBJECTS

LIST. REQUESTING EACH ONE IN A SINGLE TEST ITERATION.

HINT THE XPATH EXTRACTOR WE ADDED EARLIER IS DESIGNED TO WORK WITH THE FOR EACH

CONTROLLER.

3. ADD AN XPATH ASSERTION TO THE SAMPLER WITHIN THE LOOP. USE THE XPATH

//result[text()='OK'] WHICH WILL VALIDATE A SUCCESSFUL RESULT.

4. RUN THE TEST, MAKE A NOTE OF WHICH OBJECTS HAVE AN UNSUCCESSFUL STATUS.

Page 17: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: ASSERTIONS

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#ASSERTIONS

USE ASSERTIONS TO:-

• MARK THE SAMPLER RESPONSE AS FAILED IF THE ASSERTION HAS FAILED

• VALIDATE CONTENT OF A RESPONSE USING XPATH, CSS, REGEXP

• SET A MAXIMUM TIME OR SIZE FOR THE RESPONSE

• CHANGE THE EXPECTED RESPONSE CODE FROM THE DEFAULT OF 200 TO ANOTHER VALUE

Page 18: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 7

1. DOWNLOAD api.jmeter.ninja/objects.csv AND SAVE TO THE SAME PATH AS YOUR JMETER

SCRIPT.

2. ADD A CSV DATA SET CONFIG ELEMENT

3. USE THE VALUES FROM THE CSV TO FETCH

- THE OBJECTS FROM /objects/${OBJECT}.XML

Page 19: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: CSV DATA SETS

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#CSV_DATA_SET_CONFIG

USE CSV DATA SET CONFIG TO:-

• IMPORT DATA AT RUNTIME SUCH AS USERS AND PASSWORDS FROM A EXTERNAL SOURCE.

• TO BE ABLE TO SWAP OUT THE DATA VALUES FOR DIFFERENT TESTS SUCH AS DIFFERENT

ENVIRONMENTS.

Page 20: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 8

1. POST to https://login.jmeter.ninja/loginService with parameters username and password.

Username and Password must match e.g. ninja:ninja

2. Add a CookieManager inside your thread group. Leave values as default.

3. Do a GET request to the same page.

4. Add an assertion to verify the GET response includes the text “You are logged in”

5. Run the test. The logged in page will only be returned if jmeter remembers the cookies returned

with the POST request.

.

Page 21: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: COOKIE MANAGER

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML#CSV_DATA_SET_CONFIG

USE COOKIE MANAGER:-

• TO HAVE JMETER ACT MORE LIKE A STANDARD BROWSER. I.E. IT’S A STANDARD WEBSITE NOT

AN API.

• WHEN YOU NEED TO LOG INTO WEBSITES THAT HAVE FORM BASED LOGINS AND COOKIES

BASED SESSION MANAGEMENT.

Page 22: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

EXERCISE 9

1. RUN JMETER FROM THE COMMAND LINE WITH:

jmeter –n –t template.jmx –l results.csv –JLOOPS=10 –JTHREADS=3

2. GENERATE A REPORT USING:-

jmeter –g results.csv –o results

3. OPEN THE REPORT results/index.html

Page 23: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

YOU HAVE GAINED: COMMAND LINE SKILLS

HTTP://JMETER.APACHE.ORG/USERMANUAL/GET-STARTED.HTML#NON_GUI

USE THE COMMAND LINE TO:-

• RUN JMETER IN NON-GUI MODE TO SAVE MEMORY AND WHEN RUNNING ON HEADLESS SERVERS.

• GENERATE HTML REPORTS FOR EXPLORING AND SHARING TEST RESULTS.

• TIP – USE “–J” TO SET THE PROPERTIES AT RUNTIME WHICH YOU HAVE DEFINED IN YOUR SCRIPT.

Page 24: A CRUNCHY GUIDE - api.jmeter.ninjaapi.jmeter.ninja/jmeter.pdf · why jmeter •opensource - an apache project •licences restrictions would be bad for volume testing and automation

OVERVIEW

HTTP://JMETER.APACHE.ORG/USERMANUAL/COMPONENT_REFERENCE.HTML

• SAMPELRS – JDBC, FTP, SMTP, TCP, JMS, LDAP

• LOGIC CONTROLLERS – LOOP, ONLY ONCE,, RANDOM, IF, WHILE, SWITCH, FOREACH

• LISTENERS – TREE VIEW, AGGREGATE, GRAPHS

• CONFIGURATION – DEFAULTS, COOKIES, HEADERS, CSV DATA SET

• ASSERTIONS – RESPONSE, DURATION, XPATH, CSS, BEANSHELL

• TIMERS – CONSTANT, GAUSSIAN, UNIFORM

• PRE/POST PROCESSORS: REGEX, JSON, CSS, BEANSHELL

EVEN MORE ARE AVAILABLE VIA 3RD PARTIES JMETER-PLUGINS.ORG, UBIKLOADPACK.COM