web stress ASPNET with JMeter

Discussion in 'ASP .Net' started by martin carmichael, Aug 23, 2004.

  1. Hello,

    I am wondering how aspnet developers do their web stress on ASPNET
    I would like to run mine with apache JMeter, a well-known open source
    Unfortunately, it does not works well with ASPNET, I think maybe
    because postback in the dotnet area are not the same as in the
    html/java/cgi-bin traddition.

    In the aspnet area, the page is postback to itself, with a lot of
    viewstate events fired. it work well if you submit with a browser.
    But with a stress tool, like JMeter, or OpenSTA, this is not a browser
    that post a request page, but a piece of software, usually running in
    its own thread.

    It seems to me that something is missing there, as the debug trace is
    different, depending if a page is posted from a browser, like this:

    aspx.page Begin Init
    aspx.page End Init 0,000082 0,000082
    aspx.page Begin LoadViewState 0,000131 0,000049
    aspx.page End LoadViewState 0,000348 0,000217
    aspx.page Begin ProcessPostData 0,000414 0,000066
    aspx.page End ProcessPostData 0,000749 0,000335
    aspx.page Begin ProcessPostData Second Try 0,001026 0,000278
    aspx.page End ProcessPostData Second Try 0,001090 0,000063
    aspx.page Begin Raise ChangedEvents 0,001122 0,000033
    aspx.page End Raise ChangedEvents 0,001159 0,000037
    aspx.page Begin Raise PostBackEvent 0,001192 0,000032
    aspx.page End Raise PostBackEvent 0,950161 0,948969
    aspx.page Begin PreRender 0,950248 0,000087
    aspx.page End PreRender 0,950302 0,000054
    aspx.page Begin SaveViewState 0,951535 0,001233
    aspx.page End SaveViewState 0,951710 0,000175
    aspx.page Begin Render 0,951767 0,000057
    aspx.page End Render 0,953222 0,001455

    or if it posted from a stress tool, like JMeter, like this:

    aspx.page Begin Init
    aspx.page End Init 0,000091 0,000091
    aspx.page Begin PreRender 0,000272 0,000181
    aspx.page End PreRender 0,000360 0,000088
    aspx.page Begin SaveViewState 0,001071 0,000711
    aspx.page End SaveViewState 0,001221 0,000150
    aspx.page Begin Render 0,001273 0,000053
    aspx.page End Render 0,003051 0,001777

    as we can see, many events are not processeed when the post is done
    with JMeter.
    Can someone explains why and tell us a workaround?

    is it possible to replace asp:button events handling by input type
    submit button ? How could I handle input type=submit events? aspnet
    is not very well suited to do input submit handling, as it is geared
    torwards asp:button events.

    thank you,

    BTW: How do you stress test your aspnet web apps with multiple users?
    martin carmichael, Aug 23, 2004
    1. Advertisements

  2. martin carmichael

    Scott Allen Guest

    Scott Allen, Aug 23, 2004
    1. Advertisements

  3. martin carmichael

    bruce barker Guest

    I'm not familar with JMeter, but the challenge with .net pages, is the
    postback must include the the viewstate from the render. the contents of the
    viewstate is what identifies a postback as a postback. also if you use a
    autopostback controls, these are driven by client script, so you must
    emulate this in the stress tool, by filling is more hidden fields.

    -- bruce (sqlwork.com)
    bruce barker, Aug 23, 2004
  4. Hi Scott,
    I also have Microsoft Application Center Test, but I am not strong
    with it.
    it generates VBScript code when recording from browser activity.
    So, inside the VBS code, the username/password is hardcoded for the
    POST operation in the login page.
    There are also properties to set the number do connections for test
    Do you know how to dynamically change hard coded user names according
    to the thread?
    that is if I want a 5 users test load, I would like 5 different
    usernames and I do not know how to do this with Microsoft Application
    Center Test.
    thank you,
    martin carmichael, Aug 24, 2004
  5. martin carmichael

    Scott Allen Guest

    Scott Allen, Aug 24, 2004
  6. martin carmichael


    Jan 10, 2011
    Likes Received:
    Hi Martin ,
    I have been using Jmeter with ASP .Net for the last 6 months . It is svery much doaable . As pointed out you need soime BeanShell Scripting to get the Application Load Scripted .

    First Step should be to use Jmeter Recorder . Start the recorder and point your browser to use a proxy IP/Host which is being used by Jmeter Proxy Recorder . Make sure that you have a Controller where you can redirect the recorded Samplers . Verify this against the Jmeter GUI .

    Second Step : Parameterize your Application . This is the tricky part . .Net has some POSTBACK VARIABLES like __EVENTVALIDATION__ , __VIEWSTATE__ , etc which would appear are hidden controls . They are specific for a user session and hence you need to parameterize that

    To you http Sampler add a Response PostProcessor . Drag and add it as a child of a sampler . Use a regex to extract the value of the hidden component and assign that to a variable . Then in your subsequent Sampler remove the hardcoded value and place something like ${viewstate} or ${eventvalidaation} .
    Make sure that you use a DEBUG Sampler so that you can look at the script properties or Variables . Now replace all such variables and you should be good to start

    Regex id="__EVENTVALIDATION" value="(.+?)"
    RegexExtractor_template $1$

    I am attaching a script using these concepts so that you have some examples . Hope it is useful

    Attached Files:

    pdam, Jan 10, 2011
  7. martin carmichael


    Jun 12, 2012
    Likes Received:
    Bangalore, India
    Hi Martin,

    The way @pdam had mentioned is the exact way. You need to record the hidden field and postback variable first. I have found out an easier way to do instead of using jmeter recorder. you can use tools like filddler (http://fiddler2.com/fiddler2/). On postback all the variables that are to be passed can be easily listed. Check the screenshot http://www.freeimagehosting.net/r1pvn
    Then you can follow the steps like @pdam has suggested. Extract those values with regular expression extractor and pass it as a variable to the required pages to be tested.
    Hope it was helpful
    Last edited: Jun 12, 2012
    arumugham, Jun 12, 2012
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.