How do I perform a complete Load Test process with JMeter? - jmeter

I am new to using JMeter and have developed a basic test plan with HTTP Sampler and a few listeners. Please run me through the entire process of how I can start after opening JMeter ?

There's no right answer for this, it depends what you're wanting to achieve. I'd suggest starting with the best practices: http://jmeter.apache.org/usermanual/best-practices.html
And also look at building a web test plan: http://jmeter.apache.org/usermanual/build-web-test-plan.html
I would look at the Graphs Generator listener - https://jmeter-plugins.org/wiki/GraphsGeneratorListener/ - use these graphs to make sure you're making the number of transactions that you would expect in your tests.
Basically - the documentation is your friend. I took time to read what each controller, listener and sampler was doing and decided how to implement these myself. There was some trial and error. JMeter is an easy tool to pick up and use but there's a LOT of depth to it.

In addition to Ali1874 answer, I would suggest looking into how to run JMeter tests using command line. You can find more information at http://jmeter.apache.org/usermanual/get-started.html#non_gui. With regards to reporting JMeter is able to produce nice HTML reports when using -e -o options http://jmeter.apache.org/usermanual/generating-dashboard.html#report_after_load_test.
Also, with regards to Jmeter test plans, in my previous company we used to parameterize number of threads required, servers and other elements. In general structure looked like the one at the example test plan.
We had different user defined variables elements for different environments for faster test tuning. Also, we used bzm – Weighted switch controller (https://github.com/Blazemeter/jmeter-bzm-plugins) to distribute load among endpoints by including HTTP requests from Test Fragment element so that we would not have to duplicate requests allowing to manage them more easily. You can check out full plan at here (https://github.com/gretard/testing/blob/master/00-jmeter/results/samplePlan.jmx). Please bear in mind that test plan uses bzm – Weighted switch controller plugin and jpgc - Standard Set plugin which you can install by using Plugins manager (https://jmeter-plugins.org/wiki/PluginsManager/).
Hope this will help.

Related

jmeter with BI4 .2 SP6

I have recorded script through Blaze meter and tried executing thru jmeter after adding com.sun.faces and bttoken. I have tried adding sEntry but unfortunately I didn't find the key.
Issue: It is not performing refresh report activity because I was monitoring in the backed sessions.
Looking into BI4 Web Intelligence Performance Test with JMeter article it should be strEntry and the relevant Regular Expression Extractor configuration would be something like
Actually you can use another approach to recording JMeter tests which can export recorded scripts in "SmartJMX" mode with automatic detection and correlation of the dynamic data, it might help you to come up with the properly correlated version of the load test with the minimal efforts. Check out How to Cut Your JMeter Scripting Time by 80% article for more details.
If you need further help on manual correlation consider including previous sampler response and the next request details into your question

JMeter test report

I'm using JMeter for integration and non-regression testing.
The tests are automated and reports are working.
But since it is scenario testing and not performance testing the report doesn't give real business added value for that kind of tests.
My question: Is there any way to have a scenario (transaction controller based)reporting?
For the moment, to have some more meaningful result, transactions controllers and dummy sampler are used.
What we would like to have is the number of success/failure scenarios of the last test run. And also an history of success/failures per test run (1 by day).
Thank you for your advices.
The easiest way of getting the things done is putting your JMeter test under Jenkins orchestration so it will be automatically executed based on a VCS hook or according to the Schedule
Once done you will be able to utilize Jenkins Performance Plugin which adds test results trends charts and ability to mark build as unstable/failed depending on various criteria.
If I am not wrong, you want to create a suite based on particular test cases. like if single case include execution of more than 1 request in a single execution.
If this is the case, you can simple create a test fragment through jmeter gui, and copy all the samplers in single fragment.
Now to control their execution you can use any controller of your choice, i would suggest you to use module controller for http samplers.

can we have any jmeter control over the threads?

can we have any control over the threads?
Consider i have 10 threads and i have provided my test data in .csv file. so can I control on threads like which thread should pick which data and may be some delay for few of the threads?
Also, can someone suggest me some book or online content wherein i can have information on internals of JMeter. Like when we run test plan, what all things are happening on memory side, reading of different properties files, receiving response, how threads internally works, etc.
Thanks,
Abhishek
JMeter is a very flexible and powerful tool. In theory, anything is possible it all depends on what your testing goals are. Even things not supported by JMeter can be coded in Java and easily integrated with a Java Sampler. Your question indicates you have not spent a lot of time experimenting with the tool, but hopefully my answer jump-starts that process for you.
JMeter has a lot of control features that can be used in conjunction with CSV data to control the flow of a thread. For example, use the CSV data to correctly enter the right block of a Switch Controller, validate an If Controller, or control the number of loops in a Loop Controller. Be sure you read the entire Getting Started Guide and familiarize yourself with the Component Reference Guide
In terms of how things work internally, your best bet is to build the JMeter project from source in an IDE like Eclipse. You can then step through the entire program in as much detail as you want.
Tutorial: Build JMeter from Source
Also, the /bin/jmeter file has a decent number of comments about how to properly configure JVM memory for a JMeter process.
You probably want to install at least the most basic JMeter Plugin Package.
Lastly, if you need one thread to control the behavior of another thread you can use FIFO Queues or set JVM properties via Beanshell which are global and not unique to a thread like runtime variables.
props.put("key","value");

Endurance testing using Jmeter

I am new to Jmeter and trying to understand what all can be achieved using Jmeter. I want to perform endurance or soak testing of a application using Jmeter, i.e. I want to run a particular script for a particluar number of users for a period of 3 hours.
What all options are available to me and what is the best availablelistener to monitor the result?
Please help. Kindly add if I am missing anything that I should know before starting with soak testing?
For setting up the numbers of users and runtime of the test you use a Thread Group. Setting the runtime is done by checking the Scheduler check-box and specifying Duration.
Of the original listeners in JMeter I have found myself most oftenly just using the plain Summary Report. But JMeter Plugins gives additional listeners which may be better, it depends on what you want to measure. The JMeter Plugins also gives additional thread groups, where you can specify e.g. an increasing load over time.
Use a Thread Group to set up your number of users and the duration of your test (using the scheduler of the Thread Group).
Then add all the samplers and logic controllers you need to perform your testing.
Next, add a Summary Report listener to get an overview of your results (min/max/average and such), and add a View Result Tree listener to get an overview of EACH step your testplan is taking. This Tree listener is great to actually see what jmeter is doing, and to debug your tesplan.
BTW: if you add a HTTP Request Defaults object, you can set your URL and options in there, and don't need to add it to each and every sampler again. Especially works like a charm if you start using regexp extractors and such.

How to configure JMeter Thread group for 1 million request in 10 seconds?

I want to run a Load test on my Production server to verify that the server can handle 1 million requests per 10 seconds using JMeter. How to configure JMeter Thread group for 1 million request in 10 seconds? How many client I need to do this test?
Please share your valuable experience if you have experience doing this type of load test.
First, you should ensure you really need 1 million requests in 10 seconds (what kind of site are you testing ?).
Then if you want to use JMeter, ensure:
You use last version
You tune memory correctly
You will certainly have to use distributed testing if not using Cloud
Follow best practices
http://www.dzone.com/links/r/see_how_to_make_jmeter_run_thousands_of_threads_w.html (Disclaimer : I'm the writer of this)
http://jmeter.apache.org/usermanual/best-practices.html
You might try Constant Throughput Timer to make a kind of Barrier
Alternatively you can try "Delay thread until creation"
And finally try a Cloud solution to get to this load, see this french blog on all kind of issues you will face in all fields (not only load software):
http://blog.milamberspace.net/index.php/2012/07/14/rapport-de-tres-gros-test-de-charge-avec-la-solution-blazemeter-1161.html)
But I never tried up to this load, so I cannot tell if it will work and it is kind of unexplored field
you can accomplish this using Gatling and scaling out to several machines that would run the test in parallel. in the end Gatling can aggregate the results into 1 report.
Gatling documentation dosent provide much info for this :
http://gatling.io/docs/1.5.6/user_documentation/cookbooks/scaling_out.html
but you can check my blog post to see how this can be done (ive wrote a script for this purpose)
Blog - http://www.nimrodstech.com/gatling-cluster-load-testing/
Gist - https://gist.github.com/Nimrod007/5cfed34eeffedfd7ec76
Looks like you'd better look onto another, more suitable tool for such kind of scenario,
e.g. Tsung
Tsung homepage
Tsung # github
Scaling to 30K: Tsung
or at least Gatling instead:
Gatling homepage
Gatling: scaling out
Perhaps if you would like to use jmeter in any case you can look onto BlazeMeterLoad Testing Cloud solution.

Resources