2

I need to test a site and how it handles several connections simultaneously. Each user must:

  • Connect from a different IP address
  • Simulate a browsing user --> (open a few pages, click a few buttons)

I need to simulate about 200 users like this. Ideally I wish I could simulate 1000 and then 2000 as well.

What is the easiest way to do this? Would I be able to realistically write a script that does this, or is there a way I can leverage off my other servers to do this? I've also heard of people using EC2 to do stuff like this, but I think that's a bit above my head.

Any thoughts?

** EDIT **

In response to the comment below. A site is obviously a website. As in www.somedomain.com. The test would require several people to access this site, login with provided credentials, and then press then bid on auctions (its a penny auction type of site). They bid on auctions by pressing a button and the test would involve people opening pages and bidding.

rockstardev
  • 127
  • 3
  • 14
  • Vague. Clarify what to test, or this question might get buried. What's a "site" for you? Website? What does "Click a few buttons" even mean? – Roman Feb 28 '13 at 08:34

2 Answers2

3

First: This is not easy to do properly. Indeed it's even difficult to find people with the knowledge to do it properly...

With that said, here are some tips based on my experience of working with load and performance testing for a large site.

There are professional, expensive, tools for doing this. One of them is Loadrunner and it's the one used by our testing department. That's about all I know of it - I tell the testers what they should test and then they make it happen while I'm busy with other work...

If you don't want a professional expensive tool, what you would need to do is basically set up a server that has 200 different virtual IPs (or 1000, or 2000). Then you need a program that does lots of simultaneous connections from that server, each connection from a separate IP. The server should be placed directly on the same switch as the server you want to test. The reason for this placement is that you're essentially faking being the entire internet when you test, and you need to be sure that the traffic isn't actually routed out to the internet. You also need to have some idea of what the common usage patterns for your web site are. If you don't have them, you can still do a basic load test on e.g. visiting three random pages, but the results will be less relevant to your real use.

There are some tips on open source software to do this in this question on StackOverflow. But my main recommendation is to pay somebody that does this for a living; it'll be faster and probably less expensive than spending your own time.

Jenny D
  • 27,780
  • 21
  • 75
  • 114
1

First - unless you have an IP-based load balancing or authentication scheme in place, then the number if IP addresses is rarely important in load testing. The performance of the vast majority of web development frameworks is not affected by the IP address of the users.

But under the assumption that the number of IPs actually is important for your case, then you simply need a load testing tool that can give you the number of IPs you need. 200 IPs is not terribly difficult, since you can get that many on a single subnet on a single machine. Then simply use a tool that will make use of that (I'll plug our product - Load Tester, which has a LITE version that is free, you can use for simple tests and allows unlimited concurrent users).

When you need to do 1000 or 2000 users, that simply increases the number of load generators you need and the number of IP addresses you'll need to configure on those load generators.

Hope that helps!

CMerrill
  • 136
  • 1