Upload
others
View
38
Download
0
Embed Size (px)
Citation preview
A CRUNCHY GUIDE
GET STARTED
1. http://jmeter.apache.org/download_jmeter.cgi
2. http://api.jmeter.ninja/template.jmx
3. bin\jmeter.bat –t template.jmx
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
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.
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.
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
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
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.
EXERCISE 3
1. INSTEAD OF REQUESTING items/1.xml
2. SELECT A RANDOM ITEM FROM 1,20 IN EACH ITERATION USING A JMETER FUNCTION
YOU HAVE GAINED: FUNCTIONS
HTTP://JMETER.APACHE.ORG/USERMANUAL/FUNCTIONS.HTML
FUNCTIONS:-
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.
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)
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.
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.
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.
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
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
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.
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.
.
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.
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
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.
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