JMeter POST/Send files after redirect - jmeter

I have a problem with JMeter testing for File Uploads.
I want to upload a certain XML-file.
When I create the request to "exampleurl.de/upload"
the POST date will be only for this URL, but I want to Upload the File to the redirected Page "exampleurl.de/upload?execution=e3s1"
But I can't create a Request for the redirected URL.
Is it possible to wait for a redirection and then send the POST request?

You can put the redirect request first and upload request after it. Make sure to put follow redirect checkbox in the HTTP sampler. Jmeter will execute the upload request once the previous redirect request gets the response.
Hope it helps.

Related

How to remove request body from subsequent requests in JMeter

I tried to create a test script in JMeter where I log in by using API. I created a test script by BlazeMeter chrome extension.
Some of my API calls fail because I am getting CloudFront error. I found out the issue is that GET requests contain a request body. GET requests cannot contain a request body on CloudFront. When I tried the same get requests in postman without request body, I didn't get any errors. I got the same error in postman if I added a body request. This way I can confirm this is the issue.
I am looking for a way how to remove body request from subsequent GET requests in JMeter to get rid of this error.
This is the original API call (sampler) with POST login api request:
After the POST request there is a redirection to a page that makes other GET api calls to fetch static files such js files, etc. The problem is that these GET requests also contain the same request body as the original POST call.
As you can see I can fetch statis files if I remove body request:
I tried to add preprocessor and postprocessor for original POST request, but I don't know how to access subsequent GET requests. I can access only original POST request:
Is there a filter or a way how to remove body request from GET requests?
I don't think it's possible, at least not with JMeter 5.5
If you take a look at HTTPSamplerBase source code you will see that the request body is being copied fully from the original HTTP Request sampler:
this.sampler = (HTTPSamplerBase) base.clone();
So the options are in:
Raise an enhancement requests via JMeter Github Issues
Amend HTTPSamplerBase code to remove the request data from generated AsyncSamples
Handle embedded resources download manually using Parallel Controller

JMeter - Should I remove Redirect from recorded script?

I used the Blazemeter Chrome plug-in to record. When the UserID is checked, browser is redirected to another URL. This redirect is recorded in the script.
Want to ask:
I read that the redirect will occur during the UserID check if I have Follow Redirects checked ? Is this correct ? The reason I ask is that I saw some extra HTTP request generated but they are not the same URL as the redirect which was sent from the server.
So I can actually just remove the redirect URL recorded ?
Thanks.
Your JMeter test must generate the same network footpring as the real browser does
So you can use a sniffer tool like Wireshark or Fiddler to compare the number/nature of the requests which originate from JMeter and from the real browser, the requests must be exactly the same (apart from dynamic parameters which needs to be correlated)
If HTTP Request sampler redirects automatically and the next request basically duplicates the redirected one - remove the recorded one.
If automatic redirect is causing troubles and you're not able to extract dynamic elements because they're "hidden" in 2nd level of sub-results - disable redirection in the HTTP Request sampler and leave the recorded separate request which mimics redirection.

HTTP POST Request to a login form doesnt work in Jmeter

I have a login form that has form method set to POST, form-action set to a servlet, and an OnSubmit function to check the field data.I want to performance test a file download funcitonality that lies behind this login form. To acheive this i am running a parallel sampler to login and then download the file.
The first sampler is for the login and the second one is to dowload the file.
In the first sampler, I want to POST data on this form using JMeter's HTTP Reqest Sampler.
I have inspected the form and created a sampler with three parameters, the username, the password and one more non-discloseable field. I have set the path to the servlet since it is the one handling the requests for the form.
The post request doesn't do anything in this case.
What should i do or check or modify to make sure that the POST request is hitting the correct endpoint and that it actually submits the form data.
You need the samplers to be sequential, I think if you attempt to download the file without prior logging in - the request will fail somewhere somehow.
If it is not sufficient and you would like to add an extra level of checks, i.e. test that the endpoint returns anticipated response code or has certain text you could add Response Assertion as a child of the request and add pass/fail criteria there.
If you don't know how to properly build login and download requests, the easiest way is just recording them using HTTP(S) Test Script Recorder, JMeter will capture the requests and generate relevant HTTP Request samplers and HTTP Header Managers

Request redirecting when running a flow in jmeter

I have recorded a script in JMeter, when I run it in view result tree URL gets changed automatically to some other page. My original request has no cookies while the page to which it redirects contain cookies. Later , I checked manually in my browser I saw cookies passing in the request. So, I added HTTP header manager with cookie data , I executed the test still it is redirecting. I thought to correlate cookie value but I can't get it in any response above. Can anyone suggest?

Ajax request redirect

I am doing a Ajax request, in the response depending on some condition. I might send a 301 status code with a location(redirect) URL. But when I do that there is a ajax request to the redirect URL, but I want it to be a normal request not a ajax request.
Is there a way to do that?
it's pretty easy, you might want the server to return an url instead of performing redirection, end then use window.location to perform redirection in javascript :).
Javascript can't see the redirect response, only the final response from the URL the browser was redirected to.
Javascript can try to recognize the situation by analyzing the response content: Maybe it expects JSON but gets HTML (e.g. a login page :-) )
To do it right you'd need to modify the service to return a non-redirect response code to the Javascript which it can then handle (e.g. 401 when the session expires and the user must log in again)

Resources