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
    apps
    ..
    I would like to run mine with apache JMeter, a well-known open source
    tool.
    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
    1. Advertising

  2. martin carmichael

    Scott Allen Guest

    Hi Martin:

    We use Microsoft Application Center Test, I believe this only comes
    with the Enterprise edition of Visual Studio.NET.

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/act/htm/actml_main.asp

    --
    Scott
    http://www.OdeToCode.com

    On 23 Aug 2004 06:38:28 -0700, (martin
    carmichael) wrote:

    >Hello,
    >
    >I am wondering how aspnet developers do their web stress on ASPNET
    >apps
    >.
    >I would like to run mine with apache JMeter, a well-known open source
    >tool.
    >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?
     
    Scott Allen, Aug 23, 2004
    #2
    1. Advertising

  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)


    "martin carmichael" <> wrote in message
    news:...
    > Hello,
    >
    > I am wondering how aspnet developers do their web stress on ASPNET
    > apps
    > .
    > I would like to run mine with apache JMeter, a well-known open source
    > tool.
    > 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?
     
    bruce barker, Aug 23, 2004
    #3
  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
    load.
    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,



    Scott Allen <bitmask@[nospam].fred.net> wrote in message news:<>...
    > Hi Martin:
    >
    > We use Microsoft Application Center Test, I believe this only comes
    > with the Enterprise edition of Visual Studio.NET.
    >
    > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/act/htm/actml_main.asp
    >
    > --
    > Scott
    > http://www.OdeToCode.com
    >
    > On 23 Aug 2004 06:38:28 -0700, (martin
    > carmichael) wrote:
    >
    > >Hello,
    > >
    > >I am wondering how aspnet developers do their web stress on ASPNET
    > >apps
    > >.
    > >I would like to run mine with apache JMeter, a well-known open source
    > >tool.
    > >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 24, 2004
    #4
  5. martin carmichael

    Scott Allen Guest

    Hi Martin:

    I know we have (not me, unfortunately) created multiple users and user
    groups in ACT in order to test with N different users.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/act/htm/actml_nav_cug.asp

    --
    Scott
    http://www.OdeToCode.com

    On 24 Aug 2004 06:04:36 -0700, (martin
    carmichael) wrote:

    >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
    >load.
    >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,
    >
    >
    >
     
    Scott Allen, Aug 24, 2004
    #5
  6. martin carmichael

    pdam

    Joined:
    Jan 10, 2011
    Messages:
    1
    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
    #6
  7. martin carmichael

    arumugham

    Joined:
    Jun 12, 2012
    Messages:
    1
    Location:
    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
    #7
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    0
    Views:
    1,223
  2. Replies:
    0
    Views:
    1,605
  3. Replies:
    1
    Views:
    2,333
  4. Mike

    JMeter session ID

    Mike, Mar 15, 2005, in forum: Java
    Replies:
    3
    Views:
    10,140
    sreenivasulu
    May 22, 2012
  5. Elhanan
    Replies:
    0
    Views:
    571
    Elhanan
    Aug 3, 2005
Loading...

Share This Page