Programmer perform Unit Testing.
QA perform Integration Testing by testing the most commonly used scenarios.
QA perform System Testing. Build the tests as basic reusable functions. Build scenarios using the basic reusable functions.

The above testings are conducted under normal, peak and extreme loads.

In general, QA do baseline testing from build to build, release to release under the same conditions( such as the same workload profiles, the same performance matrices etc) to see if the results meet the goals, then comparing the results between releases/builds.

Then QA do regression load/stress testing. They use more complicated workload profiles and test settings. For example, if baseline showing the application can handle 800 concurrent users with response time less than 4-5 second, the stress load with more heavy workload may only handle 400~560 concurrent users. But the load duration run from 12hrs to weeks. Under the load, QA perform some functional tests.

If I'm wrong, please correct me. Thank you.