We have a struts application and there are concerns regarding its performance. We are using Tomcat6 and Java6 for our application.
Could anyone please suggest an easy to use analysis tool to analyze the performance of the JAVA code. It would really be helpful if we can get the step by step method to integrate our application with the analyzer and then get the output in a graphical and data format.
We actually need to know the exact time consumption in method level so that we can work on that method to increase the performance.
We need it urgently. Please help. Many many thanx in advance.
There are several profiling tools out there for java that suit your needs. Just google for java and profiler...
But you should have in mind only improve your performance if you have figured out a problem. To figure out if there is a real performance problem setup a test-environment that mimics the actual production environment (generate data you would expect in an production environment). So it is possible for you to do some testing and figure out if the response of the app is too slow and therefore unacceptable for an end-user. Afterwards do some analytical work and only do performance improvements if there is a need to do this.
Related
Is there any tool or plugin which we can incorporate with existing Functional Automation Test suite.
Earlier till 2011-12 we were using Dynatrace Ajax edition. It was a plugin for Chrome and IE. We had configured this plugin into Selenium Test case. When these Selenium test were executing it was running all functional scenarios of application and parallel that Dynatrace tool was capturing performance stats for each actions performing on the application. At last we were getting a consolidate Performance report along with the Selenium test results.
But now I am not able to get any such kind of tool,plugin etc. which will help us to capture Performance stats of application with Selenium suit run.
Please help me in finding suitable way for it.
Yes, if you are using ChromeDriver you can enable performance logging. I believe this is what you are looking for.
DesiredCapabilities cap = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), cap);
The above code is what you will use the enable the logging for your session.
You don't need any kind of plugin/extensions for this. It uses Chrome's own performance logging feature.
Let me know if you are looking for this specifically.
My answer is more of an opinion than a true answer to your question, but IMHO it's not so useful to measure the performance as part of your normal functional test cycle.
Measuring performance as part of a regular functional test cycle can provide you with a lot of performance data, but it won't tell you much. If you want to measure performance effectively, you should start with the question: what operation do I care to measure? And "Everything" is not the right answer... Then you have to define what performance do expect and under which circumstances. Then you should build a test and a corresponding environment to match these requirements. In addition, performance is usually not a fixed value, as it can be affected by many factors that we can't control (like external processes that may be running in the background). Therefore you should usually define the expected performance in statistical terms, like: 90% of the times, the measured operation should take no more than 3 seconds. This means that you should run the test at least 10 times (actually much more in order to be safe) in order to determine if the performance is good enough or not.
I am new to load testing.
So please help in learning gatling and Apache Jmeter for stress testing.
Please help in installing both on Windows and Linux.
How to implement them in my application?
Which one is better for stress testing?
You are asking very generic questions in terms of Stress/Load testing. I think it would be best if you take a look at their documentation then formulate a more specific question.
Installation documentation is best served from the creators of the software.
Implementing these load/stress testing tools into your application isn't really a thing. If you are looking for unit testing (test to utilize in validating your functions/classes/etc work then look at your languages specific go-to libraries - ie. Java is junit/jboss, Nodejs is Karma/Protractor, Python is TestCase/Nose, etc). These tools (jmeter/gatling) are used for stressing your application outside of your build process so they should be treated as end-users (meaning you run the stress testing from remote machines if it is a web service).
Either are best for the right scenario. I think jmeter clusters easier (built-in, where gatling is more manual) but gatling is more programatic and can be manipulated more.
These are opinions and shouldn't be taken as fact or the best so your milage may vary
I strongly doubt that you need them both, if you want a piece of advice in regards which one to choose take a look at Open Source Load Testing Tools: Which One Should You Use? guide.
Once you have clear vision on what tool better suits the needs - you could start ramping up on the selected tool and ask questions in its community communication channels.
I want to check live performance that is, load on server and how much time is taken by each function in zend framework. There are some blog, are saying that, performance of zend framework 1 is like this and performance of zf2 is like this. How they are measuring ? Is there any tool available to test that performance?
After developing my system, how can I be sure that my zend framework application is on its best performance?
You can measure the overall performance locally using a benchmarking tool like ApacheBench or Siege. These will give you a requests per second metric that you can use to measure improvements. Then use a tool like XDebug to profile your application - this will tell you where the bottlenecks are. Fix those problems, benchmark again, and repeat until you're happy.
If you are specifically wanting to measure the performance in production, your best bet is to look at third party services like NewRelic for this (although these will usually cost money).
I will recomend to use Apache Jmeter for load/performance tests and xhprof for profiling the code and find bottlenecks.
I've been looking at ways people test their apps in order decide where to do caching or apply some extra engineering effort, and so far httperf and a simple sesslog have been quite helpful.
What tools and tricks did you apply on your projects?
I use httperf for a high level view of performance.
Rails has a performance script built in, that uses the ruby-prof gem to analyse calls deep within the Rails stack. There is an awesome Railscast on Request Profiling using this technique.
NewRelic have some seriously cool analysis tools that give near real-time data.
They just made it a "Lite" version available for free.
I use jmeter for session-based testing - it allows very fine-grained control over pages you want to hit, parameters to inject, loops to go through, etc. It's great for simulating how many real users your site can handle, rather than just performance testing a set of static urls. You can distribute tests over multiple machines quite easily by loading up the jmeter-server on computers with publicly accessible IP's. I have found some limitations in the number of users/threads any one machine can throw at a server at once (it depends on the test), but jmeter has helped my team improve our apps capacity for users to 6x.
It doesn't have any fancy graphing -- I actually use my own in-house graphing with gruff that can do performance analysis on request time for certain pages and actions.
I'm evaluating a new opensource web page instrumentation and measurement suite called Jiffy. It's not particularly for ruby, it works for all kind of webapps
There's also a Jiffy Firebug Extension for rendering the metrics inside the browser.
I also suggest you look at Browser Mob for load testing.
A colleague of mine has also posted some interesting thoughts on this.
We are about to get a canned package in that has been modified to our needs. I'm part of the team setup to prepare tests for it. It has an Oracle back end and I believe it's written in C++ .NET.
My question is what free or open source testing tools would you recommend.
Thanks
Ken
For regression testing of our applications I use a free tool called AutoHotKey http://www.autohotkey.com/. It is simple, batch configurable, and can work for virtually any application you have. Not exactly designed for black box testing, but a good free tool to add to your toolbox.
While there are a few good commercial applications for black box testing of applications (HoloDeck http://www.sisecure.com/holodeck/index.shtml, Cenzic Hailstorm http://www.cenzic.com/), the only open source applications that I know about only test network security (Spike http://www.immunitysec.com/resources-freesoftware.shtml, OWASP WebScarab http://www.owasp.org/index.php/Category:OWASP_WebScarab_Project, and Nikto http://www.cirt.net/nikto2)
Value checking. See if only valid dates are exempted, number fields except the full range, ect.
What do you expect from such a tool? I don't know of any tool that can arbitrarily test any piece of software.
For what is sounds like you already know what it is that you want to check. Being a custom application your best bet would be to devise a test plan and manually test the values that you would like to validate.
Agree with the others - since the application has been modified to your needs, you should make sure that it actually is modified to your needs.
If the assembly isn't obfuscated, you can use FxCop to analyze the binaries and see if there are any critical bugs (note - if you're not familiar with fxcop and static analysis, find someone who is before reporting a ton of bugs that won't be fixed).
Beyond that, you're looking at more techniques vs. tools to get the job done.
Testing, either functional or non-functional, without reference to the
internal structure of the component or system.