>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. The point is that what happens when the button is clicked? Assuming its a server - ajax call then A HTTP call is made and some parameters are passed and some values are returned. Thats whats important for the load test , not the fact that javascript was executed. So when you record the script , you will be the person clicking the button(you are recording your actions) , JMeter will record every interaction that makes a call to the server and will record this as a separate HTTP request and when you run the script the same request will be made as if someone clicked the button!
You dont need to use the recorder either , you can modify the script yourself. If the javascript didnt actually make any server side call - then it doesnt matter because you dont want to load test this anyway. Have you actually tried this? It sounds as if you have a problem recording your script and you probably have concluded that JMeter doesnt do javascript (true) and hence cant test websites that do javascript/ajax (false) >Real browser is needed Not for a good deal of use cases - as many of the people on this mailing list can attest too. On Tue, Feb 5, 2013 at 6:44 PM, Zippy Zeppoli <[email protected]>wrote: > 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 <[email protected]> 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 <[email protected] > > >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 <[email protected]> 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 < > [email protected] > > > > >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 <[email protected]> > > 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 < > > > > > > [email protected]> 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 < > > > > [email protected] > > > > > > > >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 < > > [email protected]> > > > > > > wrote: > > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > > > From: David Luu [mailto:[email protected]] > > > > > > > > > > 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 < > > > > [email protected]> > > > > > > > > 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:[email protected]] > > > > > > > > > > > > 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 < > > > > > [email protected]> > > > > > > > > > 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 > > > > > > > > > > > > > <[email protected] > > > > > > > > > > > > > >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: > > [email protected] > > > > > > > > > > > For additional commands, e-mail: > > > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > > To unsubscribe, e-mail: [email protected] > > > > > > > > > For additional commands, e-mail: > [email protected] > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
