I was exploring some of the free open source softwares for load + performance testing and came across Apache JMeter (http://jakarta.apache.org/jmeter/). I used it in combination with Badboy (http://www.badboy.com.au/) to capture/record a single instance of manual test scenario requests and then exported the recorded script to JMeter format. Badboy comes as a handy tool because JMeter’s proxy to record server requests isn’t that efficient.
Now once we have the JMeter script for a single use case, we can use it for functional testing and more essentially scale the same scenario for load testing (JMeter has the concept of Thread Group that internally spawns thread corresponding to the number of users specified and synchronizes them to simulate load). In addition, it has got plenty of samplers (request categories for http, SOAP/XML/ftp/JDBC etc.) to send various types of requests and listeners (results/response collection category like aggregate graph, report, table, tree etc.) for reporting purpose.
JMeter also has a concept of distributed testing: http://jakarta.apache.org/jmeter/usermanual/jmeter_distributed_testing_step_by_step.pdf
Some useful links for reference and tutorial: