jmeter-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Zippy Zeppoli <zippyzepp...@gmail.com>
Subject Re: complex javascript actions in jmeter load test
Date Wed, 06 Feb 2013 02:44:18 GMT
Deepak,
Actually that does matter it cannot do JavaScript. If a request requires
you need to be able to click a JavaScript button then the request will
never happen. No request will ever be made.  Also testing true web
performance requires rendering the DOM, not just initiating HTTP requests
and recording the response time, rps, etc.

Real browser is needed, with JavaScript, and Jmeter doesn't integrate well
with this, it isn't designed for this, which is understandable. The problem
is there is a gap between real browser testing (owned by third party
companies) and open source tools (Jmeter). There's nothing in between for
real-browser based performance testing. I could go into why, but its off
topic of this list, and I'd rather spare everyone the gas.

Point being, Jmeter cannot solve my problem, without some serious
customization.



On Tue, Feb 5, 2013 at 6:33 PM, Deepak Shetty <shettyd@gmail.com> wrote:

> Hi
> You are getting too caught up in the JMeter doesnt do javascript thing. In
> most cases it doesnt matter.
> You have a webserver that is receiving HTTP requests - whether those
> requests are generated via the user clicking a link or via AJAX or via
> flash is hardly relevant to the webserver. It sees HTTP requests and sends
> HTTP responses.
> JMeter deals with HTTP request and responses. As long as you can make the
> same request that your javascript is making (which you can see via the
> recording feature) , you can test it with Jmeter. The fact that the proxy
> cant record javascript is irrelevant - it only needs to record the
> requests. If your javascript is responsible for generating the requests in
> some way , then you have to replicate that within JMeter.
>
> Some caveats here are
> a. Your toolkit should be good when you need to parameterise(JQuery is
> great , GWT sucks)
> b. If you need to perform some AJAX requests in parallel then JMeter isnt
> quite there yet.
>
> Its probably true that it is easier writing scripts for Selenium like tools
> - but they also need more resources as well as given how often a UI changes
> as opposed to the HTTP request/response pair , sometimes JMeter scripts are
> more resilient to change.
>
> regards
> deepak
>
>
>
>
>
>
>
>
> On Tue, Feb 5, 2013 at 5:29 PM, Zippy Zeppoli <zippyzeppoli@gmail.com
> >wrote:
>
> > Proxy won't work for clicking on JavaScript.
> > Selenium will, however, Selenium isn't designed for performance testing,
> > with the exception of BrowserMob, who has perfected it.
> >
> > If JMeter had some kind of (good) Selenium integration then it might be
> > able to achieve it.
> >
> > I think JMeter is a good tool, but it's not built for this kind of work.
> >
> > On Tue, Feb 5, 2013 at 5:20 PM, David Luu <mangaroo@gmail.com> wrote:
> >
> > > I'm not familiar with the full feature set of BrowserMob, but JMeter
> can
> > do
> > > what you want, easy or hard, depending on your needs.
> > >
> > > If all you need is simple record & playback, JMeter proxy is best
> option.
> > > Just record w/ proxy, it generates a basic test plan that you can save
> to
> > > file and run w/ X threads to generate load, etc.
> > >
> > > But that approach will always use the same user, same data in the AJAX
> > > calls during load generation.
> > >
> > > If you need them to be unique & parameterized, that's where it takes
> some
> > > work to go in and cleanup the proxy recording w/ paramaterized data,
> > > response checking (if more than just checking HTTP 200 OKs). And you'll
> > > find proxy recording generates a lot of unnecessary HTTP requests for
> > HTML,
> > > CSS, image files that aren't necessary of interest as you're testing
> the
> > > AJAX calls, which is where you filter out only the requests of interest
> > and
> > > only use those in test plan, etc.
> > >
> > > I believe this kind of work is needed regardless of what tool you use,
> > some
> > > tools just make it easier, but there's still work to do. Not just a one
> > > touch button approach unless all you need is simple record & playback.
> > >
> > > On Tue, Feb 5, 2013 at 5:08 PM, Zippy Zeppoli <zippyzeppoli@gmail.com
> > > >wrote:
> > >
> > > > Will probably just buy BrowserMob.
> > > > Too bad there isn't an open source framework to already do this.
> > > >
> > > > Building this is a yak shave, and I need to be testing, not building
> a
> > > test
> > > > harness thats probably going to break on the next release.
> > > >
> > > > On Tue, Feb 5, 2013 at 3:40 PM, David Luu <mangaroo@gmail.com>
> wrote:
> > > >
> > > > > JMeter proxy is the most integrated approach, but I find it gives
> > "too
> > > > much
> > > > > information", so I tend to use external tools like browser traffic
> > > > sniffers
> > > > > (HttpFox, livehttpheaders, ieHttpHeaders) to see what HTTP requests
> > are
> > > > > made for AJAX calls for just the requests & responses I'm
> interested
> > > in,
> > > > > easier to manage. But that's just my opinion, others might find the
> > > > JMeter
> > > > > proxy easier to use.
> > > > >
> > > > > Whatever approach you take, you just need to know what HTTP
> requests
> > > are
> > > > > made by the AJAX calls to replicate in JMeter, and parameterize
> those
> > > > > requests to take in dynamic/test data as needed, assert appropriate
> > > > > response data, etc. In this case, WebDriver can be dropped from the
> > > > > equation, just gives more overhead and lowers scalability in load
> > > > > generation.
> > > > >
> > > > > On Tue, Feb 5, 2013 at 1:55 PM, Philippe Mouawad <
> > > > > p.mouawad@ubik-ingenierie.com> wrote:
> > > > >
> > > > > > AjaxCall will emit a network call which JMeter will capture.
> > > > > >
> > > > > > Use JMeter Server Proxy and you should have the Ajax Calls
> > recorded.
> > > > > >
> > > > > > Regards
> > > > > > Philippe M.
> > > > > >
> > > > > > Follow me on twitter <https://twitter.com/philmdot>
> > > > > >
> > > > > > UBIK-INGENIERIE on TWITTER <https://twitter.com/ubikingenierie>
> > > > > >
> > > > > > UBIK LOAD PACK BLOG <http://www.ubik-ingenierie.com/blog/>
> > > > > >
> > > > > > On Tue, Feb 5, 2013 at 10:52 PM, Zippy Zeppoli <
> > > zippyzeppoli@gmail.com
> > > > > > >wrote:
> > > > > >
> > > > > > > To clarify:
> > > > > > > An example would be:
> > > > > > > 1) log in via a form post
> > > > > > > 2) look at orders in an ecommerce interface (AJAX call)
> > > > > > > 3) click on result to view order detail (AJAX)
> > > > > > >
> > > > > > > Pretty much a standard ecommerce transaction, but the interface
> > is
> > > > all
> > > > > > > javascript.
> > > > > > >
> > > > > > > On Mon, Feb 4, 2013 at 7:40 PM, Stott, Charlie <
> CStott@tnsi.com>
> > > > > wrote:
> > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: David Luu [mailto:mangaroo@gmail.com]
> > > > > > > > > Sent: Tuesday, 5 February 2013 1:18 PM
> > > > > > > > > To: JMeter Users List
> > > > > > > > > Subject: Re: complex javascript actions in jmeter
load test
> > > > > > > > >
> > > > > > > > >  >> You can use webdriver from jmeter.
 Create a webdriver
> > > class
> > > > > that
> > > > > > > > > performs the requests and runs the javascript
via the
> > browser,
> > > > then
> > > > > > > > run/call
> > > > > > > > > it from a BSF or JSR sampler.
> > > > > > > > >
> > > > > > > > > Just to clarify, I take it that's only worthwhile
to do (in
> > > terms
> > > > > of
> > > > > > > > > scalability) when using PhantomJSDriver or HtmlUnitDriver
> or
> > > > > > > > FirefoxDriver
> > > > > > > > > (on Linux with xvfb) with JMeter this way?
> > > > > > > > >
> > > > > > > >
> > > > > > > > "Worthwhile" depends on assumptions.
> > > > > > > >
> > > > > > > > > Because otherwise, the browser GUI is the scalability
> > limiting
> > > > > factor
> > > > > > > > even
> > > > > > > > > with JMeter and Grid deployment, and in that
case, no
> > > difference
> > > > in
> > > > > > > using
> > > > > > > > > WebDriver outside JMeter to do performance tests
except if
> > one
> > > > > wants
> > > > > > > the
> > > > > > > > > JMeter logging/reporting facilities to help performance
> test,
> > > > > because
> > > > > > > > there's
> > > > > > > > > no or minimal scalabiity gain.
> > > > > > > > >
> > > > > > > >
> > > > > > > > Seems the poster is more at the capability/viability
stage of
> > > > > > developing
> > > > > > > > tests?  We would need much more information to start
advising
> > on
> > > > the
> > > > > > > entire
> > > > > > > > load testing process, start to finish, and what challenges
> may
> > > face
> > > > > the
> > > > > > > > poster along the way.
> > > > > > > >
> > > > > > > >
> > > > > > > > > On Mon, Feb 4, 2013 at 4:42 PM, Stott, Charlie
<
> > > CStott@tnsi.com>
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > You can use webdriver from jmeter.  Create
a webdriver
> > class
> > > > that
> > > > > > > > > > performs the requests and runs the javascript
via the
> > > browser,
> > > > > then
> > > > > > > > > > run/call it from a BSF or JSR sampler.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > > -----Original Message-----
> > > > > > > > > > > From: Zippy Zeppoli [mailto:zippyzeppoli@gmail.com]
> > > > > > > > > > > Sent: Tuesday, 5 February 2013 9:28
AM
> > > > > > > > > > > To: JMeter Users List
> > > > > > > > > > > Subject: Re: complex javascript actions
in jmeter load
> > test
> > > > > > > > > > >
> > > > > > > > > > > The problem is Selenium has no performance
testing
> > harness.
> > > > > > > > > > > Sucks that it seems BrowserMob (paid
solution) is the
> > only
> > > > > solid
> > > > > > > > option.
> > > > > > > > > > >
> > > > > > > > > > > Until someone builds something with
Phantom.js, but it
> > > seems
> > > > > > JMeter
> > > > > > > > > > > isn't going to cut it here.
> > > > > > > > > > >
> > > > > > > > > > > On Fri, Feb 1, 2013 at 5:40 PM, David
Luu <
> > > > mangaroo@gmail.com>
> > > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > You'll need to figure out what
the complex javascript
> > > does.
> > > > > > Does
> > > > > > > > > > > > it make any AJAX requests, or
is it all local client
> > side
> > > > > > > > > > processing/rendering?
> > > > > > > > > > > >
> > > > > > > > > > > > If it's all local, then there's
no point testing it
> > with
> > > > > > JMeter,
> > > > > > > > > > > > that's client side browser testing
better done with
> > > > Selenium.
> > > > > > It
> > > > > > > > > > > > won't impact the server side load
test (except delay
> in
> > > > > server
> > > > > > > > > > > > response time for fetching files
will impact the
> > > javascript
> > > > > > > > > > > > execution on client side, but
that can be compensated
> > w/
> > > > > JMeter
> > > > > > > > > > > > load test against server with
1+ Selenium test
> running
> > at
> > > > > same
> > > > > > > > > > > > time to gauge client side performance
of site/app in
> > > > > browser).
> > > > > > > > > > > >
> > > > > > > > > > > > If the javascript does execute
AJAX requests, you
> need
> > to
> > > > > > figure
> > > > > > > > > > > > out the HTTP requests made and
mimic that in JMeter
> as
> > > part
> > > > > of
> > > > > > > your
> > > > > > > > > test.
> > > > > > > > > > > > You can get that reading dev/design
docs, or reverse
> > > > > > > > > > > > engineer/traffic sniffing the
app while doing manual
> > > > testing.
> > > > > > > > > > > >
> > > > > > > > > > > > On Fri, Feb 1, 2013 at 1:45 PM,
Zippy Zeppoli
> > > > > > > > > > > > <zippyzeppoli@gmail.com
> > > > > > > > > > > > >wrote:
> > > > > > > > > > > >
> > > > > > > > > > > > > Hello,
> > > > > > > > > > > > > If I have a website which
requires logging in, and
> > > > > executing
> > > > > > > > > > > > > complex javascript actions,
how would I do this (if
> > at
> > > > all)
> > > > > > in
> > > > > > > > jmeter?
> > > > > > > > > > > > >
> > > > > > > > > > > > > I've heard of writing groovy
scripts to do this but
> > > this
> > > > > > sounds
> > > > > > > > > > > > > like a
> > > > > > > > > > > > lot
> > > > > > > > > > > > > of work / maintenance.
> > > > > > > > > > > > >
> > > > > > > > > > > > > Thank you.
> > > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > >
> > ---------------------------------------------------------------------
> > > > > > > > > > To unsubscribe, e-mail:
> user-unsubscribe@jmeter.apache.org
> > > > > > > > > > For additional commands, e-mail:
> > user-help@jmeter.apache.org
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail: user-unsubscribe@jmeter.apache.org
> > > > > > > > For additional commands, e-mail: user-help@jmeter.apache.org
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message