Performance tool for Web Single Page Application - jmeter

Please, assist me on this one.
Project is for Web Single Page Application that does not provide different urls for different view. Everything loads by clicking within one screen. I was asked to find performance tool to test such application.
I will not be able to get HP Loadrunner or any such tool that is in the same price range. Maybe there is an open source or how to use JIRA for my project?
Thanks

When you click somewhere, even if screen doesn't change, browser sends relevant HTTP Request (usually GET or POST). JMeter acts on protocol level, it doesn't actually "render" the page or execute JavaScript but it can send any HTTP Request.
So you should be able to record all the requests using JMeter's HTTP(S) Test Script Recorder and replay them with larger number of threads according to your load test scenario.
You can use View Results Tree listener to visualize request and response details and JMeter Assertions to ensure that test actually does what it should do.

Related

How Record WEB Application and test load/Performance in JMeter

I tried to test one WEB application. I log in to the application and then go to diff. menu. In JMeter, I used "HTTP(S) Test Script Recorder" to record the application after stopping the recording many requests are created and I tried to run those requests then some requests failed it shows error 403, "Invalid username and password ". Here I also used a recording controller.
So I need help to test the load /performance of my web application for multiple users so how is it achieved?
I don't think that "many" requests should be created, I can think of 3:
Open login page
Perform login
Go to "diff" menu
If you're seeing "many" requests most probably you're recording a lot of stuff that you should not be recording like embedded resources
There is Recording Template which is kind of handy, it has pre-defined patterns for excluding of common file types which you should not be recording
Also be aware that in the majority of cases you won't be able to successfully replay a set of recorded requests without correlating the dynamic parameters.

Web API load testing

When I record script, my login page recorded as html. but other pages not recorded as html pages rather it shows as js and web APIs. I cannot able to record or create script using html url. Kindly anyone help what exactly the solution. I can able to load test only web API or any way to create script using html urls.
It depends on your application nature. The whole idea of web applications load testing is simulating real users which are using real browsers as close as possible so ideally your load test should exactly mimic the HTTP Requests originating from browser when user is doing actions according to application use case(s).
You should not be recording .js files as well as .css files, all images and other media (audio, video, flash, whatever), instead of this you need to configure JMeter to download embedded resources instead of recording and replaying the relevant requests.
If you need to load test the API itself you can omit simulating browser and send requests directly to API endpoints, check out Building a WebService Test Plan JMeter User Manual chapter for more details.

Is there any way we can modify Json data coming in the network tab of chrome and see the changes in the web page?

The webpage Template loads data via some json data we get from the endpoint.
I have a Rest Api and a Angular Front end . The Angular app populates the template from the data coming in from the rest api which we can see in the Network Tab of Chrome Developer Tools.
Is there any way we can modify the Rest data in Network tab and see the changes that occurs in the Webpage.
Is that even possible, It might sound a stupid question but i guess this might be a very special tool if there is not much interaction between the Back end and Front end teams.
I am not quite sure if i am able to explain it properly but this was the best i could edit please bear with me thanks
Just a Screen Shot of the type of data in Network tab.
Sample Data Network Tab
It is not possible from chrome's network tab. You have to use BurpSuite for example which is available in Kali linux as a default. With that you can intercept http requests and responses and modify it's payload.
You can get it from here: https://portswigger.net/burp/
No, you're not able to modify XHR data as you can other sources. What I do is just copy the file to my local drive and temporarily modify it's source. I test responses from API's using Postman and it's pretty awesome.
I have to say I'm a little bit afraid for you though. It's not a great idea to be consuming services from external api's from the client side. Are your API keys and passwords hanging out in that client side code somewhere?

How to implement the following scenario using Jmeter?

Can anyone help me out how to implement the following scenario using Jmeter, in this scenario N number of users should be able to log in at once and implement the same scenario at the same time?
I have already tried using recording option but it is not updating in the database.
To some HTTP requests, it is showing SSO issue.
Steps:
1. Login to the web application.
2. A landing page is displayed.
3. Two options displayed.
4. Selecting one option, which will redirect to the specific landing page.
5. From home page, we will search for the products.
6. Selecting one product and it redirects to the customization page.
7. In the customization page, we are inputting the values, updating the changes to the order.
8. Finally completing the order with update changes in it.
Where the customize order will ask us to move into the cart or it will ask us to submit for approval.
The solution basically depends on what you exactly testing.
Let's consider the application consists of single HTTP server (at least, in terms of endpoint) + single HTTP client (which doesn't reach different sources for data/services, especially with modern protocols like websocket).
Then each of your scenarios turns out to be a series of HTTP request/response interactions, whatever happens under the hood.
So the best way to lay it out for JMeter would be to record sample(s) of this interaction & parametrize it.
You can do it with JMeter itself (check, for example, this guideline or "official" one), or use other tools (like Fiddler) then implement the sequence in the JMeter.
But that is for more, say, "classic" web app, where client (browser) are pretty lightweight and mostly in charge of sending requests & rendering responses - while most of the duties lays on server, and this is that you going to test for performance.
For modern, web apps with responsibilities blurred & spread between server AND client (not to mention asyncronous interactions) that way may be good enough too - but may be NOT.
Then you'd may want to evaluate performance for app as a whole, in assembly.
One of the way to achieve that in JMeter is to use WebDriver plugin for JMeter, check this tutorial.

click on a button using jmeter

I am testing a site using JMeter. For form submission I am using HTTP Request Sampler of JMeter.Its working fine. But I wanted to know that, is it possible to click submit buttons of html forms and receive responses using JMeter(exactly what we can do using browsers)?
No, You can not simulate events like button click using JMeter. JMEter can record web HTTP request-response and simulate it for a number of times.
You can use Selenium IDE to record and test user interactions on your web page.

Resources