Though, since almost all the testing technologies mentioned so far work pretty well together, you'll probably want to look at each one and mix them together to get the results you want...
A mixture of Cactus, HttpUnit, and JUnitPerf (all of which are based on JUnit) usually does a pretty good job. Cactus for setting up things on the server side you need for your tests; HttpUnit for testing the HTML of the response, and for some functional testing; and JUnitPerf for testing how the app handles under multiple users. [ February 14, 2005: Message edited by: Nathan Pruett ]
Write once, run anywhere, because there's nowhere to hide! - /. A.C.