jmeter proxy recording duplicate request - proxy

I am currently using JMeter to record a test scenario with the HTTP test recorder proxy.
Problem is, when I send a request with IE on my application, the recording controller gets flooded with an unlimited number of duplicate requests corresponding to the one I just sent.
Multiple requests when accessing default page
Any idea about why this could be happening is welcome.
Have a good day

JMeter's HTTP(S) Test Script Recorder should be accurate enough and if you see extra requests most likely they happen.
I would recommend double checking what's going on on network level between IE and application under test Using Windows Internet Explorer Developer Tools Network Capture.
If it reproduces in IE without JMeter proxy - it might be an integral part of your application, i.e. it does periodic polling for updates using AJAX calls which needs to be reflected in your load test as well.
If not - you need to find the reason why does JMeter behave this way starting from enabling debug logging for JMeter proxy. It can be done by adding the next line to log4j2.xml file (lives in "bin" folder of your JMeter installation)
<Logger name="org.apache.jmeter.protocol.http.proxy" level="debug" />

So after hours of setting comparison and http request analysis, I found out it was just the "type" parameter of the HTTP Test Script Recorder that needed to be set to "Java".
Hope this can help someone.
Don't forget to have a good day :-)

Related

Jmeter Recording xml issue

I am trying to record a script for web application (https protocol)using jmeter-5.3. The xml file in the view result tree of HTTP(S) Test Script Recorder is capturing all the calls. but once I finished my recording and check the xml file doesn't have the calls(the first 3-4 transaction calls) in the beginning of the script in the xml. why its happening and how can I fix it?
According to JMeter Best Practices you should be using the latest version of JMeter so consider upgrading to JMeter 5.4.3 (or whatever is the latest version which is available at JMeter Downloads page)
Check "Grouping" setting of the HTTP(S) Test Script Recorder, it might be the case you have Store 1st sampler of each group only selected and it can discard important requests:
Make sure to use Recording Template as it generates good and valid recording test plan
Check jmeter.log file for any suspicious entries
Try alternative way of recording a JMeter test i.e. JMeter Chrome Extension and see whether all requests which should be captured are captured.

Why the application is throwing error when I execute a search transaction via Jmeter proxy, but not when I manually execute the transaction?

I am facing this problem, and I suspect it is security related.
I am using Jmeter corelation recorder to record my scripts for testing,
I tried recording a search transaction in my application which is a document management system and as soon as I search(after Login) , it throws an error, while when I run the functionality manually it runs well.
Should I try forcing Jmeter to use my local proxy for recording or even playback(I have developed the script with Blazemeter extension as the Jmeter proxy recording was not working) ? The script however fails to playback the search transaction, server returns a 500 error.
I also see that Blazemeter extension has no problem recording the search transaction, which makes me suspect, that probably a security certificate is missing when I try recording via Jmeter proxy.
Correlation recorder doesn't do any magic when it comes to identifying dynamic elements and coming up with proper regular expressions to handle them, you still need to do it manually prior to starting recording.
With regards to JMeter recording failing: yes, you need to import the JMeter's certificate into the browser, this way JMeter will be able to intercept and decrypt HTTPS traffic, see HTTPS recording and certificates chapter of JMeter's documentation on HTTP(S) Test Script Recorder for more details.
If you add View Results Tree listener and see the responses, most probably your login fails somewhere somehow hence search fails due to your virtual user fails to login.
So make sure that
JMeter sends the same network requests as the browser does
all dynamic values are correlated
HTTP Cookie Manager is added to your test plan
given all above criteria are implemented you shouldn't experience any problems.
There is a 3rd-party solution: BlazeMeter Proxy Recorder which seems to be capable of automatically detecting and correlating dynamic parameters, if you're new to this concept - even if it won't resolve your problem fully at least it will give you some clue.

JMeter HTTP Request Slow Response

I am using JMeter to perform load testing on HTTPS site. I created script using Blazemeter Script Recorder Manually, I am able to launch and login to website very efficiently. when I play script HTTP Request is working very slow. It take long time to initiate and complete each request as shown below in image.
1st Request:
Second Request:
I have created only one thread as mentioned below in the image
I will be thankful to you for your help in this regard as i am facing too much delay in each Http Request
Thanks
I don't think we can efficiently troubleshoot your network issues by looking into these 2 screenshots, I can only state that well-behaved JMeter script produces almost the same response times as the real browser does (actually a little bit less because JMeter doesn't really render the response)
If you want to have the "real" time from your browser either use a "clean" session by removing all browsing history, especially cache or disable the caching in your browser developer tools and compare with the load time metric:
What I can tell by looking at your screenshots is that you have very high Connect Time values:
For first request it takes 1 second out of 2.6 seconds to establish the connection
For second request it takes 900 milliseconds out of 1200 milliseconds to establish the connection
So if you are in Australia and trying to test a server which is located in northern Canada - the only solution would be moving JMeter geographically closer, otherwise contact your network administrator/ISP/etc. and ask them, not us.
You can get debugging information on Java network stack by adding the next line to system.properties file (lives in "bin" folder of your JMeter installation)
javax.net.debug=all

JMeter Recording - All actions cannot be performed

While recording a workflow through JMeter proxy, I am not able to click some items(like buttons), which otherwise are available when the website is getting loaded without JMeter proxy.
Now, needless to say, i have to click those buttons to perform certain activities essential as a part of the workflow whose performance I want to measure.
I am quite new to JMeter, so not sure how to proceed with the problem. Is there any Proxy settings i should change?
When I am checking the website source there is no difference between the page getting loaded via proxy and the page without it.
Please let me know if additional info is required. Thanks in advance!!!
Check jmeter.log file (usually lives in JMeter's "bin" folder or folder, you launched JMeter from if it's different) for anything suspicious. Log file should be the first place to look into as JMeter basically writes anything there.
You can increase verbosity if required by adding the next line to user.properties file (again lives in "bin" folder of your JMeter installation)
log_level.jmeter.protocol.http.proxy=DEBUG
Try cleaning your browser history, it's better to delete everything, especially cache.
Try re-installing JMeter certificate. See Installing the JMeter CA certificate for HTTPS recording chapter of the HTTP(S) Test Script Recorder (was: HTTP Proxy Server ) for instructions
If above steps won't help and you're absolutely sure you're doing everything right you can try raising a JMeter issue
Also be aware of JMeter Chrome Extension which is an alternative way of recording a JMeter test which doesn't require proxy server.

Jmeter & browser concurrent requests showing different results?

When I have given 500 concurrent users load via jmeter my server throwing error message but the same time I have called same request via browser showing proper response. How it is possible? Is there any settings in jmeter for avoiding same.
It is hard to say what can go wrong without seeing your JMeter configuration, full server response, JMeter and application under test logs and network dump for browser and JMeter.
The whole idea of performance testing is mimicking real user as close as possible, so you need at least
Add HTTP Request Defaults and set JMeter to:
Download embedded resources
Use concurrent pool of 2-5 threads
Add HTTP Cookie Manager
Add HTTP Cache Manager
Add HTTP Header Manager
Correlate any dynamic parameters
Simulate any specific application behaviour (i.e. AJAX calls)
etc.
In addition to above recommendations: ideally given "good" JMeter you shouldn't see any "response messages", you should see a number of errors in final report so double check you:
Run JMeter in non-GUI mode
Storing only those metrics which are absolutely required
Follow other recommendations from 9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure
beside, what Dmitri described above, I would also check the actual throughput the server returns in either cases.
Throughput depends a lot on the timers you configured in Jmeter to simulate think time.
Jmeter has no rendering and no javascript engine, so each thread is much much faster than a real browser.

Resources