I have recently started using Jmeter and facing some issues. Initially I was using VSTS.
I have a JMX where I have recorded and configured a Use case which has 5 steps. Logically all the steps(controllers) should execute sequentially. Also I am using two slaves.
When I execute a 100 Thread test using 2 slaves the controllers don’t execute sequentially. Step 1 will first execute 200 times and then step 2 and so on. How can i configure Jmeter to execute the controllers sequentially?
When I execute the test the response time is high but the Perfmon shows no rise in CPU which is quite contradictory. I executed the same test with VSTS and i got the CPU graph proper. Am i missing any configuration in Jmeter?
I executed a load test in Jmeter and VSTS . The use cases and test model was same in both the tools.
The results were compared and there is lot of difference among the readings between the 2. For example: Hits are high in Jmeter than in VSTS, average response time is much lower in Jmeter when compared to VSTS. I was not able to derive the behaviour.
What is the role of slaves in Jmeter?
For switching between parallel/sequential modes Thread Groups Execution you can operate “Run Thread Groups Consecutively” checkbox under Test Plan.
I believe that the difference is in how Visual Studio and JMeter are configured. My expectation is that your JMeter test plan does not retrieve all embedded resources like images, css, scripts, etc.
Can you add HTTP Request Defaults from Config Element menu to your test plan and configure it to:
- Retrieve All Embedded Resources
- Use concurrent pool. Size 3-5 threads
It is also worth to add few more configuration elements to make your tests realistic like:
- HTTP Cookie Manager – to simulate browser cookies and deal with cookie-based authentication
- HTTP Cache Manager – to represent browser cache, real browsers download embedded resources but do it only once, it makes sense to replicate this behavior
- HTTP Header Manager – to send relevant headers like User-Agent, Accept-Encoding, etc.
In regards to JMeter slaves, distributed testing is required when single JMeter load generator is not capable to produce required load due to CPU/RAM/Bandwidth/whatever limitations. Distributed mode means that one JMeter master engine orchestrates several slaves which produce actual load and send reports back to master.