So far we have been solving the "dynamic server values" problem with correlation. Now let us solve the other side: "dynamic input data." Right now, if you record a login flow, every virtual user logs in as the same user -- say, testuser1 with password Pass123. What happens when you run 100 virtual users? All 100 are testuser1. That is not realistic at all.
Think about it this way. Imagine you are load testing an e-commerce site. In production, 10,000 different users with different accounts, different shopping carts, different addresses, and different payment methods are hitting the system. Your test has 100 threads all using the same account. The server caches the first request, and suddenly your "100 user load test" behaves like a single-user test from the server's perspective. Your results are meaningless.
Parameterization is the technique of feeding different test data to each virtual user or each iteration. Instead of hardcoding testuser1, you provide a data source (usually a CSV file) with 100 different usernames and passwords. Thread 1 gets user1, thread 2 gets user2, and so on. Now your load test actually simulates 100 different users.
Q: What is the difference between correlation and parameterization in performance testing?
A: Correlation deals with dynamic values generated by the server during the test -- things like session IDs, CSRF tokens, and auth tokens that must be extracted from one response and used in the next request. Parameterization deals with test input data that we prepare before the test -- things like usernames, passwords, search terms, and product IDs that we want to vary across virtual users. Correlation flows from server response to client request, while parameterization flows from an external data source (like a CSV file) to client requests. A realistic load test typically uses both: parameterization for unique user credentials and correlation for the session tokens generated after login.
Key Point: Correlation handles what the SERVER generates dynamically. Parameterization handles what YOU provide as unique test data. Real tests need both -- parameterize the login credentials, correlate the session token that comes back.
Key Point: Parameterization feeds different test data to each virtual user so the load test simulates realistic multi-user behavior instead of 100 copies of the same user.