
This video will give you an overview about the course.
This video covers the importance and objectives of load testing.
What is performance testing?
Performance testing types and approaches
The place of performance tests in the software development lifecycle
This video covers the installation of required components to run JMeter.
Install or update JRE x64
Download and extract JMeter
Run the jmeter.bat or .sh file
This video covers the installation of additional plugins to extend basic JMeter functionality.
Download and install the JMeter plugin manager
Install useful plugins from the available list
This video covers the features of JMeter that make it a powerful tool for doing performance tests.
Load testing tool with great documentation
Elements allow us to test a wide range of technologies
Results monitoring using 3-d open source tools
In this video, you’ll see a demo of real life scenario creation.
Create a smoke test for a real application
Parameterize the scenario
Run the test
This video covers the monitoring of results using built-in listeners and with 3-d party tools like Grafana.
Usage of listeners
Demo of the Grafana monitoring dashboard
This video covers the main elements used to create the core of your scenario.
Thread group handle load model of the scenario
Samplers: elements that execute requests or do actions
Controllers help to create the logic of your scenario
In this video, you’ll cover the elements to view sample results in GUI, get statistics, and do assertions on results.
Listener gives all data from sample results
Use assertions to check some conditions in request/response
Do some operations before/after sample is executed. For example, generate some security token, clear data in the database, or get URLs from the HTML page.
Get data from the previous response using post-processor
Create a regular expression to fetch URLs from the response
Use fetched URLs in following requests
Elements to configure a JMeter scenario. Also, they allow JMeter to work with cookies, headers, and cache as a real browser does.
Emulate the browser behavior working with cache, cookies
Handle request headers
Elements used to parameterize a scenario with different variables.
Variables in JMeter
How to create a variable
Variable usage
In this video, you’ll see how to set up Firefox to start recording requests sent by your web application.
Add recorder and recording controller to the scenario
Set up proxy settings in FF settings
Add a root CA certificate to FF trusted authorities
This video covers recording requests for user actions.
Record requests to the recording controller
Exclude or remove 3-d party and requests for static resources
Add requests to Thread Group and run the test
To avoid mess in the results, use transaction controllers for each user action you record.
Create a Transaction Controller for your action
Place the recorded samplers in it
Use TC for all user actions
Parameterize requests with regular expression extractor to open new categories and products.
Add a regular expression post processor to HTTP request
Create a regular expression to fetch a random URL from HTML
Use the fetched URL in next requests instead of a hardcoded one
In this video, you’ll get user credentials from a file to log in users in the test.
Create a .csv file with user credentials
Add a CSV dataset config element to read from the file
Use credentials in the login request
In this video, you’ll generate data to parameterize requests with JMeter functions.
Use function helper to find the appropriate function
In this video, you’ll add more complex logic to your scenarios with logic controllers.
Choose a logic controller that emulates the desired logic
Place elements in the logic controller
In this video, you’ll learn how to debug your scenario and make it closer to your real users with pauses.
Use debug post-processor or debug sampler
Use flow test action sampler to make pauses between actions
Which load to generate? How to choose the right approach?
Start with capacity test to find the max load that the service can handle
Pay attention to comfort and degradation zones
Conduct tests with different load models based on capacity
How to set up JVM to generate a big load and where can we configure JMeter properties?
Create a set env script
Include a set env variable along with a specified heap size for JVM
Use .properties files to configure JMeter parameters
Use the JMeter GUI only for scripts development and debugging. Run load tests only in non- GUI mode.
Run JMeter script from the terminal
Additional script parameters could be passed with -J while starting a test
To be able to parameterize a scenario from the command line, we can pass parameters as JMeter properties using the -J argument.
Pass some parameters while starting JMeter with the -J argument
Access a JMeter property with ${__P(prop_name,default_value)}
Try changing the load model from the terminal
The best approach to get pretty test results without much effort is to generate an HTML report after the test.
Run the test in non-GUI mode with additional -l -e -o arguments to generate the HTML report
The output folder and results file must be empty or it does not exist on the filesystem
Open index.html from the output folder
It is very important to monitor server-side resource usage while running your test to get the full picture of the performance.
JMeter allows you to get server-side metrics with PerfMon metrics collector listener
Run the server agent on each server you want to monitor
Add connections in the PerfMon listener
Another approach for monitoring the app side and server side is to get real-time statistics saved to the database and display metrics in visualization tools.
Install Grafana, Telegraf, and InfluxDB
Add a backend listener to the JMeter scenario
Create a basic dashboard in Grafana and run the test
Get the right metrics is important when running load tests.
Collect app-side metrics
Collect server-side metrics
Use built-in listeners or some third party services to display test metrics
An easy-to-use solution to run, analyze, and store test data using InfluxDB, Jenkins, Grafana, Telegraf, and others.
Install Docker and clone the Git repository
Execute the docker-compose up command
Add a few listeners from the demo scenario to your scenario
One of the hardest parts in performance testing is to find the root cause of errors or poor performance.
Isolate the place of problem. Maybe, your script has some issues.
Monitor all the metrics that you have. Pay attention to the server side.
Work with your team to allocate the root cause.
After all tests are done, it is time to prepare reports.
Write a short summary for business people to say that the performance is ‘ok’
Add some detailed metrics and info for yourself and technical people
Never forget to mention all findings during investigation and testing
Test your software's performance easily with JMeter! Load-test, monitor performance in real-time, create reports, and more. Apache JMeter offers a powerful and extendable testing solution for your applications. With this course, you will use JMeter to test both the performance and functionality of any required online asset—web services, databases, FTP, or web servers—using a single tool.
You'll even learn to test applications that run in the cloud. Distributed load testing has historically been an expensive and painful process when comes to very high workloads with an enormous number of users using multiple systems. JMeter to the rescue! Firstly, JMeter is an open-source tool and is thus free. Secondly, JMeter is able to send metrics to the database, so you may start any number of JMeter instances and get all results stored in one place- Influxdb and visualized in Grafana. JMeter is made up of components. You will use those components to plan and perform tests, using realistic demo scenarios. You will learn to monitor your app's performance in real-time and create test reports.
By the end of the course, you will be world-class at using JMeter in the real world.
About the Author
Anton Serputko is a senior performance analyst with experience in testing client-server-based mobile and web applications and developing open-source frameworks for load test execution/analysis/result storage and visualization. He is vastly experienced in load testing framework configurations from scratch to test both the client- (browser) and server-side. He's conducted load-testing result analysis with root-cause investigations and application profiling. He is an active speaker at QA events and a performance/QA training mentor.