Reputation: 1382
I have been asked to load test a web page here at the company I am currently working for. So far, so good.
But..... The project manager would like to have tests running as real users generating requests / interacting with the website.
It seems to me like the real true scenario to be achieved: computer-Simulated users interacting with a website instance logging, navigating, buying, etc. So, to achieve this goal, I started to look for some load test tools.
I've been checking 2 of them since last week: Visual Studio ultimate 2012 Load Testing Tool and JMeter. They both seem like good alternatives for performing load tests. I have successfully created, runned and cconfigured tests with both of them.
My problem: I cannot emulate real users with them. Neither of them runs JS, neither renders HTML (as far as I understand), among other browser-like tasks.
So, my question is: Can I perform such load tests with some oder tools? Or maybe with them in a way I have not heard of? Has anyone crossed these issues and have experiences to share?
I have considered creating a script to start several tests in threads, each running maybe a Selenium Web Driver test. But I don't believe that this can scale properly nor that I can achieve at least satisfactory test performance. Our intentions are to simulate from a few hundread to a few thousand (2-3k maybe) simultaneous users interacting with the website.
Thank you for your time.
Upvotes: 0
Views: 1452
Reputation: 16185
Using Visual Studio, you can record the interactions with the UI and then load those recording in to load tests and run those load tests. You can record any type of your UI interaction. So I don't know why your actions can't match with real users. My asp.net mvc 3 site is using knockout, json, JS heavily and I am able to successfully run all of my performance tests without any issues while using VS ultimate 2012 for load testing so I am not sure why you are facing issues.
details on creating UI recording tests and load tests - http://msdn.microsoft.com/en-us/library/vstudio/dd293540.aspx
In case someone need some info on load test strategies - You can build various strategies like 40% of your users will be buying the products and 60% will be just navigating. You can play around with various strategies to see how your machines behave under different set of load and find out what is the threshold value of your resources and after that either you need to scale up or out. As long as system is responding linear it should be ok but when you see a peak in avg. response time, avg. page time (sec) and that is the time you need to take some action.
details on building load tests strategies - http://msdn.microsoft.com/en-us/magazine/cc188783.aspx
Upvotes: 0
Reputation: 11326
You said:
I have considered creating a script to start several tests in threads, each running maybe a Selenium Web Driver test.
You can do exactly this with NeuStar web performance (formerly BrowserMob). You upload several Selenium scripts and configure a test based on these. NeuStar then provisions Amazon cloud machines to run your scenario, monitors them and provides nice reports.
It's not free. It's very cheap (a few dollars) for tests involving up to 25 users and more expensive the more virtual users you need. That said, the engine behind it is called BrowserMob Proxy which is open source, so with some effort you could do it all yourself.
Upvotes: 0
Reputation: 10848
I don't know how you define "real user" here. I have some experience with JMeter, and the closest "real user-like" case I have done is making a script that consists a list of typical requests a user will do. For example:
Then we generate around 100 threads within 100 seconds, imitating 100 user X doing that same thing at the high time. By that way, along with a good profiler, we can estimate how the system performs when there are 100 users online at the same time (for example, average response rate, max responserate...) and which function is the bottle-neck that we must consider optimization.
Upvotes: 1