See Wikipedia: Software performance testing for an introduction to the subject.
This page is about discussing different strategies and their pros and cons.
Selenium 2 (with webdriver) + The grinder can be used for both functional and non-functional testing.
One of the drawbacks using this approach for performance testing is the browser dependency. I.e.,
- the application under test must support a browser which the test clients can run. E.g. if the test clients run Firefox on Linux, the application under test must support firefox.
- Running multiple browsers are resource intensive. This adds cost, but may be mitigated by using e.g. grinder in the cloud or Xvfb.
+ Can hire professional testers
+ Short ramp-up time
- Recording strategy: Often necessary to record anew for every tiny change to the user interface
- Recording strategy: Often difficult to add custom data providers or logic
- Often difficult to debug when something is not working as expected.
- The commercial tools require licenses and training
- the GUI clients is resource intensive (JMeter has a non-GUI mode)
+ Resource efficient, really low test clients hardware requirements
+ Not restricted by client-side validation code (can be utilized for security testing)
+ Excellent support for custom logging, tracing and debugging information
+ Can automate statics and report creation
+ Can implement any strategy
- No library or framework available, must write it yourself.