Forum Discussion

GlennEtchison's avatar
GlennEtchison
New Contributor
15 years ago

What is the best way to simulate users?

First off, I am a "green as grass" new SoapUI/LoadUI user. I am very excited about these tools, but I need an explanation of some of the settings.

Background Info:
I have an app that, on startup, will sequentially make a number of Soap requests from our Web Service. I have a SoapUI Test Case set up for a single instance, but I want to simulate X users accessing the app over Y time frame. I hope to be able to run the load test under a number of load profiles (heavy at first tapering off towards the end, fixed rate, etc) Including a load level that "breaks" the web service.

I see a number of settings that look like they may be on the path.

1) In SoapUI, I can create a load test and run it with a limit of Y time Using X threads but that would front load all of the tests.
2) In SoapUI, I can create a load test and run it with a limit of Y time using less than X threads, but that still doesn't seem like the best choice.
3) In LoadUI, I can have a project that calls the test case with a fixed rate generator creating X tests / Y time frame. This doesn't indicate the number of concurrent requests, just total requests over the time frame. Looking at the advanced tab of the SoapUI Runner I see a concurrent samples value. Is this how I determine how many concurrent users I have?
4) In LoadUI, there is also the "Virtual Users" generator which sounds great but the documentation says "This component needs to be connected to a sampler which will be used to provide the load." I am not certain what this means. I don't see a "sampler" component. Also, how does this interact with the concurrent samples value in the SoapUI Runner.

Any explanation/advice is appreciated,

Glenn Etchison
Anyware Mobile Solutions.

4 Replies

  • Hi!

    I'm not 100% sure I understand you correctly, but probably using loadUI to generate the desired load would be more flexible for you, as you can use Scheduler components to enable/disable different generators over time (there is an example of this in the included loadUI Getting Started Project), which would allow you to change generated load over time desired. When it comes to "simultaneous users" I'm not sure what you want to achieve; from the server side point-of-view it wouldn't make any difference if the requests are generated with one or 100 threads, as long as the rate is the same.. unless you want to (for example) run 10 requests per second but have all requests start at the same time instead of them being evenly spread out (ie one every 100ms).

    Can you elaborate more on exactly how you want your TestCase and its contained requests to be sent so we can give you a more specific answer?

    regards!

    /Ole
    eviware.com
  • Ole,

    I am hoping to have multiple users initiating the test simultaneously. This is to simulate what I hope to be thousands of users being asked to update their mobile databases simultaneously.
    The goal of this test is to determine how many users can open the app near simultaneously without taxing the server beyond 80% CPU Usage or causing the app to fail due to timeout.

    A sustained rate should give me some idea, but I need to be able to express that as a number of users. I am trying to approximate real life as much as possible and with thousands of potential users being prompted to access the mobile app at essentially the same time, I predict that there will be some requests generated simultaneously and I hope to duplicate that with LoadUI.


    Henrik,

    The Fixed Load Generator may be the ticket. If I have multiple calls to the operations in my Web Service, most requiring data from previously call operations, is the interval going to apply to the called operations within the test, or the interval between the end of one test and the beginning of the next?

    Thanks guys, I've lots to learn yet, but I think this will help me accomplish great things.

    glenn
  • GlennEtchison wrote:
    The Fixed Load Generator may be the ticket. If I have multiple calls to the operations in my Web Service, most requiring data from previously call operations, is the interval going to apply to the called operations within the test, or the interval between the end of one test and the beginning of the next?

    If you use one soapUI Runner that does all the calls, then the interval will apply for the whole soapUI TestCase as one unit.

    (Regarding the term sampler; that is what we used to call Runner Components. I've updated the documentation.)

    /Henrik@eviware