JMeter – Core2Advanced - Day Wise Topics
Note: -
● Topics may NOT match with the exact Day. These topics are in sequence and common to all
Batches.
BASICS
Day1:
● Basics of computer
● Keyboard shortcuts
● Remove System & Browser history
● Introduction to Software Development & Software Testing
● Software Development Life Cycle (SDLC) & Phases
● Software Testing Life cycle (STLC) & Phases
● Types of Software Testing
● Functional Testing & Non-Functional Testing
● Tools Used in Functional & Non-Functional Testing
● Introduction to Performance Testing & JMeter
● Manual, Automation, Performance & Security Testing
● SDLC Methodologies
○ Waterfall model
○ V-Model
○ Agile Model – Jira Board & Confluence Real Time Explanation
● Terms used in Software Testing: - Defect, Bug, Bottlenecks, Vulnerabilities
● Defect/Bug Life Cycle
○ Defect life cycle phases
○ What is priority?
■ P1, P2, P3, P4
○ What is Severity?
■ S1, S2, S3, S4
Day2:
● Basics of Performance Testing:
○ Performance Testing technical definition
○ Performance testing V/S engineering?
○ Why Performance Testing
● Need for Performance Testing
○ Symptoms of Application Slowness
○ Examples of Loss occurred by many Brands due to poor Application performance
○ Objectives of Performance Testing
○ Why performance testing?
○ Purpose of Performance Testing
○ Which application should we performance test?
○ Need for Performance Testing Tools
○ Real Users & Virtual Users (or VUsers)
○ What Performance Testing Tools Do?
○ When Performance Testing can be Done?
○ Tools used in performance testing?
○ Why to Learn JMeter?
○ RFI & RFP
○ HTTP Request response Structure
○ What is POD? And what is DC?
○ Horizontal VS Vertical scaling
○ Load Balancer
○ Performance Testing Terminologies
○ Performance Testing Prerequisites
○ Types of Performance Tests
○ Benchmark vs Baseline testing
MODULE – 1
Note: All the below concepts will be explained with real time documents
Day3:
● Proof of concept (POC)
● Statement of work (SOW)
● Performance Testing environment setup
Day4:
● Non-Functional Requirements (NFR)
○ Competitor tool
○ General
○ Architectural
○ Business
● Entry & Exit Criteria
Day5:
● Test Strategy
● Test Plan
MODULE - 2
Day6:
● JMeter Introduction, History, Versions, Protocols Supported & Its Features
● Which application should we performance test?
● Why did performance tools come into the picture?
● Understanding JMeter is Not a Browser
● How a Performance Testing Tool like JMeter Works?
● Need of Java Installation for JMeter
● Java (JDK & JRE) Installation
● Commands to Verify JDK & JRE Installation
● Which Java is Best to Use for JMeter?
● Java Environment/ System Variable (or Home Path) Setup
● How to Change Java in Use if multiple versions of Java is Installed in System?
● Prerequisites to use JMeter
● JMeter Download & Launching on Windows OS
● JMeter 2 Launching Modes
● Importance of Launching JMeter from CLI or Non-GUI
● JMeter Directory Structure
● JMeter Application GUI/IDE Walkthrough
● JMeter Terminology
● Some other Points related to JMeter
● JMeter Download & Launching on MAC OS
● JMeter Download & Launching on Linux/ Unix/ Ubuntu OS
Day7:
● Core Concepts of Performance Testing:
● Servers & Its Types (web, App, DB)
● Protocol & Its Examples
● Performance Testing Life Cycle in JMeter
● Test Scenarios, Test Cases, Test Suite, Transactions, Recording, Enhancement, & Debugging
● Web protocol types
● URL Structure
● HTTP(s) Protocol: - Request, Response, Headers, Request Methods, & Response Codes
● Browser Developer Tool (F12), HTTP/HTML Requests, Embedded Resources
● Request, Response & Headers
● Types of HTTP Request Methods & CRUD Operations: - GET, POST, PUT & DELETE
Day8:
● Transaction (or User Action)
● Hits, Requests, Transactions, & Their Counts in Per Unit Time
● Cache, Cookies & User Session
● Server-Side & Client Side (or UI) Performance Testing
● Client-Server Application Architecture (1-Tier, 2-Tier, 3-Tier & N-Tier)
● Application Layers & Its Types (PL, BLL & DML)
● Web Server, App Server & DB Server & Their Functionality
● Web server, app server and DB server setup
● Thin Client & Thick (or Fat) Client Applications
● 2-Tier and 3-Tier Difference
● Why Application become Slow?
● Importance of Knowing the Application Architecture in Performance Testing
Day9:
● Terminologies in JMeter with respect to Performance Testing
● JMeter’s 12 Major Elements (Or Components)
● Recording in JMeter, & Port & Proxy Server Setup
● Understanding Transaction, Request, Response, Headers, Request Methods, Response
Codes, Protocol, URL, Port, Path, etc. in JMeter
● Different Views of Response in JMeter
● Transaction Controller, Transactions & Respective Requests, & Their view in View Results
Tree
● Saving Recording Logs to a File & Use of Brushes
● Irrelevant Requests & Embedded Resources & Why to Filter Them?
● Port & Proxy Server Setup & Recording from Different Browsers
● How to Filter Irrelevant Requests & Embedded Resources?
● “Recording” Template of JMeter & Its Use
● What to Keep & Not to Keep?
● HTTP & HTTP(s)
● JMeter Certificate Installation in Different Browsers, Certificate Re-Generation, Domain
Based Certificate Generation, & Steps for Certificate Re-Installation
● Use of Recording Controller in JMeter & Its uniqueness
● Use of Transaction Controller in JMeter & Its uniqueness
Day-10:
● JMeter 3rd Launching Mode, i.e. Proxy Mode
● Property Display (Non-Test) Element
● HTTP(s) Test Script Recorder Element, Its Attributes, & Its Best Practices Settings
● Best Practices for Recording in JMeter
● Why to record in Incognito mode Or with Cookies & Cache cleared in normal mode of
Browser?
● Set of Approaches when Recording is Not Happening in JMeter
● Walk-through of JMeter’s Directory: - Various Files & Folders
● How to Open a JMX file by Double Clicking It?
● JMeter’s Properties Files
● Undo, Redo, & Backup Features in JMeter
● Increasing View Results Tree’s Line Limitation
● Increasing JMeter Certificate’s Expiry Time
● JMeter Plugin Manager, Plugin Installation & Uninstallation by 2 Ways
● Scenarios Identification & Documentation for Performance Testing of a Web Application
(HTTP(s) Protocol)
Day-11:
● End to End Recording & Script Enhancement with Best Practices for above Scenario (Product
Booking)
● Dynamic Values, Their Types, Importance & Functioning, & How & Why They Occur?
● Authorization/ Authentication Tokens (or Values) Examples
● JMeter Script Enhancement with Best Practices (continued)
● Where Dynamic Values May Occur in the Script?
● How to Identify Dynamic Values?
● Why & How to Handle Dynamic Values?
● Correlation & Parameterization
● Use of Regular Expression Extractor
● Use of Debug Sampler
Day-12
● JMeter Script Enhancement with Best Practices (continued)
● Correlation & Parameterization (continued)
Day-13
● JMeter Script Enhancement with Best Practices (continued)
● Correlation & Parameterization (continued)
● Redirection Concept (301, 302, 303, 304), etc.
Day-14
● JMeter Script Enhancement with Best Practices (continued)
● Correlation & Parameterization (continued)
● E.g. of Extracting a Value with Left Boundary but No Right Boundary
● Extracting Value from Response Header
● Use of Dummy Sampler
● Regular Expression Extractor’s Attribute: - Default Value, Field to Check & Apply To
● HTTP Cookie Manager
● HTTP Cache Manager
● HTTP Protocol is Stateless Protocol
● How do we make JMeter behave like a Real Browser? Ans: - 5 Settings
● Correlating Recording Log & Replay Log for a Request in case of any Failure
Day-15
● JMeter Script Enhancement with Best Practices (continued)
● Test Data Preparation & Use of CSV Data Set Config Element with my SQL
● Making Script more Realistic, Modular, Dynamic & Re-Usable
● Correlation & Parameterization (continued)
● Regular Expression Extractor’s Attribute: - Match No.
Day-16
● JMeter Script Enhancement with Best Practices (continued)
● Correlation & Parameterization (continued)
● Test Data Preparation (continued)
● __Random() function
● __RandomDate() function
● __RandomString() function
Day-17
● JMeter Script Enhancement with Best Practices (continued)
● Adding Response Assertion with Best Practices
● Response Assertion & Its Attributes
Day-18
● JMeter Script Enhancement with Best Practices (continued)
● Adding Response Assertion with Best Practices (continued)
● Response Assertion & Its Attributes (continued)
● Think Time, Custom Think Time & Pacing in JMeter
● Use of User Defined Variable Element
Day-19
● JMeter Script Enhancement with Best Practices (continued)
● Think Time, Custom Think Time & Pacing in JMeter (continued)
● Error Handling using Result Status Action Handler element in JMeter
● Test Script Stabilisation
● Thread Group’s Attributes: - Users, RampUp, RampDown, Loop Count, Duration, Delay,
etc.
● Deleting Or Disabling All Listeners & Unnecessary Elements
● Validate option
● Start No Pauses option
Day-20
● End to End Recording & Script Enhancement with Best Practices for another Scenario (User
Registration)
Day-21
● End to End Recording & Script Enhancement with Best Practices for another Scenario (User
Registration) (continued)
● __Random() function
● __RandomString() function
● End to End Recording & Script Enhancement with Best Practices for 3rd Scenario (Login)
● Use of Aggregate Report Listeners
● TimeStamp (or EpochTime) & Its Handling in JMeter
● __time() & __timeShift() function
● How to Generate a Never Repeating Random Number Or a Unique Number Or a Unique
String in JMeter?
Day-22
● Regular Expression in JMeter: -
● Meta Characters in Regular Expression
● Writing a Regular Expression
● What is (.+?) & Why do we Use It?
● Regular Expression Extractor & Its Attributes
Day-23
● Regular Expression in JMeter (continued)
● Regular Expression Extractor & Its Attributes (continued)
● Dynamic Values Extraction in JMeter with Real Time Use Cases Examples: -
● The General Expression
● E.g. of Multiple Values Extraction by Ignoring Middle Values
● E.g. of Escape Character
● E.g. of Extracting a Value in Newline
● E.g. of Extracting a Value with Left Boundary but No Right Boundary
Day-24
● Realtime Use Cases Examples of Dynamic Values Extraction in JMeter (continued): -
● E.g. of Extracting a Value with both Varying Left & Right Boundary
● E.g. of Extracting the Single Value in Response with No Left & No Right Boundary
● E.g. of Extracting Complete Response
● E.g. of Extracting Response (Status) Code
● E.g. of Extracting Response Message
● E.g. of Extracting a Value from Response Header
● E.g. of Extracting Complete Headers
● E.g. of Picking Value Sequentially (Or in a Pattern) by Each User
● E.g. of Capturing Last Dynamic Value
● __V() function
Day-25
● CSV Data Set Config & Random CSV Data Set Config
● Boundary, JSON, XPath & CSS Extractors
● Duration, Size & other Assertions
MODULE - 3
Day-26
● Test Execution with Best Practices Or Best Practices for Load Testing in JMeter: - Settings in
Script, in “user. Properties” file & Heap Size
● JMeter Heap Size (or Java Memory)
● How & Why to Increase JMeter’s Heap Size?
● Understanding Impacts of Heap Size in functioning of JMeter
● How much Memory can be increased?
● Factors affecting User Load generation by JMeter from a Single System
● How much User Load can JMeter generate from a Single System & How to find that value?
● Use of J-Visual VM to find memory consumption by JMeter
Day-27
● Test Execution & JTL file Generation from Non-GUI Mode
● Summarizer of Non-GUI Mode in Detail
● HTML Report Generation from Non-GUI Mode with Best Practices
● HTML Report with Transactions & Requests
● Understanding JMeter HTML Report
● HTML Report with Transactions, Requests & Embedded Resources
Day-28
● HTML Report with only Transactions
● HTML Report with only Needed Transactions & Requests
● Understanding Execution Commands with Best Practices
● Importance or Beauty of JTL file
● Use of View Results in Table Listeners
● Ignoring Embedded Resources Failures while Running the Test in JMeter
● Response Time Values in Seconds in HTML Report
● Decreasing the Summarizer Interval Time
● Disabling Embedded Resources Renaming as of Parent Request
● 70%, 80% & 90% in HTML Report & in Aggregate Report Listener
Day-29
● Stopping Test Execution in Non-GUI Mode
● Test Execution, JTL file Generation & HTML Report Generation from GUI Mode
● Use of Simple Data Writer Listener
● Saving Complete Request & Response of a Test while Test Execution to a File (JTL or XML)
● Saving Request & Response for Only Failed Requests of a Test while Test Execution to a File
(JTL or XML)
● Test Execution Commands for Proxy Mode
● Understanding JMeter HTML Report (continued)
● APDEX in JMeter HTML Report
● 90% or 95% or 99% Response Time in Detail
● Why 90% Response Time is Used in Performance Testing?
● Graphs in JMeter HTML Report
Day-30
● HTTP Response Codes (or Status Codes)
● Types of Performance Testing
● Concurrent Users & Simultaneous Users
● Test Run, Analysis & Reporting
● Baseline, Bottlenecks & Benchmark
● Why Application become Slow?
● Importance of Knowing the Application Architecture in Performance Testing
● Latency, Bandwidth, Throughput, Response Time, Connect Time, Service Time, Queue Time,
Standard Deviation
● Parameterizing Important Parameters Using __P() function & Why to Use this function?
● Passing Arguments from CLI in Non-GUI Execution
● Assigning Values from JMeter’s “[Link]” File to Variables declared using __P()
function & Using them in Non-GUI Test
● Creating Own Custom Properties File & Passing That Properties File from CLI in Non-GUI
Execution
● Running 2 or More JMeter Test Scripts (or JMX Files) Sequentially in One Go in Non-GUI &
GUI mode
Day-31
● Absolute & Relative Path Concept in JMeter
● Debugging of Script in JMeter: - 4 helpful options
● Log Viewer, Types of Log Level, & Example
● JMeter & Distributed Load Testing using Load Generators (LGs) (Master & Slave Concept Or
Remote Testing): -
● Prerequisite Configuration (Or Requirements) to Do this Setup
● Making Communication Set-up b/w Master & Slave JMeters – 2 Ways
● Distributed Test Execution from GUI & Non-GUI Modes
● Limitations of Distributed Load Testing in JMeter
● Errors Related to Distributed Load Testing in JMeter
● Alternate Way of Distributed Load Testing in JMeter
Day-32
● JMeter & InfluxDB - Grafana Integration (with InfluxDB v1.x)
● Jmeter & Prometheus – Grafana Integration (with Prometheus)
Day-33
● JMeter & Jenkins Integration
● Running a JMeter Job in Jenkins
● Running a JMeter Job with Arguments in Jenkins & HTML Report Generation
● Running a JMeter Job with Integration of Jenkins Performance Plugin
● Running a Parametrized JMeter Job with Arguments in Jenkins
Day-34
● Test Suite Creation in JMeter OR Merging & Running Two or More Scenarios/Thread
Groups in JMeter
● Understanding Simple Way to Create Test Suite
● Workload Modelling or User Load Distribution across different Scenarios
● Test Suite Execution & Its HTML Report Generation
● Use of Module Controller & Test Fragment to Create Test Suite
● Use of Include Controller to Create Test Suite
Day-35
● Scope of JMeter Elements & Variables
● Local & Global Variables
● Execution Order (or Presidency) of JMeter Elements
● 3 Ways to Take Help in JMeter for Its Elements & Functions
● JMX, JTL, CSV, XML, HTML: - Understanding Them
● BlazeMeter Organization, Plugins offered by It, & Execution in BlazeMeter Cloud
● JMeter Intro & Pro Certification
● 3rd Party Ways for Recording & Exporting to JMeter
Day-36
● 3rd Party Ways of Recording & Exporting to JMeter
● Custom Script Creation using cURL cmd & Importing to JMeter
● Custom Script Creation using HAR & Exporting to JMeter
● Capturing Traffic using Fiddler tool & Exporting to JMeter
● Recording using BlazeMeter Chrome Plugin & Exporting to JMeter
● Limitations of 3rd Party Ways for Recording
Day-37
● JMeter Elements, Their Sub-Elements & Their Attributes in Detail: –
● Test Plan Element of JMeter: -
● Non-Test Elements of JMeter: -
● Threads & Thread Group Elements of JMeter: -
● Thread Group
● setUp Thread Group
● tearDown Thread Group
○ Stepping Thread Group
○ Ultimate Thread Group
○ Concurrency Thread Group
Day-38
● Controller Elements of JMeter: -
● Recording Controller
● Transaction Controller
● Simple Controller
● Loop Controller
● Runtime Controller
● Random Controller
● Random Order Controller
● Interleave Controller
● Once Only Controller
● Parallel Controller
● Throughput Controller
● Switch Controller
● If Controller
Day-38
● While Controller
● Module Controller
● Include Controller
● ForEach Controller
● Critical Section Controller
● Sampler Elements of JMeter: -
● HTTP Request
● Debug Sampler
● Dummy Sampler
● JDBC Request
● FTP Request
● WebDriver Sampler
● Access Log Sampler
● SMTP Sampler
● Mail Reader Sampler
● Flow Control Action
● BeanShell (& JSR223) Sampler
● OS Process Sampler
Day-39
● Config Elements of JMeter: -
● HTTP Header Manager
● HTTP Cookie Manager
● HTTP Cache Manager
● HTTP Request Defaults
● User Defined Variables
● CSV Data Set Config & Random CSV Data Set Config
● Counter Config Element
● Random Variable Config Element
● HTTP Authorization Manager
● Windows Authentication or Browser Pop Up Handling
● JDBC Connection Configuration
● FTP Request Defaults
● WebDriver Config
● Assertion Elements of JMeter: -
● Response Assertion
● Duration Assertion
● Size Assertion
● BeanShell (& JSR223) Assertion
Day-40
● Timer Elements of JMeter: -
● Constant Timer
● Uniform Random Timer
● Gaussian Random Timer
● Poisson Random Timer
● Think Time in JMeter
Day-41
● Synchronizing Timer
● Big Billion Day or Black Friday or Rendezvous Scenario
● Throughput in PT
● Constant Throughput Timer
● Pacing in JMeter
● Little’s Law to Calculate Pacing, Think Time, Number of VUsers, etc.
● Listeners Elements of JMeter: -
● Pre-Processors Elements of JMeter: -
● Post-Processors Elements of JMeter: -
Day-41
● JMeter & Bean Shell (or JSR223) & Understanding It w.r.t. Java with Realtime Use Cases
Examples: -
● Introduction
● BeanShell (& JSR223) Sampler
● BeanShell (& JSR223) Pre-Processor
● BeanShell (& JSR223) Post-Processor
● BeanShell (& JSR223) Assertion
● Variables, Integers, Strings
● Logging/Printing Values in JMeter Log Viewer & JMeter Console: - [Link](), print() &
[Link]()
● [Link]() & [Link]()
● Integer to String Conversion
Day-42
● Saving/Writing a Correlated Value to a File
● Saving/Writing multiple Correlated Values to a File
● Overwrite & Append operations
● JSR223 Element w.r.t. to Java
● Test Data Preparation & Saving/Writing User Credentials to a File
● Test Data Preparation & Saving/Writing User Credentials to a File for only Success
Transactions
● String Comparison
Day-43
● Saving/Writing User Credentials for Success Or Failed Users from a Long List of Test Data to
a File
● Saving/Writing Users with their Booked Order Details to a File
● Addition Or Other Mathematical Operations to a Number using JMeter Functions Or Java
Code
● String to Integer Conversion & Integer to String Conversion
Day-44
● Storing All Matches Or All Values Stored in an Array Variable to a Single Variable, Shuffling,
Removing Or Saving/Writing to a File
● Replacing or Removing a Character or Spaces from a Value
● Trimming Start & End Spaces from a Value
● [Link] & [Link]
● Saving Complete Response to a Variable
● Saving a Single Value in Response to a Variable
● Failing/Passing a Request based on certain Condition & Stopping User on Failure (E.g. of
BeanShell Assertion)
Day-45
● Creating & Deleting Files & Folders: - All Files, Files with a Particular Extension, Clearing a
Directory (or Folder)
● Passing a Value from One Thread Group to Another Thread Group: - __setProperty(),
__property() & props()
● Looping one or set of Transactions based on certain Condition (E.g. of While Controller)
● Booking an Order till a Particular Amount is Achieved in “Add to Cart” Transaction (E.g. of
While Controller)
● Executing different Transactions based on certain Cases or Conditions (E.g. of Switch
Controller)
● Error Handling in JMeter
Day-46
● JMeter & FTP Server Testing (File Upload & Download)
● JMeter & HTTP(s) File Download Scenario
● JMeter & HTTP(s) File Upload Scenario
Day-47
● JMeter & REST API Testing
● API testing using Postman
● Use of JSON Extractor
● JMeter & SOAP API Testing
Day-48
● JMeter & Database (Queries) Testing
Day-49
● Server-Side Matrices
● JMeter & PerfMon for Server Monitoring
● Client-Side (or UI) Matrices
● Client-Side (or UI) Performance Testing Tools
Day-50
● JMeter & Selenium WebDriver Integration for Page Load Testing (or UI or Client Side or User
Experience Testing)
Day-51
● JMeter & IP Spoofing (or Geo-Location Testing)
● JMeter & Network Speed Simulation to Test at Different Network Bandwidths (or Network
Throttling)
Day-52
● JMeter Functions
MODULE - 4
Day-53
● Web vitals using Light House
● Load Balancing techniques
● Thread dump
● Heap Dump
● Garbage Collection
● Dynatrace
● AppDynamics
● Eclipse-MAT
● J Visual-VM /J-Profiler